From 4e2035b5a511378a508225355adea6118c72bb62 Mon Sep 17 00:00:00 2001 From: aitor_lunarg Date: Wed, 21 Sep 2022 21:44:57 +0200 Subject: [PATCH] Ensure correct size is allocated for buffer in mismatch tests Affected tests: dEQP-VK.spirv_assembly.instruction.graphics.image_sampler.*optypeimage_mismatch.* Components: Vulkan VK-GL-CTS issue: 3974 Change-Id: I66868b9f1e2f8a48f8613b79267bdf5922aa6c70 --- .../spirv_assembly/vktSpvAsmImageSamplerTests.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp index 9b8c1da..d81109d 100644 --- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp +++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmImageSamplerTests.cpp @@ -1146,14 +1146,16 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group) vector inputDataBase (numDataPoints); for (deUint32 numIdx = 0; numIdx < numDataPoints; ++numIdx) inputDataBase[numIdx] = tcu::randomVec4(rnd); + // Depth only has 1 component + vector inputDataBaseDepth = inputDataBase; + inputDataBaseDepth.resize(numDataPoints / 4); for (deUint32 opNdx = 0u; opNdx < READOP_LAST; opNdx++) { de::MovePtr readOpGroup (new tcu::TestCaseGroup(testCtx, getReadOpName((ReadOp)opNdx), "")); - vector inputData = inputDataBase; - if (opNdx > READOP_IMAGESAMPLE) - inputData.resize(numDataPoints / 4u); + const VkFormat imageFormat = getImageFormat((ReadOp)opNdx); + const bool hasDepthComponent = tcu::hasDepthComponent(vk::mapVkFormat(imageFormat).order); for (deUint32 descNdx = 0u; descNdx < DESCRIPTOR_TYPE_LAST; descNdx++) { @@ -1176,7 +1178,7 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group) // optypeimage_mismatch uses an additional level of test hierarchy const char *groupname = testNdx == TESTTYPE_OPTYPEIMAGE_MISMATCH ? optypeimageFormatMismatchCase[formatIndex] : getTestTypeName((TestType)testNdx); de::MovePtr typeGroup(new tcu::TestCaseGroup(testCtx, groupname, "")); - + vector& inputData = hasDepthComponent && testNdx != TESTTYPE_OPTYPEIMAGE_MISMATCH ? inputDataBaseDepth : inputDataBase; GraphicsResources resources; resources.inputs.push_back(Resource(BufferSp(new Vec4Buffer(inputData)), getVkDescriptorType((DescriptorType)descNdx))); @@ -1202,12 +1204,6 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group) getDefaultColors(defaultColors); - if (opNdx > READOP_IMAGESAMPLE) - { - resources.verifyIO = verifyDepthCompareResult; - resources.inputFormat = getImageFormat((ReadOp)opNdx); - } - // If testing for mismatched optypeimage, ignore the rendered // result (we're only interested to see if we crash) if (testNdx == TESTTYPE_OPTYPEIMAGE_MISMATCH) @@ -1215,6 +1211,11 @@ void addGraphicsImageSamplerTest (tcu::TestCaseGroup* group) resources.verifyIO = nopVerifyFunction; resources.inputFormat = optypeimageFormatMismatchVkFormat[formatIndex]; } + else if (hasDepthComponent) + { + resources.verifyIO = verifyDepthCompareResult; + resources.inputFormat = getImageFormat((ReadOp)opNdx); + } de::MovePtr depthGroup (new tcu::TestCaseGroup(testCtx, "depth_property", "")); for (deUint32 propertyNdx = 0u; propertyNdx < DEPTH_PROPERTY_LAST; propertyNdx++) -- 2.7.4