dEQP-VK didn't have coverage for depth bias testing.
This change verifies that the bias is calculated correctly
with floating-point depth format and integer depth formats.
The amber files copyrights under line_continuity have also been updated.
Updated amber commit id in fetch_sources.py.
New tests:
dEQP-VK.rasterization.depth_bias.*
Components: Vulkan
VK-GL-CTS issue: 2606
Change-Id: I82bdffef879f372e03602cd091e1675258c137ea
dEQP-VK.rasterization.provoking_vertex.line_strip_with_adjacency
dEQP-VK.rasterization.line_continuity.line-strip
dEQP-VK.rasterization.line_continuity.polygon-mode-lines
+dEQP-VK.rasterization.depth_bias.d16_unorm
+dEQP-VK.rasterization.depth_bias.d32_sfloat
+dEQP-VK.rasterization.depth_bias.d24_unorm
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.kill
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.demote
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.terminate_invocation
dEQP-VK.rasterization.provoking_vertex.line_strip_with_adjacency
dEQP-VK.rasterization.line_continuity.line-strip
dEQP-VK.rasterization.line_continuity.polygon-mode-lines
+dEQP-VK.rasterization.depth_bias.d16_unorm
+dEQP-VK.rasterization.depth_bias.d32_sfloat
+dEQP-VK.rasterization.depth_bias.d24_unorm
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.kill
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.demote
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.terminate_invocation
GitRepo(
"https://github.com/google/amber.git",
None,
- "e2ccba04930477fbc0dcde9b080facc033071751",
+ "0db8af9f6be1f7abb8030eaa593409d74476133b",
"amber"),
]
--- /dev/null
+#!amber
+# Copyright 2020 Google LLC.
+# Copyright 2020 The Khronos Group 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
+#
+# 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.
+
+# This test draws two quads with depth values 0.3 and 0.5. Based on the equation in
+# Vulkan spec 26.12.3 the effective constant bias o is calculated as follows:
+
+# Both quads have a constant depth value, thus the maximum depth slope m is zero.
+# For minimun resolveble difference r there are two values accepted: r0 = 2^-16
+# and r1 = 2^-15. It is constant throughout the range of the entire depth buffer.
+
+# Using r0 the constant bias o value is:
+# 16384 * r0 = 16384 * 2^-16 = 0.25.
+
+# Adding this to the existing quad depth values should result as:
+# 0.3 + 0.25 = 0.55 and 0.5 + 0.25 = 0.75.
+
+# For r1 the same calculation for o is:
+# 16384 * r1 = 16384 * 2^-15 = 0.5.
+
+# Adding this to the existing quad depth values should result as:
+# 0.3 + 0.5 = 0.8 and 0.5 + 0.5 = 1.0
+
+SHADER vertex vert_shader GLSL
+#version 430
+
+layout(location = 0) in vec4 position;
+layout(location = 0) out vec4 frag_color;
+
+layout(set = 0, binding = 0) readonly buffer block1 {
+ vec4 in_color;
+ float depth;
+};
+
+void main() {
+ gl_Position = vec4(position.xy, depth, 1.0);
+ 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
+
+SHADER vertex vert_shader_tex GLSL
+#version 430
+layout(location = 0) in vec4 position;
+layout(location = 1) in vec2 texcoords_in;
+layout(location = 0) out vec2 texcoords_out;
+void main() {
+ gl_Position = position;
+ texcoords_out = texcoords_in;
+}
+END
+
+SHADER fragment frag_shader_tex GLSL
+#version 430
+layout(location = 0) in vec2 texcoords_in;
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) sampler2D tex_sampler;
+void main() {
+ float f = texture(tex_sampler, texcoords_in).r;
+ color_out = vec4(f, f, f, 1);
+}
+END
+
+BUFFER data_buf1 DATA_TYPE float DATA 1.0 0.0 0.0 1.0 0.3 END
+BUFFER data_buf2 DATA_TYPE float DATA 0.0 1.0 0.0 1.0 0.5 END
+
+BUFFER position DATA_TYPE vec2<float> DATA
+-1.0 -1.0
+ 1.0 -1.0
+ 1.0 1.0
+-1.0 1.0
+END
+BUFFER texcoords DATA_TYPE vec2<float> DATA
+0.0 0.0
+1.0 0.0
+1.0 1.0
+0.0 1.0
+END
+
+BUFFER depthstencil FORMAT D16_UNORM
+BUFFER ddump FORMAT R32_SFLOAT
+BUFFER results DATA_TYPE float SIZE 2 FILL 0
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+SAMPLER sampler
+
+PIPELINE graphics pipeline1
+ ATTACH vert_shader
+ ATTACH frag_shader
+
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+ BIND BUFFER depthstencil AS depth_stencil
+ BIND BUFFER data_buf1 AS storage DESCRIPTOR_SET 0 BINDING 0
+
+ DEPTH
+ TEST on
+ WRITE on
+ COMPARE_OP less
+ CLAMP off
+ BOUNDS min 0.0 max 1.0
+ BIAS constant 16384.0 clamp 0.0 slope 2.0
+ END
+END
+
+DERIVE_PIPELINE pipeline2 FROM pipeline1
+ BIND BUFFER data_buf2 AS storage DESCRIPTOR_SET 0 BINDING 0
+END
+
+PIPELINE graphics depthdump
+ ATTACH vert_shader_tex
+ ATTACH frag_shader_tex
+ BIND BUFFER depthstencil AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 0 BINDING 0
+ VERTEX_DATA position LOCATION 0
+ VERTEX_DATA texcoords LOCATION 1
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER ddump AS color LOCATION 0
+END
+
+SHADER compute verification_shader GLSL
+#version 430
+layout(local_size_x=1,local_size_y=1) in;
+uniform layout (set=0, binding=0, r32f) image2D texture;
+layout(set = 0, binding = 1) buffer Result {
+ float result0;
+ float result1;
+};
+
+void main () {
+ float ref0_0 = 0.55;
+ float ref0_1 = 0.8;
+ float depth0 = imageLoad(texture, ivec2(0, 0)).r;
+ if (distance(ref0_0, depth0) < 0.003 || distance(ref0_1, depth0) < 0.003)
+ result0 = 1.0;
+ else
+ result0 = 0.0;
+
+ float ref1_0 = 0.75;
+ float ref1_1 = 1.0;
+ float depth1 = imageLoad(texture, ivec2(255, 255)).r;
+ if (distance(ref1_0, depth1) < 0.003 || distance(ref1_1, depth1) < 0.003)
+ result1 = 1.0;
+ else
+ result1 = 0.0;
+}
+END
+
+PIPELINE compute verification_pipeline
+ ATTACH verification_shader
+ BIND BUFFER ddump AS storage_image DESCRIPTOR_SET 0 BINDING 0
+ BIND BUFFER results AS storage DESCRIPTOR_SET 0 BINDING 1
+ FRAMEBUFFER_SIZE 256 256
+END
+
+CLEAR_DEPTH pipeline1 1.0
+CLEAR_COLOR pipeline1 255 255 255 255
+CLEAR pipeline1
+RUN pipeline1 DRAW_RECT POS 0 0 SIZE 200 200
+RUN pipeline2 DRAW_RECT POS 56 56 SIZE 200 200
+RUN depthdump DRAW_ARRAY AS TRIANGLE_FAN START_IDX 0 COUNT 4
+RUN verification_pipeline 1 1 1
+
+EXPECT results IDX 0 EQ 1.0
+EXPECT results IDX 4 EQ 1.0
--- /dev/null
+#!amber
+# Copyright 2020 Google LLC.
+# Copyright 2020 The Khronos Group 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
+#
+# 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.
+
+# This test draws two quads with depth values 0.3 and 0.5. Based on the equation in
+# Vulkan spec 26.12.3 the effective constant bias o is calculated as follows:
+
+# Both quads have a constant depth value, thus the maximum depth slope m is zero.
+# For minimun resolveble difference r there are two values accepted: r0 = 2^-24
+# and r1 = 2^-23. It is constant throughout the range of the entire depth buffer.
+
+# Using r0 the constant bias o value is:
+# 4194304 * r0 = 4194304 * 2^-24 = 0.25.
+
+# Adding this to the existing quad depth values should result as:
+# 0.3 + 0.25 = 0.55 and 0.5 + 0.25 = 0.75.
+
+# For r1 the same calculation for o is:
+# 4194304 * r1 = 4194304 * 2^-23 = 0.5.
+
+# Adding this to the existing quad depth values should result as:
+# 0.3 + 0.5 = 0.8 and 0.5 + 0.5 = 1.0
+
+SHADER vertex vert_shader GLSL
+#version 430
+
+layout(location = 0) in vec4 position;
+layout(location = 0) out vec4 frag_color;
+
+layout(set = 0, binding = 0) readonly buffer block1 {
+ vec4 in_color;
+ float depth;
+};
+
+void main() {
+ gl_Position = vec4(position.xy, depth, 1.0);
+ 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
+
+SHADER vertex vert_shader_tex GLSL
+#version 430
+layout(location = 0) in vec4 position;
+layout(location = 1) in vec2 texcoords_in;
+layout(location = 0) out vec2 texcoords_out;
+void main() {
+ gl_Position = position;
+ texcoords_out = texcoords_in;
+}
+END
+
+SHADER fragment frag_shader_tex GLSL
+#version 430
+layout(location = 0) in vec2 texcoords_in;
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) sampler2D tex_sampler;
+void main() {
+ float f = texture(tex_sampler, texcoords_in).r;
+ color_out = vec4(f, f, f, 1);
+}
+END
+
+BUFFER data_buf1 DATA_TYPE float DATA 1.0 0.0 0.0 1.0 0.3 END
+BUFFER data_buf2 DATA_TYPE float DATA 0.0 1.0 0.0 1.0 0.5 END
+
+BUFFER position DATA_TYPE vec2<float> DATA
+-1.0 -1.0
+ 1.0 -1.0
+ 1.0 1.0
+-1.0 1.0
+END
+BUFFER texcoords DATA_TYPE vec2<float> DATA
+0.0 0.0
+1.0 0.0
+1.0 1.0
+0.0 1.0
+END
+
+BUFFER depthstencil FORMAT D24_UNORM_S8_UINT
+BUFFER ddump FORMAT R32_SFLOAT
+BUFFER results DATA_TYPE float SIZE 2 FILL 0
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+
+SAMPLER sampler
+
+PIPELINE graphics pipeline1
+ ATTACH vert_shader
+ ATTACH frag_shader
+
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+ BIND BUFFER depthstencil AS depth_stencil
+ BIND BUFFER data_buf1 AS storage DESCRIPTOR_SET 0 BINDING 0
+
+ DEPTH
+ TEST on
+ WRITE on
+ COMPARE_OP less
+ CLAMP off
+ BOUNDS min 0.0 max 1.0
+ BIAS constant 4194304.0 clamp 0.0 slope 2.0
+ END
+END
+
+DERIVE_PIPELINE pipeline2 FROM pipeline1
+ BIND BUFFER data_buf2 AS storage DESCRIPTOR_SET 0 BINDING 0
+END
+
+PIPELINE graphics depthdump
+ ATTACH vert_shader_tex
+ ATTACH frag_shader_tex
+ BIND BUFFER depthstencil AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 0 BINDING 0
+ VERTEX_DATA position LOCATION 0
+ VERTEX_DATA texcoords LOCATION 1
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER ddump AS color LOCATION 0
+END
+
+SHADER compute verification_shader GLSL
+#version 430
+layout(local_size_x=1,local_size_y=1) in;
+uniform layout (set=0, binding=0, r32f) image2D texture;
+layout(set = 0, binding = 1) buffer Result {
+ float result0;
+ float result1;
+};
+
+void main () {
+ float ref0_0 = 0.55;
+ float ref0_1 = 0.8;
+ float depth0 = imageLoad(texture, ivec2(0, 0)).r;
+ if (distance(ref0_0, depth0) < 0.003 || distance(ref0_1, depth0) < 0.003)
+ result0 = 1.0;
+ else
+ result0 = 0.0;
+
+ float ref1_0 = 0.75;
+ float ref1_1 = 1.0;
+ float depth1 = imageLoad(texture, ivec2(255, 255)).r;
+ if (distance(ref1_0, depth1) < 0.003 || distance(ref1_1, depth1) < 0.003)
+ result1 = 1.0;
+ else
+ result1 = 0.0;
+}
+END
+
+PIPELINE compute verification_pipeline
+ ATTACH verification_shader
+ BIND BUFFER ddump AS storage_image DESCRIPTOR_SET 0 BINDING 0
+ BIND BUFFER results AS storage DESCRIPTOR_SET 0 BINDING 1
+ FRAMEBUFFER_SIZE 256 256
+END
+
+CLEAR_DEPTH pipeline1 1.0
+CLEAR_COLOR pipeline1 255 255 255 255
+CLEAR pipeline1
+RUN pipeline1 DRAW_RECT POS 0 0 SIZE 200 200
+RUN pipeline2 DRAW_RECT POS 56 56 SIZE 200 200
+RUN depthdump DRAW_ARRAY AS TRIANGLE_FAN START_IDX 0 COUNT 4
+RUN verification_pipeline 1 1 1
+
+EXPECT results IDX 0 EQ 1.0
+EXPECT results IDX 4 EQ 1.0
--- /dev/null
+#!amber
+# Copyright 2020 Google LLC.
+# Copyright 2020 The Khronos Group 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
+#
+# 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.
+
+# This test draws two quads with depth values 0.3 and 0.5. Based on the equation in
+# Vulkan spec 26.12.3 the effective constant bias o is calculated as follows:
+
+# Both quads have a constant depth value, thus the maximum depth slope m is zero.
+# The maximum exponent e is taken from the constant depth value.
+# For depth value 0.3 e is -2, and for value 0.5 it's -1.
+
+# 32bit float format has a mantissa size of 23 making n = 23.
+# The minimum resolvable difference r is calculated as r = 2^(e-n).
+
+# Thus the constant bias o values are:
+# 4194304 * r = 4194304 * 2^(-2-23) = 4194304 * 2^-25 = 0.125
+# and
+# 4194304 * r = 4194304 * 2^(-1-23) = 4194304 * 2^-24 = 0.25
+
+# Adding this to the existing quad depth values should result as
+# 0.3 + 0.125 = 0.425 and 0.5 + 0.25 = 0.75.
+
+# The depth buffer is dumped as a RGBA8 image making the expected results
+# roughly 0.425 * 255 = 108 and 0.75 * 255 = 191.
+
+SHADER vertex vert_shader GLSL
+#version 430
+
+layout(location = 0) in vec4 position;
+layout(location = 0) out vec4 frag_color;
+
+layout(set = 0, binding = 0) readonly buffer block1 {
+ vec4 in_color;
+ float depth;
+};
+
+void main() {
+ gl_Position = vec4(position.xy, depth, 1.0);
+ 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
+
+SHADER vertex vert_shader_tex GLSL
+#version 430
+layout(location = 0) in vec4 position;
+layout(location = 1) in vec2 texcoords_in;
+layout(location = 0) out vec2 texcoords_out;
+void main() {
+ gl_Position = position;
+ texcoords_out = texcoords_in;
+}
+END
+
+SHADER fragment frag_shader_tex GLSL
+#version 430
+layout(location = 0) in vec2 texcoords_in;
+layout(location = 0) out vec4 color_out;
+uniform layout(set=0, binding=0) sampler2D tex_sampler;
+void main() {
+ float f = texture(tex_sampler, texcoords_in).r;
+ color_out = vec4(f, f, f, 1);
+}
+END
+
+BUFFER data_buf1 DATA_TYPE float DATA 1.0 0.0 0.0 1.0 0.3 END
+BUFFER data_buf2 DATA_TYPE float DATA 0.0 1.0 0.0 1.0 0.5 END
+
+BUFFER position DATA_TYPE vec2<float> DATA
+-1.0 -1.0
+ 1.0 -1.0
+ 1.0 1.0
+-1.0 1.0
+END
+BUFFER texcoords DATA_TYPE vec2<float> DATA
+0.0 0.0
+1.0 0.0
+1.0 1.0
+0.0 1.0
+END
+
+BUFFER framebuffer FORMAT B8G8R8A8_UNORM
+BUFFER ddump FORMAT B8G8R8A8_UNORM
+BUFFER depthstencil FORMAT D32_SFLOAT
+
+SAMPLER sampler
+
+PIPELINE graphics pipeline1
+ ATTACH vert_shader
+ ATTACH frag_shader
+
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER framebuffer AS color LOCATION 0
+ BIND BUFFER depthstencil AS depth_stencil
+ BIND BUFFER data_buf1 AS storage DESCRIPTOR_SET 0 BINDING 0
+
+ DEPTH
+ TEST on
+ WRITE on
+ COMPARE_OP less
+ CLAMP off
+ BOUNDS min 0.0 max 1.0
+ BIAS constant 4194304.0 clamp 0.0 slope 2.0
+ END
+END
+
+DERIVE_PIPELINE pipeline2 FROM pipeline1
+ BIND BUFFER data_buf2 AS storage DESCRIPTOR_SET 0 BINDING 0
+END
+
+PIPELINE graphics depthdump
+ ATTACH vert_shader_tex
+ ATTACH frag_shader_tex
+ BIND BUFFER depthstencil AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 0 BINDING 0
+ VERTEX_DATA position LOCATION 0
+ VERTEX_DATA texcoords LOCATION 1
+ FRAMEBUFFER_SIZE 256 256
+ BIND BUFFER ddump AS color LOCATION 0
+END
+
+CLEAR_DEPTH pipeline1 1.0
+CLEAR_COLOR pipeline1 255 255 255 255
+CLEAR pipeline1
+RUN pipeline1 DRAW_RECT POS 0 0 SIZE 200 200
+RUN pipeline2 DRAW_RECT POS 56 56 SIZE 200 200
+RUN depthdump DRAW_ARRAY AS TRIANGLE_FAN START_IDX 0 COUNT 4
+
+EXPECT ddump IDX 0 0 SIZE 1 1 EQ_RGBA 108 108 108 255 TOLERANCE 5% 5% 5% 0
+EXPECT ddump IDX 255 0 SIZE 1 1 EQ_RGBA 255 255 255 255 TOLERANCE 5% 5% 5% 0
+EXPECT ddump IDX 0 255 SIZE 1 1 EQ_RGBA 255 255 255 255 TOLERANCE 5% 5% 5% 0
+EXPECT ddump IDX 255 255 SIZE 1 1 EQ_RGBA 191 191 191 255 TOLERANCE 5% 5% 5% 0
\ No newline at end of file
#!amber
-# Copyright 2020 The Amber Authors.
+# Copyright 2020 Google LLC.
+# Copyright 2020 The Khronos Group Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!amber
-# Copyright 2020 The Amber Authors.
+# Copyright 2020 Google LLC.
+# Copyright 2020 The Khronos Group Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
}
}
+ // .depth bias
+ {
+ tcu::TestCaseGroup* const depthBias = new tcu::TestCaseGroup(testCtx, "depth_bias", "Test depth bias");
+ static const char dataDir[] = "rasterization/depth_bias";
+
+ static const struct
+ {
+ std::string name;
+ vk::VkFormat format;
+ std::string description;
+ } cases [] =
+ {
+ {"d16_unorm", vk::VK_FORMAT_D16_UNORM, "Test depth bias with format D16_UNORM"},
+ {"d32_sfloat", vk::VK_FORMAT_D32_SFLOAT, "Test depth bias with format D32_SFLOAT"},
+ {"d24_unorm", vk::VK_FORMAT_D24_UNORM_S8_UINT, "Test depth bias with format D24_UNORM_S8_UINT"}
+ };
+
+ for (int i = 0; i < DE_LENGTH_OF_ARRAY(cases); ++i)
+ {
+ const VkImageCreateInfo vkImageCreateInfo = {
+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // sType
+ nullptr, // pNext
+ 0, // flags
+ VK_IMAGE_TYPE_2D, // imageType
+ cases[i].format, // format
+ {250, 250, 1}, // extent
+ 1, // mipLevels
+ 1, // arrayLayers
+ VK_SAMPLE_COUNT_1_BIT, // samples
+ VK_IMAGE_TILING_OPTIMAL, // tiling
+ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, // usage
+ VK_SHARING_MODE_EXCLUSIVE, // sharingMode
+ 0, // queueFamilyIndexCount
+ nullptr, // pQueueFamilyIndices
+ VK_IMAGE_LAYOUT_UNDEFINED, // initialLayout
+ };
+
+ std::vector<std::string> requirements = std::vector<std::string>(0);
+ std::vector<VkImageCreateInfo> imageRequirements;
+ imageRequirements.push_back(vkImageCreateInfo);
+ const std::string fileName = cases[i].name + ".amber";
+ cts_amber::AmberTestCase* testCase = cts_amber::createAmberTestCase(testCtx, cases[i].name.c_str(), cases[i].description.c_str(), dataDir, fileName, requirements, imageRequirements);
+
+ depthBias->addChild(testCase);
+ }
+
+ rasterizationTests->addChild(depthBias);
+ }
+
// Fragment shader side effects.
{
rasterizationTests->addChild(createFragSideEffectsTests(testCtx));
dEQP-VK.rasterization.provoking_vertex.line_strip_with_adjacency
dEQP-VK.rasterization.line_continuity.line-strip
dEQP-VK.rasterization.line_continuity.polygon-mode-lines
+dEQP-VK.rasterization.depth_bias.d16_unorm
+dEQP-VK.rasterization.depth_bias.d32_sfloat
+dEQP-VK.rasterization.depth_bias.d24_unorm
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.kill
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.demote
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.terminate_invocation