|
|
@@ -1950,6 +1950,14 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
|
|
|
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC)
|
|
|
};
|
|
|
int i;
|
|
|
+ u32 assumed_bpp = 2;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If using screen objects, then assume 32-bpp because that's what the
|
|
|
+ * SVGA device is assuming
|
|
|
+ */
|
|
|
+ if (dev_priv->sou_priv)
|
|
|
+ assumed_bpp = 4;
|
|
|
|
|
|
/* Add preferred mode */
|
|
|
{
|
|
|
@@ -1960,8 +1968,9 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
|
|
|
mode->vdisplay = du->pref_height;
|
|
|
vmw_guess_mode_timing(mode);
|
|
|
|
|
|
- if (vmw_kms_validate_mode_vram(dev_priv, mode->hdisplay * 2,
|
|
|
- mode->vdisplay)) {
|
|
|
+ if (vmw_kms_validate_mode_vram(dev_priv,
|
|
|
+ mode->hdisplay * assumed_bpp,
|
|
|
+ mode->vdisplay)) {
|
|
|
drm_mode_probed_add(connector, mode);
|
|
|
} else {
|
|
|
drm_mode_destroy(dev, mode);
|
|
|
@@ -1983,7 +1992,8 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
|
|
|
bmode->vdisplay > max_height)
|
|
|
continue;
|
|
|
|
|
|
- if (!vmw_kms_validate_mode_vram(dev_priv, bmode->hdisplay * 2,
|
|
|
+ if (!vmw_kms_validate_mode_vram(dev_priv,
|
|
|
+ bmode->hdisplay * assumed_bpp,
|
|
|
bmode->vdisplay))
|
|
|
continue;
|
|
|
|