summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/shaders/quad_array.comp
blob: 5a5703308d113aa70507c538fb63ef02d838f4ba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Copyright 2019 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.

/*
 * Build instructions:
 * $ glslangValidator -V $THIS_FILE -o output.spv
 * $ spirv-opt -O --strip-debug output.spv -o optimized.spv
 * $ xxd -i optimized.spv
 *
 * Then copy that bytecode to the C++ file
 */

#version 460 core

layout (local_size_x = 1024) in;

layout (std430, set = 0, binding = 0) buffer OutputBuffer {
    uint output_indexes[];
};

layout (push_constant) uniform PushConstants {
    uint first;
};

void main() {
    uint primitive = gl_GlobalInvocationID.x;
    if (primitive * 6 >= output_indexes.length()) {
        return;
    }

    const uint quad_map[6] = uint[](0, 1, 2, 0, 2, 3);
    for (uint vertex = 0; vertex < 6; ++vertex) {
        uint index = first + primitive * 4 + quad_map[vertex];
        output_indexes[primitive * 6 + vertex] = index;
    }
}