diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-07-08 01:36:42 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-07-08 01:42:55 +0200 |
commit | c9d886c84e4102f7b9c464c704eecb61d37b3df4 (patch) | |
tree | c26dadd5ead8fb3d9b8241cc8b9d6f97dd9d98f4 /src/video_core/shader | |
parent | Merge pull request #2694 from FearlessTobi/patch-1 (diff) | |
download | yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.tar yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.tar.gz yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.tar.bz2 yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.tar.lz yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.tar.xz yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.tar.zst yuzu-c9d886c84e4102f7b9c464c704eecb61d37b3df4.zip |
Diffstat (limited to 'src/video_core/shader')
-rw-r--r-- | src/video_core/shader/shader_ir.cpp | 16 | ||||
-rw-r--r-- | src/video_core/shader/shader_ir.h | 15 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp index 11b545cca..fd80dd116 100644 --- a/src/video_core/shader/shader_ir.cpp +++ b/src/video_core/shader/shader_ir.cpp @@ -89,6 +89,22 @@ Node ShaderIR::GetPhysicalInputAttribute(Tegra::Shader::Register physical_addres } Node ShaderIR::GetOutputAttribute(Attribute::Index index, u64 element, Node buffer) { + if (index == Attribute::Index::LayerViewportPointSize) { + switch (element) { + case 0: + UNIMPLEMENTED(); + break; + case 1: + uses_layer = true; + break; + case 2: + uses_viewport_index = true; + break; + case 3: + uses_point_size = true; + break; + } + } if (index == Attribute::Index::ClipDistances0123 || index == Attribute::Index::ClipDistances4567) { const auto clip_index = diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h index e22548208..a656761ea 100644 --- a/src/video_core/shader/shader_ir.h +++ b/src/video_core/shader/shader_ir.h @@ -121,6 +121,18 @@ public: return static_cast<std::size_t>(coverage_end * sizeof(u64)); } + bool UsesLayer() const { + return uses_layer; + } + + bool UsesViewportIndex() const { + return uses_viewport_index; + } + + bool UsesPointSize() const { + return uses_point_size; + } + bool HasPhysicalAttributes() const { return uses_physical_attributes; } @@ -343,6 +355,9 @@ private: std::set<Image> used_images; std::array<bool, Tegra::Engines::Maxwell3D::Regs::NumClipDistances> used_clip_distances{}; std::map<GlobalMemoryBase, GlobalMemoryUsage> used_global_memory; + bool uses_layer{}; + bool uses_viewport_index{}; + bool uses_point_size{}; bool uses_physical_attributes{}; // Shader uses AL2P or physical attribute read/writes Tegra::Shader::Header header; |