drm/vmwgfx: Add an option to change assumed FB bpp
Offer an option for advanced users who want larger modes at 16bpp. This becomes necessary after the fix: "Work around mode set failure in 2D VMs." Without this patch, there would be no way for existing advanced users to get to a high res mode, and the regression is they will likely get a black screen after a software update on their current VM. Signed-off-by: Sinclair Yeh <syeh@vmware.com> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com> Cc: <stable@vger.kernel.org>
This commit is contained in:
parent
7c20d213dd
commit
04319d89fb
|
@ -233,6 +233,7 @@ static int vmw_force_iommu;
|
|||
static int vmw_restrict_iommu;
|
||||
static int vmw_force_coherent;
|
||||
static int vmw_restrict_dma_mask;
|
||||
static int vmw_assume_16bpp;
|
||||
|
||||
static int vmw_probe(struct pci_dev *, const struct pci_device_id *);
|
||||
static void vmw_master_init(struct vmw_master *);
|
||||
|
@ -249,6 +250,8 @@ MODULE_PARM_DESC(force_coherent, "Force coherent TTM pages");
|
|||
module_param_named(force_coherent, vmw_force_coherent, int, 0600);
|
||||
MODULE_PARM_DESC(restrict_dma_mask, "Restrict DMA mask to 44 bits with IOMMU");
|
||||
module_param_named(restrict_dma_mask, vmw_restrict_dma_mask, int, 0600);
|
||||
MODULE_PARM_DESC(assume_16bpp, "Assume 16-bpp when filtering modes");
|
||||
module_param_named(assume_16bpp, vmw_assume_16bpp, int, 0600);
|
||||
|
||||
|
||||
static void vmw_print_capabilities(uint32_t capabilities)
|
||||
|
@ -660,6 +663,8 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
|
|||
dev_priv->vram_start = pci_resource_start(dev->pdev, 1);
|
||||
dev_priv->mmio_start = pci_resource_start(dev->pdev, 2);
|
||||
|
||||
dev_priv->assume_16bpp = !!vmw_assume_16bpp;
|
||||
|
||||
dev_priv->enable_fb = enable_fbdev;
|
||||
|
||||
vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2);
|
||||
|
|
|
@ -386,6 +386,7 @@ struct vmw_private {
|
|||
spinlock_t hw_lock;
|
||||
spinlock_t cap_lock;
|
||||
bool has_dx;
|
||||
bool assume_16bpp;
|
||||
|
||||
/*
|
||||
* VGA registers.
|
||||
|
|
|
@ -1555,6 +1555,9 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
|
|||
int i;
|
||||
u32 assumed_bpp = 4;
|
||||
|
||||
if (dev_priv->assume_16bpp)
|
||||
assumed_bpp = 2;
|
||||
|
||||
if (dev_priv->active_display_unit == vmw_du_screen_target) {
|
||||
max_width = min(max_width, dev_priv->stdu_max_width);
|
||||
max_height = min(max_height, dev_priv->stdu_max_height);
|
||||
|
|
Loading…
Reference in a new issue