@@ -165,7 +165,11 @@ void ImageHw<GfxFamily>::setAuxParamsForMultisamples(RENDER_SURFACE_STATE *surfa
165165 if (getMcsAllocation ()) {
166166 auto mcsGmm = getMcsAllocation ()->gmm ;
167167
168- if (mcsGmm->unifiedAuxTranslationCapable ()) { // Ignore MCS allocation when Color Control Surface is available
168+ if (mcsGmm->unifiedAuxTranslationCapable () && mcsGmm->hasMultisampleControlSurface ()) {
169+ setAuxParamsForMCSCCS (surfaceState, mcsGmm);
170+ setClearColorParams (surfaceState, mcsGmm);
171+ setUnifiedAuxBaseAddress (surfaceState, mcsGmm);
172+ } else if (mcsGmm->unifiedAuxTranslationCapable ()) {
169173 setAuxParamsForCCS (surfaceState, mcsGmm);
170174 } else {
171175 surfaceState->setAuxiliarySurfaceMode ((typename RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE)1 );
@@ -183,10 +187,14 @@ void ImageHw<GfxFamily>::setAuxParamsForCCS(RENDER_SURFACE_STATE *surfaceState,
183187 // Its expected to not program pitch/qpitch/baseAddress for Aux surface in CCS scenarios
184188 surfaceState->setAuxiliarySurfaceMode (AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_CCS_E);
185189 setClearColorParams (surfaceState, gmm);
190+ setUnifiedAuxBaseAddress (surfaceState, gmm);
186191}
187192
188193template <typename GfxFamily>
189- void ImageHw<GfxFamily>::setClearColorParams(RENDER_SURFACE_STATE *surfaceState, const Gmm *gmm) {
194+ void ImageHw<GfxFamily>::setUnifiedAuxBaseAddress(RENDER_SURFACE_STATE *surfaceState, const Gmm *gmm) {
195+ uint64_t baseAddress = surfaceState->getSurfaceBaseAddress () +
196+ gmm->gmmResourceInfo ->getUnifiedAuxSurfaceOffset (GMM_UNIFIED_AUX_TYPE::GMM_AUX_SURF);
197+ surfaceState->setAuxiliarySurfaceBaseAddress (baseAddress);
190198}
191199
192200template <typename GfxFamily>
0 commit comments