intel_extreme: set the "image size" register on generation 4 and below

This is undocumented, but required for GMA 945 and probably earlier
devices as well. The register is reserved in later generation 4 devices,
and not mentionned at all in later versions.

Fixes #15655.
This commit is contained in:
Adrien Destugues
2020-01-28 18:56:59 +01:00
parent 1d622b8d66
commit 88d73c6cf8
@@ -235,14 +235,14 @@ Pipe::ConfigureTimings(display_mode* target, bool hardware)
// Set the plane size as well while we're at it (this is independant, we // Set the plane size as well while we're at it (this is independant, we
// could have a larger plane and scroll through it). // could have a larger plane and scroll through it).
if (gInfo->shared_info->device_type.Generation() == 5 if (gInfo->shared_info->device_type.Generation() <= 4) {
|| gInfo->shared_info->device_type.Generation() > 6) { // This is "reserved" on G35 and GMA965, but needed on 945 (for which
// FIXME check which generations actually need this. // there is no public documentation), and I assume earlier devices as
// This is "reserved" on G45 and below. // well. Note that the height and width are swapped when compared to
// This register does not exist on generation 6. // the other registers.
write32(INTEL_DISPLAY_A_IMAGE_SIZE + fPipeOffset, write32(INTEL_DISPLAY_A_IMAGE_SIZE + fPipeOffset,
((uint32)(target->virtual_width - 1) << 16) ((uint32)(target->virtual_height - 1) << 16)
| ((uint32)target->virtual_height - 1)); | ((uint32)target->virtual_width - 1));
} }
if (fHasTranscoder && hardware) { if (fHasTranscoder && hardware) {