drm/amd/display: Add extra mblk for DCC
[Why] DCC meta was found to be detached from usable pixel data. Due to this DCC meta and the end of the fetched part of the frame will be on not be on the same mblk. Furthermore if the meta is not aligned to the mblk size, then we require an extra mblk in MALL to account for this. [How] Always add an additional mblk when DCC is enabled for detachment and misalignment. Tested-by: Daniel Wheeler <Daniel.Wheeler@amd.com> Reviewed-by: Dillon Varone <Dillon.Varone@amd.com> Reviewed-by: Jun Lei <Jun.Lei@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Saaem Rizvi <SyedSaaem.Rizvi@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
689008e11f
commit
b5c397c837
@ -1833,15 +1833,15 @@ void dml32_CalculateSurfaceSizeInMall(
|
||||
}
|
||||
if (DCCEnable[k] == true) {
|
||||
SurfaceSizeInMALL[k] = SurfaceSizeInMALL[k] +
|
||||
dml_min(dml_ceil(DCCMetaPitchY[k], 8 * Read256BytesBlockWidthY[k]),
|
||||
(dml_min(dml_ceil(DCCMetaPitchY[k], 8 * Read256BytesBlockWidthY[k]),
|
||||
dml_floor(ViewportXStartY[k] + ViewportWidthY[k] + 8 *
|
||||
Read256BytesBlockWidthY[k] - 1, 8 * Read256BytesBlockWidthY[k])
|
||||
- dml_floor(ViewportXStartY[k], 8 * Read256BytesBlockWidthY[k]))
|
||||
* dml_min(dml_ceil(SurfaceHeightY[k], 8 *
|
||||
Read256BytesBlockHeightY[k]), dml_floor(ViewportYStartY[k] +
|
||||
ViewportHeightY[k] + 8 * Read256BytesBlockHeightY[k] - 1, 8 *
|
||||
Read256BytesBlockHeightY[k]) - dml_floor(ViewportYStartY[k], 8
|
||||
* Read256BytesBlockHeightY[k])) * BytesPerPixelY[k] / 256;
|
||||
Read256BytesBlockHeightY[k]) - dml_floor(ViewportYStartY[k], 8 *
|
||||
Read256BytesBlockHeightY[k])) * BytesPerPixelY[k] / 256) + (64 * 1024);
|
||||
if (Read256BytesBlockWidthC[k] > 0) {
|
||||
SurfaceSizeInMALL[k] = SurfaceSizeInMALL[k] +
|
||||
dml_min(dml_ceil(DCCMetaPitchC[k], 8 *
|
||||
@ -1877,12 +1877,12 @@ void dml32_CalculateSurfaceSizeInMall(
|
||||
}
|
||||
if (DCCEnable[k] == true) {
|
||||
SurfaceSizeInMALL[k] = SurfaceSizeInMALL[k] +
|
||||
dml_ceil(dml_min(DCCMetaPitchY[k], ViewportWidthY[k] + 8 *
|
||||
(dml_ceil(dml_min(DCCMetaPitchY[k], ViewportWidthY[k] + 8 *
|
||||
Read256BytesBlockWidthY[k] - 1), 8 *
|
||||
Read256BytesBlockWidthY[k]) *
|
||||
dml_ceil(dml_min(SurfaceHeightY[k], ViewportHeightY[k] + 8 *
|
||||
Read256BytesBlockHeightY[k] - 1), 8 *
|
||||
Read256BytesBlockHeightY[k]) * BytesPerPixelY[k] / 256;
|
||||
Read256BytesBlockHeightY[k]) * BytesPerPixelY[k] / 256) + (64 * 1024);
|
||||
|
||||
if (Read256BytesBlockWidthC[k] > 0) {
|
||||
SurfaceSizeInMALL[k] = SurfaceSizeInMALL[k] +
|
||||
|
Loading…
x
Reference in New Issue
Block a user