From c681c7c23f79e2f0d6dbb2ce8961edd216cefd91 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 18 Aug 2022 12:43:23 +0200 Subject: rhi: metal: Add support for tessellation Change-Id: Ie8d226a6a959aa5e78284ea72505fd26aec1e671 Reviewed-by: Andy Nichols --- tests/auto/gui/rhi/qrhi/data/buildshaders.bat | 4 ++++ tests/auto/gui/rhi/qrhi/data/simpletess.frag | 10 ++++++++++ tests/auto/gui/rhi/qrhi/data/simpletess.frag.qsb | Bin 0 -> 591 bytes tests/auto/gui/rhi/qrhi/data/simpletess.tesc | 22 ++++++++++++++++++++++ tests/auto/gui/rhi/qrhi/data/simpletess.tesc.qsb | Bin 0 -> 1402 bytes tests/auto/gui/rhi/qrhi/data/simpletess.tese | 17 +++++++++++++++++ tests/auto/gui/rhi/qrhi/data/simpletess.tese.qsb | Bin 0 -> 1401 bytes tests/auto/gui/rhi/qrhi/data/simpletess.vert | 12 ++++++++++++ tests/auto/gui/rhi/qrhi/data/simpletess.vert.qsb | Bin 0 -> 936 bytes 9 files changed, 65 insertions(+) create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.frag create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.frag.qsb create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.tesc create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.tesc.qsb create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.tese create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.tese.qsb create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.vert create mode 100644 tests/auto/gui/rhi/qrhi/data/simpletess.vert.qsb (limited to 'tests/auto/gui/rhi/qrhi/data') diff --git a/tests/auto/gui/rhi/qrhi/data/buildshaders.bat b/tests/auto/gui/rhi/qrhi/data/buildshaders.bat index 68d9bb8ae7..8518db8afc 100644 --- a/tests/auto/gui/rhi/qrhi/data/buildshaders.bat +++ b/tests/auto/gui/rhi/qrhi/data/buildshaders.bat @@ -11,3 +11,7 @@ qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o textured.vert.qsb textured. qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o textured.frag.qsb textured.frag qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o textured_multiubuf.vert.qsb textured_multiubuf.vert qsb --glsl "150,120,100 es" --hlsl 50 -c --msl 12 -o textured_multiubuf.frag.qsb textured_multiubuf.frag +qsb --glsl 320es,410 --msl 12 --msltess simpletess.vert -o simpletess.vert.qsb +qsb --glsl 320es,410 --msl 12 --tess-mode triangles simpletess.tesc -o simpletess.tesc.qsb +qsb --glsl 320es,410 --msl 12 --tess-vertex-count 3 simpletess.tese -o simpletess.tese.qsb +qsb --glsl 320es,410 --msl 12 simpletess.frag -o simpletess.frag.qsb diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.frag b/tests/auto/gui/rhi/qrhi/data/simpletess.frag new file mode 100644 index 0000000000..375587662f --- /dev/null +++ b/tests/auto/gui/rhi/qrhi/data/simpletess.frag @@ -0,0 +1,10 @@ +#version 440 + +layout(location = 0) in vec3 v_color; + +layout(location = 0) out vec4 fragColor; + +void main() +{ + fragColor = vec4(v_color, 1.0); +} diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.frag.qsb b/tests/auto/gui/rhi/qrhi/data/simpletess.frag.qsb new file mode 100644 index 0000000000..0f42103ac5 Binary files /dev/null and b/tests/auto/gui/rhi/qrhi/data/simpletess.frag.qsb differ diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.tesc b/tests/auto/gui/rhi/qrhi/data/simpletess.tesc new file mode 100644 index 0000000000..e192fc77c7 --- /dev/null +++ b/tests/auto/gui/rhi/qrhi/data/simpletess.tesc @@ -0,0 +1,22 @@ +#version 440 + +layout(vertices = 3) out; + +layout(location = 0) in vec3 inColor[]; +layout(location = 0) out vec3 outColor[]; +layout(location = 1) patch out float a_per_patch_output_variable; + +void main() +{ + if (gl_InvocationID == 0) { + gl_TessLevelOuter[0] = 4.0; + gl_TessLevelOuter[1] = 4.0; + gl_TessLevelOuter[2] = 4.0; + + gl_TessLevelInner[0] = 4.0; + } + + gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; + outColor[gl_InvocationID] = inColor[gl_InvocationID]; + a_per_patch_output_variable = 1.0; +} diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.tesc.qsb b/tests/auto/gui/rhi/qrhi/data/simpletess.tesc.qsb new file mode 100644 index 0000000000..8c98d92c46 Binary files /dev/null and b/tests/auto/gui/rhi/qrhi/data/simpletess.tesc.qsb differ diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.tese b/tests/auto/gui/rhi/qrhi/data/simpletess.tese new file mode 100644 index 0000000000..17b348635a --- /dev/null +++ b/tests/auto/gui/rhi/qrhi/data/simpletess.tese @@ -0,0 +1,17 @@ +#version 440 + +layout(triangles, fractional_odd_spacing, ccw) in; + +layout(location = 0) in vec3 inColor[]; +layout(location = 0) out vec3 outColor; +layout(location = 1) patch in float a_per_patch_output_variable; + +layout(std140, binding = 0) uniform buf { + mat4 mvp; +}; + +void main() +{ + gl_Position = mvp * ((gl_TessCoord.x * gl_in[0].gl_Position) + (gl_TessCoord.y * gl_in[1].gl_Position) + (gl_TessCoord.z * gl_in[2].gl_Position)); + outColor = gl_TessCoord.x * inColor[0] + gl_TessCoord.y * inColor[1] + gl_TessCoord.z * inColor[2] * a_per_patch_output_variable; +} diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.tese.qsb b/tests/auto/gui/rhi/qrhi/data/simpletess.tese.qsb new file mode 100644 index 0000000000..8aa7632717 Binary files /dev/null and b/tests/auto/gui/rhi/qrhi/data/simpletess.tese.qsb differ diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.vert b/tests/auto/gui/rhi/qrhi/data/simpletess.vert new file mode 100644 index 0000000000..3838d2f3bb --- /dev/null +++ b/tests/auto/gui/rhi/qrhi/data/simpletess.vert @@ -0,0 +1,12 @@ +#version 440 + +layout(location = 0) in vec3 position; +layout(location = 1) in vec3 color; + +layout(location = 0) out vec3 v_color; + +void main() +{ + gl_Position = vec4(position, 1.0); + v_color = color; +} diff --git a/tests/auto/gui/rhi/qrhi/data/simpletess.vert.qsb b/tests/auto/gui/rhi/qrhi/data/simpletess.vert.qsb new file mode 100644 index 0000000000..ee90983e0b Binary files /dev/null and b/tests/auto/gui/rhi/qrhi/data/simpletess.vert.qsb differ -- cgit v1.2.3