vulkan_uint8.comp 826 B

123456789101112131415161718192021222324252627282930
  1. // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #version 460 core
  4. #extension GL_EXT_shader_16bit_storage : require
  5. #extension GL_EXT_shader_8bit_storage : require
  6. layout (local_size_x = 1024) in;
  7. layout (std430, set = 0, binding = 0) readonly buffer InputBuffer {
  8. uint8_t input_indexes[];
  9. };
  10. layout (std430, set = 0, binding = 1) writeonly buffer OutputBuffer {
  11. uint16_t output_indexes[];
  12. };
  13. uint AssembleIndex(uint id) {
  14. // Most primitive restart indices are 0xFF
  15. // Hardcode this to 0xFF for now
  16. uint index = uint(input_indexes[id]);
  17. return index == 0xFF ? 0xFFFF : index;
  18. }
  19. void main() {
  20. uint id = gl_GlobalInvocationID.x;
  21. if (id < input_indexes.length()) {
  22. output_indexes[id] = uint16_t(AssembleIndex(id));
  23. }
  24. }