diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-01-05 23:36:21 +0100 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2020-01-24 21:43:31 +0100 |
commit | 037ea431ceb93e93274fdcf9fb724819639d04fd (patch) | |
tree | 7357dac5799959d2dc7dbe78346cb8cbd1a5400b /src/video_core/shader/node.h | |
parent | Shader_IR: Setup Indexed Samplers on the IR (diff) | |
download | yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.tar yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.tar.gz yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.tar.bz2 yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.tar.lz yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.tar.xz yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.tar.zst yuzu-037ea431ceb93e93274fdcf9fb724819639d04fd.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/shader/node.h | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/video_core/shader/node.h b/src/video_core/shader/node.h index b370df8f9..2f29b9506 100644 --- a/src/video_core/shader/node.h +++ b/src/video_core/shader/node.h @@ -240,15 +240,15 @@ class Sampler { public: /// This constructor is for bound samplers constexpr explicit Sampler(u32 index, u32 offset, Tegra::Shader::TextureType type, - bool is_array, bool is_shadow, bool is_buffer) + bool is_array, bool is_shadow, bool is_buffer, bool is_indexed) : index{index}, offset{offset}, type{type}, is_array{is_array}, is_shadow{is_shadow}, - is_buffer{is_buffer} {} + is_buffer{is_buffer}, is_indexed{is_indexed} {} /// This constructor is for bindless samplers constexpr explicit Sampler(u32 index, u32 offset, u32 buffer, Tegra::Shader::TextureType type, - bool is_array, bool is_shadow, bool is_buffer) + bool is_array, bool is_shadow, bool is_buffer, bool is_indexed) : index{index}, offset{offset}, buffer{buffer}, type{type}, is_array{is_array}, - is_shadow{is_shadow}, is_buffer{is_buffer}, is_bindless{true} {} + is_shadow{is_shadow}, is_buffer{is_buffer}, is_bindless{true}, is_indexed{is_indexed} {} constexpr u32 GetIndex() const { return index; @@ -282,16 +282,30 @@ public: return is_bindless; } + constexpr bool IsIndexed() const { + return is_indexed; + } + + constexpr u32 Size() const { + return size; + } + + void SetSize(u32 new_size) { + size = new_size; + } + private: u32 index{}; ///< Emulated index given for the this sampler. u32 offset{}; ///< Offset in the const buffer from where the sampler is being read. u32 buffer{}; ///< Buffer where the bindless sampler is being read (unused on bound samplers). + u32 size{}; ///< Size of the sampler if indexed. Tegra::Shader::TextureType type{}; ///< The type used to sample this texture (Texture2D, etc) bool is_array{}; ///< Whether the texture is being sampled as an array texture or not. bool is_shadow{}; ///< Whether the texture is being sampled as a depth texture or not. bool is_buffer{}; ///< Whether the texture is a texture buffer without sampler. bool is_bindless{}; ///< Whether this sampler belongs to a bindless texture or not. + bool is_indexed{}; ///< Whether this sampler is an indexed array of textures. }; /// Represents a tracked bindless sampler into a direct const buffer |