mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Dont change multisampled surface state storage for R32_FLOAT_X8X24 type
Change-Id: I5e386057e4368e0d80bed496f2ddc19b5ae271a5
This commit is contained in:

committed by
sys_ocldev

parent
9fa22e7fd2
commit
f40dc29ea1
@ -178,6 +178,8 @@ void ImageHw<GfxFamily>::setImageArg(void *memory, bool setAsMediaBlockImage, ui
|
||||
|
||||
template <typename GfxFamily>
|
||||
void ImageHw<GfxFamily>::setAuxParamsForMultisamples(RENDER_SURFACE_STATE *surfaceState) {
|
||||
using SURFACE_FORMAT = typename RENDER_SURFACE_STATE::SURFACE_FORMAT;
|
||||
|
||||
if (getMcsAllocation()) {
|
||||
auto mcsGmm = getMcsAllocation()->gmm;
|
||||
|
||||
@ -189,7 +191,7 @@ void ImageHw<GfxFamily>::setAuxParamsForMultisamples(RENDER_SURFACE_STATE *surfa
|
||||
surfaceState->setAuxiliarySurfaceQpitch(mcsSurfaceInfo.qPitch);
|
||||
surfaceState->setAuxiliarySurfaceBaseAddress(mcsAllocation->getGpuAddress());
|
||||
}
|
||||
} else if (isDepthFormat(imageFormat)) {
|
||||
} else if (isDepthFormat(imageFormat) && surfaceState->getSurfaceFormat() != SURFACE_FORMAT::SURFACE_FORMAT_R32_FLOAT_X8X24_TYPELESS) {
|
||||
surfaceState->setMultisampledSurfaceStorageFormat(RENDER_SURFACE_STATE::MULTISAMPLED_SURFACE_STORAGE_FORMAT::MULTISAMPLED_SURFACE_STORAGE_FORMAT_DEPTH_STENCIL);
|
||||
}
|
||||
}
|
||||
|
@ -483,6 +483,31 @@ HWTEST_F(ImageSetArgTest, givenDepthFormatWhenSetArgIsCalledThenProgramAuxFields
|
||||
delete image;
|
||||
}
|
||||
|
||||
HWTEST_F(ImageSetArgTest, givenMultisampledR32Floatx8x24DepthStencilFormatWhenSetArgIsCalledThenSetMssSurfaceStateStorageParam) {
|
||||
typedef typename FamilyType::RENDER_SURFACE_STATE RENDER_SURFACE_STATE;
|
||||
using SURFACE_FORMAT = typename RENDER_SURFACE_STATE::SURFACE_FORMAT;
|
||||
|
||||
McsSurfaceInfo msi = {0, 0, 3};
|
||||
cl_image_desc imgDesc = Image2dDefaults::imageDesc;
|
||||
imgDesc.num_samples = 8;
|
||||
cl_image_format imgFormat = {CL_DEPTH_STENCIL, CL_FLOAT};
|
||||
|
||||
std::unique_ptr<Image> image(ImageHelper<ImageReadOnly<Image2dDefaults>>::create(context, &imgDesc, &imgFormat));
|
||||
image->setMcsSurfaceInfo(msi);
|
||||
cl_mem memObj = image.get();
|
||||
|
||||
retVal = clSetKernelArg(pKernel, 0, sizeof(memObj), &memObj);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
auto surfaceState = reinterpret_cast<RENDER_SURFACE_STATE *>(ptrOffset(pKernel->getSurfaceStateHeap(),
|
||||
pKernelInfo->kernelArgInfo[0].offsetHeap));
|
||||
|
||||
EXPECT_TRUE(Image::isDepthFormat(image->getImageFormat()));
|
||||
EXPECT_TRUE(surfaceState->getSurfaceFormat() == SURFACE_FORMAT::SURFACE_FORMAT_R32_FLOAT_X8X24_TYPELESS);
|
||||
EXPECT_TRUE(surfaceState->getMultisampledSurfaceStorageFormat() ==
|
||||
RENDER_SURFACE_STATE::MULTISAMPLED_SURFACE_STORAGE_FORMAT::MULTISAMPLED_SURFACE_STORAGE_FORMAT_MSS);
|
||||
}
|
||||
|
||||
HWTEST_F(ImageSetArgTest, givenMcsAllocationAndRenderCompressionWhenSetArgOnMultisampledImgIsCalledThenProgramAuxFieldsWithMcsParams) {
|
||||
typedef typename FamilyType::RENDER_SURFACE_STATE RENDER_SURFACE_STATE;
|
||||
McsSurfaceInfo msi = {10, 20, 3};
|
||||
|
Reference in New Issue
Block a user