external/vulkancts/modules/vulkan/texture/vktSampleVerifier.cpp \
external/vulkancts/modules/vulkan/texture/vktSampleVerifierUtil.cpp \
external/vulkancts/modules/vulkan/texture/vktTextureCompressedFormatTests.cpp \
+ external/vulkancts/modules/vulkan/texture/vktTextureConversionTests.cpp \
external/vulkancts/modules/vulkan/texture/vktTextureFilteringAnisotropyTests.cpp \
external/vulkancts/modules/vulkan/texture/vktTextureFilteringExplicitLodTests.cpp \
external/vulkancts/modules/vulkan/texture/vktTextureFilteringTests.cpp \
dEQP-VK.texture.subgroup_lod.texturelod
dEQP-VK.texture.subgroup_lod.texturegrad
dEQP-VK.texture.subgroup_lod.texelfetch
+dEQP-VK.texture.conversion.b10g11r11-negative-values
dEQP-VK.geometry.layered.1d_array.64_1_4.render_to_default_layer
dEQP-VK.geometry.layered.1d_array.64_1_4.render_to_one
dEQP-VK.geometry.layered.1d_array.64_1_4.render_to_all
dEQP-VK.texture.subgroup_lod.texturelod
dEQP-VK.texture.subgroup_lod.texturegrad
dEQP-VK.texture.subgroup_lod.texelfetch
+dEQP-VK.texture.conversion.b10g11r11-negative-values
dEQP-VK.geometry.input.basic_primitive.points
dEQP-VK.geometry.input.basic_primitive.lines
dEQP-VK.geometry.input.basic_primitive.line_strip
--- /dev/null
+#!amber
+# Copyright 2020 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+SHADER compute compute_shader GLSL
+#version 430
+layout(local_size_x=10, local_size_y=10) in;
+uniform layout (set=0, binding=0, r11f_g11f_b10f) image2D texture;
+
+void main ()
+{
+ ivec2 uv = ivec2(gl_GlobalInvocationID.xy);
+ vec4 color = vec4(uv.x - uv.y, uv.y, -uv.y, 1);
+ imageStore(texture, uv, color);
+}
+END
+
+SHADER compute compute_shader_verify GLSL
+#version 430
+layout(local_size_x=1, local_size_y=1) in;
+uniform layout (set=0, binding=0, r11f_g11f_b10f) image2D texture;
+layout(binding = 1) buffer Buf1
+{
+ int result;
+};
+
+void main ()
+{
+ result = 1;
+
+ for (int y = 0; y < 50; y++)
+ for (int x = 0; x < 50; x++)
+ {
+ ivec2 uv = ivec2(x, y);
+ vec4 color = imageLoad(texture, uv);
+ // Conversion to tiny float should clamp negative values to zero,
+ // thus the max operation here.
+ vec4 ref = max(vec4(uv.x - uv.y, uv.y, -uv.y, 1), vec4(0));
+
+ if (color != ref)
+ result = 0;
+ }
+}
+END
+
+IMAGE texture FORMAT B10G11R11_UFLOAT_PACK32 DIM_2D WIDTH 50 HEIGHT 50 FILL 0
+BUFFER result DATA_TYPE int32 SIZE 1 FILL 0
+
+PIPELINE compute pipeline
+ ATTACH compute_shader
+ BIND BUFFER texture AS storage_image DESCRIPTOR_SET 0 BINDING 0
+END
+
+PIPELINE compute verify
+ ATTACH compute_shader_verify
+ BIND BUFFER texture AS storage_image DESCRIPTOR_SET 0 BINDING 0
+ BIND BUFFER result AS storage DESCRIPTOR_SET 0 BINDING 1
+END
+
+RUN pipeline 5 5 1
+RUN verify 1 1 1
+EXPECT result IDX 0 EQ 1
vktTextureTests.hpp
vktTextureTestUtil.cpp
vktTextureTestUtil.hpp
+ vktTextureConversionTests.cpp
+ vktTextureConversionTests.hpp
vktTextureFilteringExplicitLodTests.cpp
vktTextureFilteringExplicitLodTests.hpp
vktTextureFilteringTests.cpp
--- /dev/null
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2020 The Khronos Group Inc.
+ * Copyright (c) 2020 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Texture conversion tests.
+ *//*--------------------------------------------------------------------*/
+
+#include "vktTextureConversionTests.hpp"
+#include "vktAmberTestCase.hpp"
+#include "vktTestGroupUtil.hpp"
+
+using namespace vk;
+
+namespace vkt
+{
+namespace texture
+{
+namespace
+{
+
+void populateTextureConversionTests (tcu::TestCaseGroup* group)
+{
+ tcu::TestContext& testCtx = group->getTestContext();
+
+ group->addChild(cts_amber::createAmberTestCase(testCtx, "b10g11r11-negative-values", "", "texture/conversion", "b10g11r11-ufloat-pack32-negative-values.amber"));
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createTextureConversionTests (tcu::TestContext& testCtx)
+{
+ return createTestGroup(testCtx, "conversion", "Texture conversion tests.", populateTextureConversionTests);
+}
+
+} // texture
+} // vkt
--- /dev/null
+#ifndef _VKTTEXTURECONVERSIONTESTS_HPP
+#define _VKTTEXTURECONVERSIONTESTS_HPP
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2020 The Khronos Group Inc.
+ * Copyright (c) 2020 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Texture conversion tests.
+ *//*--------------------------------------------------------------------*/
+
+#include "tcuDefs.hpp"
+#include "tcuTestCase.hpp"
+#include "vktTestCase.hpp"
+
+namespace vkt
+{
+namespace texture
+{
+
+tcu::TestCaseGroup* createTextureConversionTests (tcu::TestContext& testCtx);
+
+} // texture
+} // vkt
+
+#endif // _VKTTEXTURECONVERSIONTESTS_HPP
void populateSubgroupLodTests (tcu::TestCaseGroup* group)
{
tcu::TestContext& testCtx = group->getTestContext();
- cts_amber::AmberTestCase* testCaseLod = cts_amber::createAmberTestCase(testCtx, "texturelod", "", "texture_subgroup_lod", "texture_lod.amber");
- cts_amber::AmberTestCase* testCaseGrad = cts_amber::createAmberTestCase(testCtx, "texturegrad", "", "texture_subgroup_lod", "texture_grad.amber");
- cts_amber::AmberTestCase* testCaseFetch = cts_amber::createAmberTestCase(testCtx, "texelfetch", "", "texture_subgroup_lod", "texel_fetch.amber");
+ cts_amber::AmberTestCase* testCaseLod = cts_amber::createAmberTestCase(testCtx, "texturelod", "", "texture/subgroup_lod", "texture_lod.amber");
+ cts_amber::AmberTestCase* testCaseGrad = cts_amber::createAmberTestCase(testCtx, "texturegrad", "", "texture/subgroup_lod", "texture_grad.amber");
+ cts_amber::AmberTestCase* testCaseFetch = cts_amber::createAmberTestCase(testCtx, "texelfetch", "", "texture/subgroup_lod", "texel_fetch.amber");
group->addChild(testCaseLod);
group->addChild(testCaseGrad);
#include "vktTextureCompressedFormatTests.hpp"
#include "vktTextureSwizzleTests.hpp"
#include "vktTextureSubgroupLodTests.hpp"
+#include "vktTextureConversionTests.hpp"
namespace vkt
{
textureTests->addChild(createTextureCompressedFormatTests (testCtx));
textureTests->addChild(createTextureSwizzleTests (testCtx));
textureTests->addChild(createTextureSubgroupLodTests (testCtx));
+ textureTests->addChild(createTextureConversionTests (testCtx));
}
} // anonymous
dEQP-VK.texture.subgroup_lod.texturelod
dEQP-VK.texture.subgroup_lod.texturegrad
dEQP-VK.texture.subgroup_lod.texelfetch
+dEQP-VK.texture.conversion.b10g11r11-negative-values
dEQP-VK.geometry.input.basic_primitive.points
dEQP-VK.geometry.input.basic_primitive.lines
dEQP-VK.geometry.input.basic_primitive.line_strip