diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-03-30 08:58:46 +0200 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:25 +0200 |
commit | 7a1c14269e20cffeed780f388c90a86f8bba1a92 (patch) | |
tree | 3a9807a9ef0d606840fdf645295764213c9cebb2 /src/shader_recompiler/backend/spirv | |
parent | shader: Add PointCoord attribute (diff) | |
download | yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.tar yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.tar.gz yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.tar.bz2 yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.tar.lz yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.tar.xz yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.tar.zst yuzu-7a1c14269e20cffeed780f388c90a86f8bba1a92.zip |
Diffstat (limited to 'src/shader_recompiler/backend/spirv')
-rw-r--r-- | src/shader_recompiler/backend/spirv/emit_context.cpp | 2 | ||||
-rw-r--r-- | src/shader_recompiler/backend/spirv/emit_spirv_special.cpp | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_context.cpp b/src/shader_recompiler/backend/spirv/emit_context.cpp index 2c93bada5..5cd505d99 100644 --- a/src/shader_recompiler/backend/spirv/emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/emit_context.cpp @@ -495,7 +495,7 @@ void EmitContext::DefineOutputs(const Info& info) { if (info.stores_position || stage == Stage::VertexB) { output_position = DefineOutput(*this, F32[4], spv::BuiltIn::Position); } - if (info.stores_point_size) { + if (info.stores_point_size || profile.fixed_state_point_size) { if (stage == Stage::Fragment) { throw NotImplementedException("Storing PointSize in Fragment stage"); } diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp index 44d2fde02..5f80c189f 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp @@ -17,6 +17,10 @@ void EmitPrologue(EmitContext& ctx) { ctx.OpStore(generic_id, default_vector); } } + if (ctx.profile.fixed_state_point_size) { + const float point_size{*ctx.profile.fixed_state_point_size}; + ctx.OpStore(ctx.output_point_size, ctx.Constant(ctx.F32[1], point_size)); + } } } |