drm/amd/display: reduce stack for dml32_CalculateSwathAndDETConfiguration
Move stack variables to dummy structure. Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
This commit is contained in:
parent
7acc487ab5
commit
bac4b41d91
|
@ -221,6 +221,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
|
||||||
// VBA_DELTA
|
// VBA_DELTA
|
||||||
// Calculate DET size, swath height
|
// Calculate DET size, swath height
|
||||||
dml32_CalculateSwathAndDETConfiguration(
|
dml32_CalculateSwathAndDETConfiguration(
|
||||||
|
&v->dummy_vars.dml32_CalculateSwathAndDETConfiguration,
|
||||||
mode_lib->vba.DETSizeOverride,
|
mode_lib->vba.DETSizeOverride,
|
||||||
mode_lib->vba.UsesMALLForPStateChange,
|
mode_lib->vba.UsesMALLForPStateChange,
|
||||||
mode_lib->vba.ConfigReturnBufferSizeInKByte,
|
mode_lib->vba.ConfigReturnBufferSizeInKByte,
|
||||||
|
@ -1878,6 +1879,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
|
||||||
}
|
}
|
||||||
|
|
||||||
dml32_CalculateSwathAndDETConfiguration(
|
dml32_CalculateSwathAndDETConfiguration(
|
||||||
|
&v->dummy_vars.dml32_CalculateSwathAndDETConfiguration,
|
||||||
mode_lib->vba.DETSizeOverride,
|
mode_lib->vba.DETSizeOverride,
|
||||||
mode_lib->vba.UsesMALLForPStateChange,
|
mode_lib->vba.UsesMALLForPStateChange,
|
||||||
mode_lib->vba.ConfigReturnBufferSizeInKByte,
|
mode_lib->vba.ConfigReturnBufferSizeInKByte,
|
||||||
|
@ -2474,6 +2476,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
|
||||||
}
|
}
|
||||||
|
|
||||||
dml32_CalculateSwathAndDETConfiguration(
|
dml32_CalculateSwathAndDETConfiguration(
|
||||||
|
&v->dummy_vars.dml32_CalculateSwathAndDETConfiguration,
|
||||||
mode_lib->vba.DETSizeOverride,
|
mode_lib->vba.DETSizeOverride,
|
||||||
mode_lib->vba.UsesMALLForPStateChange,
|
mode_lib->vba.UsesMALLForPStateChange,
|
||||||
mode_lib->vba.ConfigReturnBufferSizeInKByte,
|
mode_lib->vba.ConfigReturnBufferSizeInKByte,
|
||||||
|
|
|
@ -391,6 +391,7 @@ void dml32_CalculateBytePerPixelAndBlockSizes(
|
||||||
} // CalculateBytePerPixelAndBlockSizes
|
} // CalculateBytePerPixelAndBlockSizes
|
||||||
|
|
||||||
void dml32_CalculateSwathAndDETConfiguration(
|
void dml32_CalculateSwathAndDETConfiguration(
|
||||||
|
struct dml32_CalculateSwathAndDETConfiguration *st_vars,
|
||||||
unsigned int DETSizeOverride[],
|
unsigned int DETSizeOverride[],
|
||||||
enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
|
enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
|
||||||
unsigned int ConfigReturnBufferSizeInKByte,
|
unsigned int ConfigReturnBufferSizeInKByte,
|
||||||
|
@ -455,18 +456,10 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
bool ViewportSizeSupportPerSurface[],
|
bool ViewportSizeSupportPerSurface[],
|
||||||
bool *ViewportSizeSupport)
|
bool *ViewportSizeSupport)
|
||||||
{
|
{
|
||||||
unsigned int MaximumSwathHeightY[DC__NUM_DPP__MAX];
|
|
||||||
unsigned int MaximumSwathHeightC[DC__NUM_DPP__MAX];
|
|
||||||
unsigned int RoundedUpMaxSwathSizeBytesY[DC__NUM_DPP__MAX];
|
|
||||||
unsigned int RoundedUpMaxSwathSizeBytesC[DC__NUM_DPP__MAX];
|
|
||||||
unsigned int RoundedUpSwathSizeBytesY;
|
|
||||||
unsigned int RoundedUpSwathSizeBytesC;
|
|
||||||
double SwathWidthdoubleDPP[DC__NUM_DPP__MAX];
|
|
||||||
double SwathWidthdoubleDPPChroma[DC__NUM_DPP__MAX];
|
|
||||||
unsigned int k;
|
unsigned int k;
|
||||||
unsigned int TotalActiveDPP = 0;
|
|
||||||
bool NoChromaSurfaces = true;
|
st_vars->TotalActiveDPP = 0;
|
||||||
unsigned int DETBufferSizeInKByteForSwathCalculation;
|
st_vars->NoChromaSurfaces = true;
|
||||||
|
|
||||||
#ifdef __DML_VBA_DEBUG__
|
#ifdef __DML_VBA_DEBUG__
|
||||||
dml_print("DML::%s: ForceSingleDPP = %d\n", __func__, ForceSingleDPP);
|
dml_print("DML::%s: ForceSingleDPP = %d\n", __func__, ForceSingleDPP);
|
||||||
|
@ -501,43 +494,43 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
DPPPerSurface,
|
DPPPerSurface,
|
||||||
|
|
||||||
/* Output */
|
/* Output */
|
||||||
SwathWidthdoubleDPP,
|
st_vars->SwathWidthdoubleDPP,
|
||||||
SwathWidthdoubleDPPChroma,
|
st_vars->SwathWidthdoubleDPPChroma,
|
||||||
SwathWidth,
|
SwathWidth,
|
||||||
SwathWidthChroma,
|
SwathWidthChroma,
|
||||||
MaximumSwathHeightY,
|
st_vars->MaximumSwathHeightY,
|
||||||
MaximumSwathHeightC,
|
st_vars->MaximumSwathHeightC,
|
||||||
swath_width_luma_ub,
|
swath_width_luma_ub,
|
||||||
swath_width_chroma_ub);
|
swath_width_chroma_ub);
|
||||||
|
|
||||||
for (k = 0; k < NumberOfActiveSurfaces; ++k) {
|
for (k = 0; k < NumberOfActiveSurfaces; ++k) {
|
||||||
RoundedUpMaxSwathSizeBytesY[k] = swath_width_luma_ub[k] * BytePerPixDETY[k] * MaximumSwathHeightY[k];
|
st_vars->RoundedUpMaxSwathSizeBytesY[k] = swath_width_luma_ub[k] * BytePerPixDETY[k] * st_vars->MaximumSwathHeightY[k];
|
||||||
RoundedUpMaxSwathSizeBytesC[k] = swath_width_chroma_ub[k] * BytePerPixDETC[k] * MaximumSwathHeightC[k];
|
st_vars->RoundedUpMaxSwathSizeBytesC[k] = swath_width_chroma_ub[k] * BytePerPixDETC[k] * st_vars->MaximumSwathHeightC[k];
|
||||||
#ifdef __DML_VBA_DEBUG__
|
#ifdef __DML_VBA_DEBUG__
|
||||||
dml_print("DML::%s: k=%0d DPPPerSurface = %d\n", __func__, k, DPPPerSurface[k]);
|
dml_print("DML::%s: k=%0d DPPPerSurface = %d\n", __func__, k, DPPPerSurface[k]);
|
||||||
dml_print("DML::%s: k=%0d swath_width_luma_ub = %d\n", __func__, k, swath_width_luma_ub[k]);
|
dml_print("DML::%s: k=%0d swath_width_luma_ub = %d\n", __func__, k, swath_width_luma_ub[k]);
|
||||||
dml_print("DML::%s: k=%0d BytePerPixDETY = %f\n", __func__, k, BytePerPixDETY[k]);
|
dml_print("DML::%s: k=%0d BytePerPixDETY = %f\n", __func__, k, BytePerPixDETY[k]);
|
||||||
dml_print("DML::%s: k=%0d MaximumSwathHeightY = %d\n", __func__, k, MaximumSwathHeightY[k]);
|
dml_print("DML::%s: k=%0d MaximumSwathHeightY = %d\n", __func__, k, st_vars->MaximumSwathHeightY[k]);
|
||||||
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesY = %d\n", __func__, k,
|
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesY = %d\n", __func__, k,
|
||||||
RoundedUpMaxSwathSizeBytesY[k]);
|
st_vars->RoundedUpMaxSwathSizeBytesY[k]);
|
||||||
dml_print("DML::%s: k=%0d swath_width_chroma_ub = %d\n", __func__, k, swath_width_chroma_ub[k]);
|
dml_print("DML::%s: k=%0d swath_width_chroma_ub = %d\n", __func__, k, swath_width_chroma_ub[k]);
|
||||||
dml_print("DML::%s: k=%0d BytePerPixDETC = %f\n", __func__, k, BytePerPixDETC[k]);
|
dml_print("DML::%s: k=%0d BytePerPixDETC = %f\n", __func__, k, BytePerPixDETC[k]);
|
||||||
dml_print("DML::%s: k=%0d MaximumSwathHeightC = %d\n", __func__, k, MaximumSwathHeightC[k]);
|
dml_print("DML::%s: k=%0d MaximumSwathHeightC = %d\n", __func__, k, st_vars->MaximumSwathHeightC[k]);
|
||||||
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesC = %d\n", __func__, k,
|
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesC = %d\n", __func__, k,
|
||||||
RoundedUpMaxSwathSizeBytesC[k]);
|
st_vars->RoundedUpMaxSwathSizeBytesC[k]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (SourcePixelFormat[k] == dm_420_10) {
|
if (SourcePixelFormat[k] == dm_420_10) {
|
||||||
RoundedUpMaxSwathSizeBytesY[k] = dml_ceil((unsigned int) RoundedUpMaxSwathSizeBytesY[k], 256);
|
st_vars->RoundedUpMaxSwathSizeBytesY[k] = dml_ceil((unsigned int) st_vars->RoundedUpMaxSwathSizeBytesY[k], 256);
|
||||||
RoundedUpMaxSwathSizeBytesC[k] = dml_ceil((unsigned int) RoundedUpMaxSwathSizeBytesC[k], 256);
|
st_vars->RoundedUpMaxSwathSizeBytesC[k] = dml_ceil((unsigned int) st_vars->RoundedUpMaxSwathSizeBytesC[k], 256);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (k = 0; k < NumberOfActiveSurfaces; ++k) {
|
for (k = 0; k < NumberOfActiveSurfaces; ++k) {
|
||||||
TotalActiveDPP = TotalActiveDPP + (ForceSingleDPP ? 1 : DPPPerSurface[k]);
|
st_vars->TotalActiveDPP = st_vars->TotalActiveDPP + (ForceSingleDPP ? 1 : DPPPerSurface[k]);
|
||||||
if (SourcePixelFormat[k] == dm_420_8 || SourcePixelFormat[k] == dm_420_10 ||
|
if (SourcePixelFormat[k] == dm_420_8 || SourcePixelFormat[k] == dm_420_10 ||
|
||||||
SourcePixelFormat[k] == dm_420_12 || SourcePixelFormat[k] == dm_rgbe_alpha) {
|
SourcePixelFormat[k] == dm_420_12 || SourcePixelFormat[k] == dm_rgbe_alpha) {
|
||||||
NoChromaSurfaces = false;
|
st_vars->NoChromaSurfaces = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,10 +540,10 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
// if unbounded req is enabled, program reserved space such that the ROB will not hold more than 8 swaths worth of data
|
// if unbounded req is enabled, program reserved space such that the ROB will not hold more than 8 swaths worth of data
|
||||||
// - assume worst-case compression rate of 4. [ROB size - 8 * swath_size / max_compression ratio]
|
// - assume worst-case compression rate of 4. [ROB size - 8 * swath_size / max_compression ratio]
|
||||||
// - assume for "narrow" vp case in which the ROB can fit 8 swaths, the DET should be big enough to do full size req
|
// - assume for "narrow" vp case in which the ROB can fit 8 swaths, the DET should be big enough to do full size req
|
||||||
*CompBufReservedSpaceNeedAdjustment = ((int) ROBSizeKBytes - (int) *CompBufReservedSpaceKBytes) > (int) (RoundedUpMaxSwathSizeBytesY[0]/512);
|
*CompBufReservedSpaceNeedAdjustment = ((int) ROBSizeKBytes - (int) *CompBufReservedSpaceKBytes) > (int) (st_vars->RoundedUpMaxSwathSizeBytesY[0]/512);
|
||||||
|
|
||||||
if (*CompBufReservedSpaceNeedAdjustment == 1) {
|
if (*CompBufReservedSpaceNeedAdjustment == 1) {
|
||||||
*CompBufReservedSpaceKBytes = ROBSizeKBytes - RoundedUpMaxSwathSizeBytesY[0]/512;
|
*CompBufReservedSpaceKBytes = ROBSizeKBytes - st_vars->RoundedUpMaxSwathSizeBytesY[0]/512;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __DML_VBA_DEBUG__
|
#ifdef __DML_VBA_DEBUG__
|
||||||
|
@ -558,7 +551,7 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
dml_print("DML::%s: CompBufReservedSpaceNeedAdjustment = %d\n", __func__, *CompBufReservedSpaceNeedAdjustment);
|
dml_print("DML::%s: CompBufReservedSpaceNeedAdjustment = %d\n", __func__, *CompBufReservedSpaceNeedAdjustment);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*UnboundedRequestEnabled = dml32_UnboundedRequest(UseUnboundedRequestingFinal, TotalActiveDPP, NoChromaSurfaces, Output[0], SurfaceTiling[0], *CompBufReservedSpaceNeedAdjustment, DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment);
|
*UnboundedRequestEnabled = dml32_UnboundedRequest(UseUnboundedRequestingFinal, st_vars->TotalActiveDPP, st_vars->NoChromaSurfaces, Output[0], SurfaceTiling[0], *CompBufReservedSpaceNeedAdjustment, DisableUnboundRequestIfCompBufReservedSpaceNeedAdjustment);
|
||||||
|
|
||||||
dml32_CalculateDETBufferSize(DETSizeOverride,
|
dml32_CalculateDETBufferSize(DETSizeOverride,
|
||||||
UseMALLForPStateChange,
|
UseMALLForPStateChange,
|
||||||
|
@ -573,8 +566,8 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
SourcePixelFormat,
|
SourcePixelFormat,
|
||||||
ReadBandwidthLuma,
|
ReadBandwidthLuma,
|
||||||
ReadBandwidthChroma,
|
ReadBandwidthChroma,
|
||||||
RoundedUpMaxSwathSizeBytesY,
|
st_vars->RoundedUpMaxSwathSizeBytesY,
|
||||||
RoundedUpMaxSwathSizeBytesC,
|
st_vars->RoundedUpMaxSwathSizeBytesC,
|
||||||
DPPPerSurface,
|
DPPPerSurface,
|
||||||
|
|
||||||
/* Output */
|
/* Output */
|
||||||
|
@ -582,7 +575,7 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
CompressedBufferSizeInkByte);
|
CompressedBufferSizeInkByte);
|
||||||
|
|
||||||
#ifdef __DML_VBA_DEBUG__
|
#ifdef __DML_VBA_DEBUG__
|
||||||
dml_print("DML::%s: TotalActiveDPP = %d\n", __func__, TotalActiveDPP);
|
dml_print("DML::%s: TotalActiveDPP = %d\n", __func__, st_vars->TotalActiveDPP);
|
||||||
dml_print("DML::%s: nomDETInKByte = %d\n", __func__, nomDETInKByte);
|
dml_print("DML::%s: nomDETInKByte = %d\n", __func__, nomDETInKByte);
|
||||||
dml_print("DML::%s: ConfigReturnBufferSizeInKByte = %d\n", __func__, ConfigReturnBufferSizeInKByte);
|
dml_print("DML::%s: ConfigReturnBufferSizeInKByte = %d\n", __func__, ConfigReturnBufferSizeInKByte);
|
||||||
dml_print("DML::%s: UseUnboundedRequestingFinal = %d\n", __func__, UseUnboundedRequestingFinal);
|
dml_print("DML::%s: UseUnboundedRequestingFinal = %d\n", __func__, UseUnboundedRequestingFinal);
|
||||||
|
@ -593,42 +586,42 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
*ViewportSizeSupport = true;
|
*ViewportSizeSupport = true;
|
||||||
for (k = 0; k < NumberOfActiveSurfaces; ++k) {
|
for (k = 0; k < NumberOfActiveSurfaces; ++k) {
|
||||||
|
|
||||||
DETBufferSizeInKByteForSwathCalculation = (UseMALLForPStateChange[k] ==
|
st_vars->DETBufferSizeInKByteForSwathCalculation = (UseMALLForPStateChange[k] ==
|
||||||
dm_use_mall_pstate_change_phantom_pipe ? 1024 : DETBufferSizeInKByte[k]);
|
dm_use_mall_pstate_change_phantom_pipe ? 1024 : DETBufferSizeInKByte[k]);
|
||||||
#ifdef __DML_VBA_DEBUG__
|
#ifdef __DML_VBA_DEBUG__
|
||||||
dml_print("DML::%s: k=%0d DETBufferSizeInKByteForSwathCalculation = %d\n", __func__, k,
|
dml_print("DML::%s: k=%0d DETBufferSizeInKByteForSwathCalculation = %d\n", __func__, k,
|
||||||
DETBufferSizeInKByteForSwathCalculation);
|
st_vars->DETBufferSizeInKByteForSwathCalculation);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (RoundedUpMaxSwathSizeBytesY[k] + RoundedUpMaxSwathSizeBytesC[k] <=
|
if (st_vars->RoundedUpMaxSwathSizeBytesY[k] + st_vars->RoundedUpMaxSwathSizeBytesC[k] <=
|
||||||
DETBufferSizeInKByteForSwathCalculation * 1024 / 2) {
|
st_vars->DETBufferSizeInKByteForSwathCalculation * 1024 / 2) {
|
||||||
SwathHeightY[k] = MaximumSwathHeightY[k];
|
SwathHeightY[k] = st_vars->MaximumSwathHeightY[k];
|
||||||
SwathHeightC[k] = MaximumSwathHeightC[k];
|
SwathHeightC[k] = st_vars->MaximumSwathHeightC[k];
|
||||||
RoundedUpSwathSizeBytesY = RoundedUpMaxSwathSizeBytesY[k];
|
st_vars->RoundedUpSwathSizeBytesY = st_vars->RoundedUpMaxSwathSizeBytesY[k];
|
||||||
RoundedUpSwathSizeBytesC = RoundedUpMaxSwathSizeBytesC[k];
|
st_vars->RoundedUpSwathSizeBytesC = st_vars->RoundedUpMaxSwathSizeBytesC[k];
|
||||||
} else if (RoundedUpMaxSwathSizeBytesY[k] >= 1.5 * RoundedUpMaxSwathSizeBytesC[k] &&
|
} else if (st_vars->RoundedUpMaxSwathSizeBytesY[k] >= 1.5 * st_vars->RoundedUpMaxSwathSizeBytesC[k] &&
|
||||||
RoundedUpMaxSwathSizeBytesY[k] / 2 + RoundedUpMaxSwathSizeBytesC[k] <=
|
st_vars->RoundedUpMaxSwathSizeBytesY[k] / 2 + st_vars->RoundedUpMaxSwathSizeBytesC[k] <=
|
||||||
DETBufferSizeInKByteForSwathCalculation * 1024 / 2) {
|
st_vars->DETBufferSizeInKByteForSwathCalculation * 1024 / 2) {
|
||||||
SwathHeightY[k] = MaximumSwathHeightY[k] / 2;
|
SwathHeightY[k] = st_vars->MaximumSwathHeightY[k] / 2;
|
||||||
SwathHeightC[k] = MaximumSwathHeightC[k];
|
SwathHeightC[k] = st_vars->MaximumSwathHeightC[k];
|
||||||
RoundedUpSwathSizeBytesY = RoundedUpMaxSwathSizeBytesY[k] / 2;
|
st_vars->RoundedUpSwathSizeBytesY = st_vars->RoundedUpMaxSwathSizeBytesY[k] / 2;
|
||||||
RoundedUpSwathSizeBytesC = RoundedUpMaxSwathSizeBytesC[k];
|
st_vars->RoundedUpSwathSizeBytesC = st_vars->RoundedUpMaxSwathSizeBytesC[k];
|
||||||
} else if (RoundedUpMaxSwathSizeBytesY[k] < 1.5 * RoundedUpMaxSwathSizeBytesC[k] &&
|
} else if (st_vars->RoundedUpMaxSwathSizeBytesY[k] < 1.5 * st_vars->RoundedUpMaxSwathSizeBytesC[k] &&
|
||||||
RoundedUpMaxSwathSizeBytesY[k] + RoundedUpMaxSwathSizeBytesC[k] / 2 <=
|
st_vars->RoundedUpMaxSwathSizeBytesY[k] + st_vars->RoundedUpMaxSwathSizeBytesC[k] / 2 <=
|
||||||
DETBufferSizeInKByteForSwathCalculation * 1024 / 2) {
|
st_vars->DETBufferSizeInKByteForSwathCalculation * 1024 / 2) {
|
||||||
SwathHeightY[k] = MaximumSwathHeightY[k];
|
SwathHeightY[k] = st_vars->MaximumSwathHeightY[k];
|
||||||
SwathHeightC[k] = MaximumSwathHeightC[k] / 2;
|
SwathHeightC[k] = st_vars->MaximumSwathHeightC[k] / 2;
|
||||||
RoundedUpSwathSizeBytesY = RoundedUpMaxSwathSizeBytesY[k];
|
st_vars->RoundedUpSwathSizeBytesY = st_vars->RoundedUpMaxSwathSizeBytesY[k];
|
||||||
RoundedUpSwathSizeBytesC = RoundedUpMaxSwathSizeBytesC[k] / 2;
|
st_vars->RoundedUpSwathSizeBytesC = st_vars->RoundedUpMaxSwathSizeBytesC[k] / 2;
|
||||||
} else {
|
} else {
|
||||||
SwathHeightY[k] = MaximumSwathHeightY[k] / 2;
|
SwathHeightY[k] = st_vars->MaximumSwathHeightY[k] / 2;
|
||||||
SwathHeightC[k] = MaximumSwathHeightC[k] / 2;
|
SwathHeightC[k] = st_vars->MaximumSwathHeightC[k] / 2;
|
||||||
RoundedUpSwathSizeBytesY = RoundedUpMaxSwathSizeBytesY[k] / 2;
|
st_vars->RoundedUpSwathSizeBytesY = st_vars->RoundedUpMaxSwathSizeBytesY[k] / 2;
|
||||||
RoundedUpSwathSizeBytesC = RoundedUpMaxSwathSizeBytesC[k] / 2;
|
st_vars->RoundedUpSwathSizeBytesC = st_vars->RoundedUpMaxSwathSizeBytesC[k] / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((RoundedUpMaxSwathSizeBytesY[k] / 2 + RoundedUpMaxSwathSizeBytesC[k] / 2 >
|
if ((st_vars->RoundedUpMaxSwathSizeBytesY[k] / 2 + st_vars->RoundedUpMaxSwathSizeBytesC[k] / 2 >
|
||||||
DETBufferSizeInKByteForSwathCalculation * 1024 / 2)
|
st_vars->DETBufferSizeInKByteForSwathCalculation * 1024 / 2)
|
||||||
|| SwathWidth[k] > MaximumSwathWidthLuma[k] || (SwathHeightC[k] > 0 &&
|
|| SwathWidth[k] > MaximumSwathWidthLuma[k] || (SwathHeightC[k] > 0 &&
|
||||||
SwathWidthChroma[k] > MaximumSwathWidthChroma[k])) {
|
SwathWidthChroma[k] > MaximumSwathWidthChroma[k])) {
|
||||||
*ViewportSizeSupport = false;
|
*ViewportSizeSupport = false;
|
||||||
|
@ -643,7 +636,7 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
#endif
|
#endif
|
||||||
DETBufferSizeY[k] = DETBufferSizeInKByte[k] * 1024;
|
DETBufferSizeY[k] = DETBufferSizeInKByte[k] * 1024;
|
||||||
DETBufferSizeC[k] = 0;
|
DETBufferSizeC[k] = 0;
|
||||||
} else if (RoundedUpSwathSizeBytesY <= 1.5 * RoundedUpSwathSizeBytesC) {
|
} else if (st_vars->RoundedUpSwathSizeBytesY <= 1.5 * st_vars->RoundedUpSwathSizeBytesC) {
|
||||||
#ifdef __DML_VBA_DEBUG__
|
#ifdef __DML_VBA_DEBUG__
|
||||||
dml_print("DML::%s: k=%0d Half DET for plane0, half for plane1\n", __func__, k);
|
dml_print("DML::%s: k=%0d Half DET for plane0, half for plane1\n", __func__, k);
|
||||||
#endif
|
#endif
|
||||||
|
@ -661,11 +654,11 @@ void dml32_CalculateSwathAndDETConfiguration(
|
||||||
dml_print("DML::%s: k=%0d SwathHeightY = %d\n", __func__, k, SwathHeightY[k]);
|
dml_print("DML::%s: k=%0d SwathHeightY = %d\n", __func__, k, SwathHeightY[k]);
|
||||||
dml_print("DML::%s: k=%0d SwathHeightC = %d\n", __func__, k, SwathHeightC[k]);
|
dml_print("DML::%s: k=%0d SwathHeightC = %d\n", __func__, k, SwathHeightC[k]);
|
||||||
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesY = %d\n", __func__,
|
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesY = %d\n", __func__,
|
||||||
k, RoundedUpMaxSwathSizeBytesY[k]);
|
k, st_vars->RoundedUpMaxSwathSizeBytesY[k]);
|
||||||
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesC = %d\n", __func__,
|
dml_print("DML::%s: k=%0d RoundedUpMaxSwathSizeBytesC = %d\n", __func__,
|
||||||
k, RoundedUpMaxSwathSizeBytesC[k]);
|
k, st_vars->RoundedUpMaxSwathSizeBytesC[k]);
|
||||||
dml_print("DML::%s: k=%0d RoundedUpSwathSizeBytesY = %d\n", __func__, k, RoundedUpSwathSizeBytesY);
|
dml_print("DML::%s: k=%0d RoundedUpSwathSizeBytesY = %d\n", __func__, k, st_vars->RoundedUpSwathSizeBytesY);
|
||||||
dml_print("DML::%s: k=%0d RoundedUpSwathSizeBytesC = %d\n", __func__, k, RoundedUpSwathSizeBytesC);
|
dml_print("DML::%s: k=%0d RoundedUpSwathSizeBytesC = %d\n", __func__, k, st_vars->RoundedUpSwathSizeBytesC);
|
||||||
dml_print("DML::%s: k=%0d DETBufferSizeInKByte = %d\n", __func__, k, DETBufferSizeInKByte[k]);
|
dml_print("DML::%s: k=%0d DETBufferSizeInKByte = %d\n", __func__, k, DETBufferSizeInKByte[k]);
|
||||||
dml_print("DML::%s: k=%0d DETBufferSizeY = %d\n", __func__, k, DETBufferSizeY[k]);
|
dml_print("DML::%s: k=%0d DETBufferSizeY = %d\n", __func__, k, DETBufferSizeY[k]);
|
||||||
dml_print("DML::%s: k=%0d DETBufferSizeC = %d\n", __func__, k, DETBufferSizeC[k]);
|
dml_print("DML::%s: k=%0d DETBufferSizeC = %d\n", __func__, k, DETBufferSizeC[k]);
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "os_types.h"
|
#include "os_types.h"
|
||||||
#include "../dc_features.h"
|
#include "../dc_features.h"
|
||||||
#include "../display_mode_structs.h"
|
#include "../display_mode_structs.h"
|
||||||
|
#include "dml/display_mode_vba.h"
|
||||||
|
|
||||||
unsigned int dml32_dscceComputeDelay(
|
unsigned int dml32_dscceComputeDelay(
|
||||||
unsigned int bpc,
|
unsigned int bpc,
|
||||||
|
@ -81,6 +82,7 @@ void dml32_CalculateSinglePipeDPPCLKAndSCLThroughput(
|
||||||
double *DPPCLKUsingSingleDPP);
|
double *DPPCLKUsingSingleDPP);
|
||||||
|
|
||||||
void dml32_CalculateSwathAndDETConfiguration(
|
void dml32_CalculateSwathAndDETConfiguration(
|
||||||
|
struct dml32_CalculateSwathAndDETConfiguration *st_vars,
|
||||||
unsigned int DETSizeOverride[],
|
unsigned int DETSizeOverride[],
|
||||||
enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
|
enum dm_use_mall_for_pstate_change_mode UseMALLForPStateChange[],
|
||||||
unsigned int ConfigReturnBufferSizeInKByte,
|
unsigned int ConfigReturnBufferSizeInKByte,
|
||||||
|
|
|
@ -182,6 +182,20 @@ void Calculate256BBlockSizes(
|
||||||
unsigned int *BlockWidth256BytesY,
|
unsigned int *BlockWidth256BytesY,
|
||||||
unsigned int *BlockWidth256BytesC);
|
unsigned int *BlockWidth256BytesC);
|
||||||
|
|
||||||
|
struct dml32_CalculateSwathAndDETConfiguration {
|
||||||
|
unsigned int MaximumSwathHeightY[DC__NUM_DPP__MAX];
|
||||||
|
unsigned int MaximumSwathHeightC[DC__NUM_DPP__MAX];
|
||||||
|
unsigned int RoundedUpMaxSwathSizeBytesY[DC__NUM_DPP__MAX];
|
||||||
|
unsigned int RoundedUpMaxSwathSizeBytesC[DC__NUM_DPP__MAX];
|
||||||
|
unsigned int RoundedUpSwathSizeBytesY;
|
||||||
|
unsigned int RoundedUpSwathSizeBytesC;
|
||||||
|
double SwathWidthdoubleDPP[DC__NUM_DPP__MAX];
|
||||||
|
double SwathWidthdoubleDPPChroma[DC__NUM_DPP__MAX];
|
||||||
|
unsigned int TotalActiveDPP;
|
||||||
|
bool NoChromaSurfaces;
|
||||||
|
unsigned int DETBufferSizeInKByteForSwathCalculation;
|
||||||
|
};
|
||||||
|
|
||||||
struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation {
|
struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation {
|
||||||
unsigned int dummy_integer_array[2][DC__NUM_DPP__MAX];
|
unsigned int dummy_integer_array[2][DC__NUM_DPP__MAX];
|
||||||
double dummy_single_array[2][DC__NUM_DPP__MAX];
|
double dummy_single_array[2][DC__NUM_DPP__MAX];
|
||||||
|
@ -253,6 +267,7 @@ struct dummy_vars {
|
||||||
struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
|
struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation
|
||||||
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation;
|
DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation;
|
||||||
struct dml32_ModeSupportAndSystemConfigurationFull dml32_ModeSupportAndSystemConfigurationFull;
|
struct dml32_ModeSupportAndSystemConfigurationFull dml32_ModeSupportAndSystemConfigurationFull;
|
||||||
|
struct dml32_CalculateSwathAndDETConfiguration dml32_CalculateSwathAndDETConfiguration;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vba_vars_st {
|
struct vba_vars_st {
|
||||||
|
|
Loading…
Reference in New Issue