emit_context.cpp 1.1 KB

123456789101112131415161718192021222324252627282930
  1. // Copyright 2021 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "shader_recompiler/backend/glasm/emit_context.h"
  5. #include "shader_recompiler/frontend/ir/program.h"
  6. namespace Shader::Backend::GLASM {
  7. EmitContext::EmitContext(IR::Program& program) {
  8. // FIXME: Temporary partial implementation
  9. u32 cbuf_index{};
  10. for (const auto& desc : program.info.constant_buffer_descriptors) {
  11. if (desc.count != 1) {
  12. throw NotImplementedException("Constant buffer descriptor array");
  13. }
  14. Add("CBUFFER c{}[]={{program.buffer[{}]}};", desc.index, cbuf_index);
  15. ++cbuf_index;
  16. }
  17. for (const auto& desc : program.info.storage_buffers_descriptors) {
  18. if (desc.count != 1) {
  19. throw NotImplementedException("Storage buffer descriptor array");
  20. }
  21. }
  22. if (const size_t num = program.info.storage_buffers_descriptors.size(); num > 0) {
  23. Add("PARAM c[{}]={{program.local[0..{}]}};", num, num - 1);
  24. }
  25. }
  26. } // namespace Shader::Backend::GLASM