drm/vmwgfx: Implement screen targets
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / vmwgfx / vmwgfx_drv.c
index 7e2b3c84119bfbccaf40951e302dcdeb7fe0cf15..ab1b70ce19c1a62b0d84ac1cfd76eebe09b2c076 100644 (file)
@@ -693,22 +693,28 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
                                 SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM);
                dev_priv->max_mob_size =
                        vmw_read(dev_priv, SVGA_REG_MOB_MAX_SIZE);
+               dev_priv->stdu_max_width =
+                       vmw_read(dev_priv, SVGA_REG_SCREENTARGET_MAX_WIDTH);
+               dev_priv->stdu_max_height =
+                       vmw_read(dev_priv, SVGA_REG_SCREENTARGET_MAX_HEIGHT);
+
+               vmw_write(dev_priv, SVGA_REG_DEV_CAP,
+                         SVGA3D_DEVCAP_MAX_TEXTURE_WIDTH);
+               dev_priv->texture_max_width = vmw_read(dev_priv,
+                                                      SVGA_REG_DEV_CAP);
+               vmw_write(dev_priv, SVGA_REG_DEV_CAP,
+                         SVGA3D_DEVCAP_MAX_TEXTURE_HEIGHT);
+               dev_priv->texture_max_height = vmw_read(dev_priv,
+                                                       SVGA_REG_DEV_CAP);
        } else
                dev_priv->prim_bb_mem = dev_priv->vram_size;
+       vmw_print_capabilities(dev_priv->capabilities);
 
        ret = vmw_dma_masks(dev_priv);
        if (unlikely(ret != 0))
                goto out_err0;
 
-       /*
-        * Limit back buffer size to VRAM size.  Remove this once
-        * screen targets are implemented.
-        */
-       if (dev_priv->prim_bb_mem > dev_priv->vram_size)
-               dev_priv->prim_bb_mem = dev_priv->vram_size;
-
-       vmw_print_capabilities(dev_priv->capabilities);
-
        if (dev_priv->capabilities & SVGA_CAP_GMR2) {
                DRM_INFO("Max GMR ids is %u\n",
                         (unsigned)dev_priv->max_gmr_ids);