diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-07-15 22:28:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-15 22:28:07 +0200 |
commit | 1bdb59fc6e52ac9d2c2432511fe7524994cc4f55 (patch) | |
tree | bcef764c59b000dba9eb040281799bf0152cb363 /src/video_core/shader | |
parent | Merge pull request #2705 from FernandoS27/tex-cache-fixes (diff) | |
parent | gl_shader_decompiler: Fix gl_PointSize redeclaration (diff) | |
download | yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.tar yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.tar.gz yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.tar.bz2 yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.tar.lz yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.tar.xz yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.tar.zst yuzu-1bdb59fc6e52ac9d2c2432511fe7524994cc4f55.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 5994bfc4e..caa409788 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 6145f0a70..03c888def 100644 --- a/src/video_core/shader/shader_ir.h +++ b/src/video_core/shader/shader_ir.h @@ -115,6 +115,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; } @@ -346,6 +358,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; |