external/vulkancts/modules/vulkan/binding_model/vktBindingDescriptorCopyTests.cpp \
external/vulkancts/modules/vulkan/binding_model/vktBindingDescriptorSetRandomTests.cpp \
external/vulkancts/modules/vulkan/binding_model/vktBindingDescriptorUpdateTests.cpp \
+ external/vulkancts/modules/vulkan/binding_model/vktBindingDynamicOffsetTests.cpp \
external/vulkancts/modules/vulkan/binding_model/vktBindingModelTests.cpp \
external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp \
external/vulkancts/modules/vulkan/clipping/vktClippingTests.cpp \
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_7
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_8
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_9
+dEQP-VK.binding_model.dynamic_offset.shader_reuse_differing_layout_compute
+dEQP-VK.binding_model.dynamic_offset.shader_reuse_differing_layout_graphics
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
dEQP-VK.spirv_assembly.instruction.compute.non_semantic_info.basic
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_7
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_8
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_9
+dEQP-VK.binding_model.dynamic_offset.shader_reuse_differing_layout_compute
+dEQP-VK.binding_model.dynamic_offset.shader_reuse_differing_layout_graphics
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# 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
+#
+# https://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(set = 0, binding = 1) buffer block0
+{
+ vec4 data;
+};
+
+void main()
+{
+ data = vec4(1, 2, 3, 4);
+}
+END
+
+BUFFER buf_unused DATA_TYPE vec4<float> DATA
+0.0 0.0 0.0 0.0
+1.0 1.0 1.0 1.0
+2.0 2.0 2.0 2.0
+END
+
+# The Vulkan spec lists the maximum value of minStorageBufferOffsetAlignment
+# (i.e. the maximum possible alignment requirement) as 256 bytes.
+# Allocate enough space to hold one vec4 (each 16 bytes)
+# after the alignment (256 / 16 + 1).
+BUFFER buf DATA_TYPE vec4<float> SIZE 17 FILL 0.0
+
+PIPELINE compute pipeline0
+ ATTACH compute_shader
+
+ BIND BUFFER buf_unused AS uniform_dynamic DESCRIPTOR_SET 0 BINDING 0 OFFSET 0
+ BIND BUFFER buf AS storage_dynamic DESCRIPTOR_SET 0 BINDING 1 OFFSET 0
+END
+
+PIPELINE compute pipeline1
+ ATTACH compute_shader
+
+ BIND BUFFER buf AS storage_dynamic DESCRIPTOR_SET 0 BINDING 1 OFFSET 256
+END
+
+RUN pipeline0 1 1 1
+RUN pipeline1 1 1 1
+
+EXPECT buf IDX 0 EQ 1.0 2.0 3.0 4.0
+EXPECT buf IDX 256 EQ 1.0 2.0 3.0 4.0
--- /dev/null
+#!amber
+# Copyright 2020 The Amber Authors.
+#
+# 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
+#
+# https://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 vertex vtex_shader GLSL
+#version 430
+
+layout(location = 0) in vec4 position;
+layout(location = 0) out vec4 frag_color;
+
+layout(set = 0, binding = 1) readonly uniform block0
+{
+ vec4 in_color;
+};
+
+void main()
+{
+ gl_Position = position;
+ frag_color = in_color;
+}
+END
+
+SHADER fragment frag_shader GLSL
+#version 430
+
+layout(location = 0) in vec4 frag_color;
+layout(location = 0) out vec4 final_color;
+
+void main()
+{
+ final_color = frag_color;
+}
+END
+
+BUFFER buf_unused DATA_TYPE vec4<float> DATA
+0.0 0.0 0.0 0.0
+1.0 1.0 1.0 1.0
+2.0 2.0 2.0 2.0
+END
+
+# The Vulkan spec lists the maximum value of minStorageBufferOffsetAlignment
+# (i.e. the maximum possible alignment requirement) as 256 bytes.
+# Meaningful data is placed at this offset.
+BUFFER buf DATA_TYPE vec4<float> DATA
+1.0 0.0 0.0 1.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 0.0 0.0 0.0
+0.0 1.0 0.0 1.0
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+PIPELINE graphics pipeline0
+ ATTACH vtex_shader
+ ATTACH frag_shader
+
+ BIND BUFFER buf_unused AS uniform_dynamic DESCRIPTOR_SET 0 BINDING 0 OFFSET 0
+ BIND BUFFER buf AS uniform_dynamic DESCRIPTOR_SET 0 BINDING 1 OFFSET 0
+ BIND BUFFER framebuffer AS color LOCATION 0
+
+ FRAMEBUFFER_SIZE 256 256
+END
+
+PIPELINE graphics pipeline1
+ ATTACH vtex_shader
+ ATTACH frag_shader
+
+ BIND BUFFER buf AS uniform_dynamic DESCRIPTOR_SET 0 BINDING 1 OFFSET 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+
+ FRAMEBUFFER_SIZE 256 256
+END
+
+CLEAR_COLOR pipeline0 0 0 0 255
+CLEAR pipeline0
+RUN pipeline0 DRAW_RECT POS 0 0 SIZE 128 128
+RUN pipeline1 DRAW_RECT POS 128 128 SIZE 128 128
+
+EXPECT framebuffer IDX 0 0 SIZE 128 128 EQ_RGBA 255 0 0 255
+EXPECT framebuffer IDX 128 0 SIZE 128 128 EQ_RGBA 0 0 0 255
+EXPECT framebuffer IDX 128 128 SIZE 128 128 EQ_RGBA 0 255 0 255
+EXPECT framebuffer IDX 0 128 SIZE 128 128 EQ_RGBA 0 0 0 255
# dEQP-VK.binding_model
-include_directories(..)
+include_directories(
+ ..
+ ../amber
+ )
set(DEQP_VK_BINDING_MODEL_SRCS
vktBindingModelTests.cpp
vktBindingDescriptorSetRandomTests.hpp
vktBindingDescriptorCopyTests.cpp
vktBindingDescriptorCopyTests.hpp
+ vktBindingDynamicOffsetTests.cpp
+ vktBindingDynamicOffsetTests.hpp
vktBindingBufferDeviceAddressTests.cpp
vktBindingBufferDeviceAddressTests.hpp
)
--- /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 Dynamic offset tests.
+ *//*--------------------------------------------------------------------*/
+
+#include "vktBindingDynamicOffsetTests.hpp"
+#include "vktAmberTestCase.hpp"
+#include "vktTestGroupUtil.hpp"
+
+using namespace vk;
+
+namespace vkt
+{
+namespace BindingModel
+{
+namespace
+{
+
+void populateDynamicOffsetTests (tcu::TestCaseGroup* group)
+{
+ tcu::TestContext& testCtx = group->getTestContext();
+
+ group->addChild(cts_amber::createAmberTestCase(testCtx, "shader_reuse_differing_layout_compute", "", "binding_model/dynamic_offset", "shader_reuse_differing_layout_compute.amber"));
+ group->addChild(cts_amber::createAmberTestCase(testCtx, "shader_reuse_differing_layout_graphics", "", "binding_model/dynamic_offset", "shader_reuse_differing_layout_graphics.amber"));
+}
+
+} // anonymous
+
+tcu::TestCaseGroup* createDynamicOffsetTests (tcu::TestContext& testCtx)
+{
+ return createTestGroup(testCtx, "dynamic_offset", "Dynamic offset tests.", populateDynamicOffsetTests);
+}
+
+} // BindingModel
+} // vkt
--- /dev/null
+#ifndef _VKTBINDINGDYNAMICOFFSETTESTS_HPP
+#define _VKTBINDINGDYNAMICOFFSETTESTS_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 Dynamic offset tests.
+ *//*--------------------------------------------------------------------*/
+
+#include "tcuDefs.hpp"
+#include "tcuTestCase.hpp"
+#include "vktTestCase.hpp"
+
+namespace vkt
+{
+namespace BindingModel
+{
+
+tcu::TestCaseGroup* createDynamicOffsetTests (tcu::TestContext& testCtx);
+
+} // BindingModel
+} // vkt
+
+#endif // _VKTBINDINGDYNAMICOFFSETTESTS_HPP
#include "vktBindingDescriptorSetRandomTests.hpp"
#include "vktBindingDescriptorCopyTests.hpp"
#include "vktBindingBufferDeviceAddressTests.hpp"
+#include "vktBindingDynamicOffsetTests.hpp"
#include "vktTestGroupUtil.hpp"
namespace vkt
group->addChild(createDescriptorSetRandomTests(testCtx));
group->addChild(createDescriptorCopyTests(testCtx));
group->addChild(createBufferDeviceAddressTests(testCtx));
+ group->addChild(createDynamicOffsetTests(testCtx));
// \todo [2015-07-30 jarkko] .change_binding.{between_renderpasses, within_pass}
// \todo [2015-07-30 jarkko] .descriptor_set_chain
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_7
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_8
dEQP-VK.binding_model.buffer_device_address.capture_replay_stress.seed_9
+dEQP-VK.binding_model.dynamic_offset.shader_reuse_differing_layout_compute
+dEQP-VK.binding_model.dynamic_offset.shader_reuse_differing_layout_graphics
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute