diff options
| author | Fernando S <fsahmkow27@gmail.com> | 2024-02-02 15:08:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-02 15:08:06 +0100 |
| commit | 58cf2ee1f93ebfa0e6b25b71d349ad2ad7895f53 (patch) | |
| tree | a6efdfb4de7a7bac87926f6f1e93e7275634c731 /src/video_core/host_shaders/vulkan_present.vert | |
| parent | 3212bf529428f4dc45ccce550c956276557c52fb (diff) | |
| parent | 2c421a7046c5ff1fdb8319f097a89a331907baf6 (diff) | |
Merge pull request #12761 from liamwhite/mp-composite
video_core: rewrite presentation for layer composition
Diffstat (limited to 'src/video_core/host_shaders/vulkan_present.vert')
| -rw-r--r-- | src/video_core/host_shaders/vulkan_present.vert | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/video_core/host_shaders/vulkan_present.vert b/src/video_core/host_shaders/vulkan_present.vert index 89dc80468..249c9675a 100644 --- a/src/video_core/host_shaders/vulkan_present.vert +++ b/src/video_core/host_shaders/vulkan_present.vert @@ -3,16 +3,37 @@ #version 460 core -layout (location = 0) in vec2 vert_position; -layout (location = 1) in vec2 vert_tex_coord; - layout (location = 0) out vec2 frag_tex_coord; -layout (set = 0, binding = 0) uniform MatrixBlock { +struct ScreenRectVertex { + vec2 position; + vec2 tex_coord; +}; + +layout (push_constant) uniform PushConstants { mat4 modelview_matrix; + ScreenRectVertex vertices[4]; }; +// Vulkan spec 15.8.1: +// Any member of a push constant block that is declared as an +// array must only be accessed with dynamically uniform indices. +ScreenRectVertex GetVertex(int index) { + switch (index) { + case 0: + default: + return vertices[0]; + case 1: + return vertices[1]; + case 2: + return vertices[2]; + case 3: + return vertices[3]; + } +} + void main() { - gl_Position = modelview_matrix * vec4(vert_position, 0.0, 1.0); - frag_tex_coord = vert_tex_coord; + ScreenRectVertex vertex = GetVertex(gl_VertexIndex); + gl_Position = modelview_matrix * vec4(vertex.position, 0.0, 1.0); + frag_tex_coord = vertex.tex_coord; } |
