|
|
@@ -0,0 +1,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;
|
|
|
+ }
|
|
|
+}
|