summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/spirv
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-03-30 08:58:46 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:25 +0200
commit7a1c14269e20cffeed780f388c90a86f8bba1a92 (patch)
tree3a9807a9ef0d606840fdf645295764213c9cebb2 /src/shader_recompiler/backend/spirv
parentshader: Add PointCoord attribute (diff)
downloadyuzu-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.cpp2
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_special.cpp4
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));
+ }
}
}