From c7da22327d6171bcabb121287d1624f17497bd59 Mon Sep 17 00:00:00 2001 From: Vihanakangas Date: Fri, 13 Nov 2020 12:27:24 +0200 Subject: [PATCH] Add coverage for depth bias 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 --- android/cts/master/vk-master-2020-03-01.txt | 3 + android/cts/master/vk-master.txt | 3 + external/fetch_sources.py | 2 +- .../amber/rasterization/depth_bias/d16_unorm.amber | 186 +++++++++++++++++++++ .../amber/rasterization/depth_bias/d24_unorm.amber | 186 +++++++++++++++++++++ .../rasterization/depth_bias/d32_sfloat.amber | 153 +++++++++++++++++ .../rasterization/line_continuity/line-strip.amber | 3 +- .../line_continuity/polygon-mode-lines.amber | 3 +- .../vulkan/rasterization/vktRasterizationTests.cpp | 49 ++++++ external/vulkancts/mustpass/master/vk-default.txt | 3 + 10 files changed, 588 insertions(+), 3 deletions(-) create mode 100644 external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d16_unorm.amber create mode 100644 external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d24_unorm.amber create mode 100644 external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d32_sfloat.amber diff --git a/android/cts/master/vk-master-2020-03-01.txt b/android/cts/master/vk-master-2020-03-01.txt index 90219ba..20d6f72 100644 --- a/android/cts/master/vk-master-2020-03-01.txt +++ b/android/cts/master/vk-master-2020-03-01.txt @@ -251320,6 +251320,9 @@ dEQP-VK.rasterization.provoking_vertex.line_strip 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 diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index c9a2d89..42301c2 100644 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -615428,6 +615428,9 @@ dEQP-VK.rasterization.provoking_vertex.line_strip 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 diff --git a/external/fetch_sources.py b/external/fetch_sources.py index c2c1dac..e836d7e 100644 --- a/external/fetch_sources.py +++ b/external/fetch_sources.py @@ -333,7 +333,7 @@ PACKAGES = [ GitRepo( "https://github.com/google/amber.git", None, - "e2ccba04930477fbc0dcde9b080facc033071751", + "0db8af9f6be1f7abb8030eaa593409d74476133b", "amber"), ] diff --git a/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d16_unorm.amber b/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d16_unorm.amber new file mode 100644 index 0000000..36ac2d5 --- /dev/null +++ b/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d16_unorm.amber @@ -0,0 +1,186 @@ +#!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 DATA +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 +END +BUFFER texcoords DATA_TYPE vec2 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 diff --git a/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d24_unorm.amber b/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d24_unorm.amber new file mode 100644 index 0000000..b3230da --- /dev/null +++ b/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d24_unorm.amber @@ -0,0 +1,186 @@ +#!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 DATA +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 +END +BUFFER texcoords DATA_TYPE vec2 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 diff --git a/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d32_sfloat.amber b/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d32_sfloat.amber new file mode 100644 index 0000000..3649889 --- /dev/null +++ b/external/vulkancts/data/vulkan/amber/rasterization/depth_bias/d32_sfloat.amber @@ -0,0 +1,153 @@ +#!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 DATA +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 +END +BUFFER texcoords DATA_TYPE vec2 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 diff --git a/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/line-strip.amber b/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/line-strip.amber index dc88e12..4544a4b 100644 --- a/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/line-strip.amber +++ b/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/line-strip.amber @@ -1,5 +1,6 @@ #!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. diff --git a/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/polygon-mode-lines.amber b/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/polygon-mode-lines.amber index 4bae586..5ab2b66 100644 --- a/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/polygon-mode-lines.amber +++ b/external/vulkancts/data/vulkan/amber/rasterization/line_continuity/polygon-mode-lines.amber @@ -1,5 +1,6 @@ #!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. diff --git a/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp b/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp index 7685766..7a593cf 100644 --- a/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp +++ b/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp @@ -7289,6 +7289,55 @@ void createRasterizationTests (tcu::TestCaseGroup* rasterizationTests) } } + // .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 requirements = std::vector(0); + std::vector 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)); diff --git a/external/vulkancts/mustpass/master/vk-default.txt b/external/vulkancts/mustpass/master/vk-default.txt index 4feb566..00dafcb 100644 --- a/external/vulkancts/mustpass/master/vk-default.txt +++ b/external/vulkancts/mustpass/master/vk-default.txt @@ -617569,6 +617569,9 @@ dEQP-VK.rasterization.provoking_vertex.line_strip 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 -- 2.7.4