diff options
author | Billy Laws <blaws05@gmail.com> | 2023-02-18 18:23:36 +0000 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2023-06-03 00:05:31 -0700 |
commit | 158a1896ec91c46a43fa3172fa472e6fc7c9eb05 (patch) | |
tree | c9fefdf4e2a3f948d08bc32211675f19d936139e /src/shader_recompiler/backend/spirv/spirv_emit_context.h | |
parent | 206f1304d61535224d442a155f9cc356bf95baf3 (diff) |
Implement scaled vertex buffer format emulation
These formats are unsupported by mobile GPUs so they need to be emulated in shaders instead.
Diffstat (limited to 'src/shader_recompiler/backend/spirv/spirv_emit_context.h')
-rw-r--r-- | src/shader_recompiler/backend/spirv/spirv_emit_context.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.h b/src/shader_recompiler/backend/spirv/spirv_emit_context.h index 768a4fbb5a..e63330f112 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.h +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.h @@ -95,6 +95,20 @@ struct StorageDefinitions { Id U32x4{}; }; +enum class InputGenericLoadOp { + None, + Bitcast, + SToF, + UToF, +}; + +struct InputGenericInfo { + Id id; + Id pointer_type; + Id component_type; + InputGenericLoadOp load_op; +}; + struct GenericElementInfo { Id id{}; u32 first_element{}; @@ -283,7 +297,7 @@ public: bool need_input_position_indirect{}; Id input_position{}; - std::array<Id, 32> input_generics{}; + std::array<InputGenericInfo, 32> input_generics{}; Id output_point_size{}; Id output_position{}; |