aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/const_buffer_locker.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-02-01 20:41:40 -0500
committerGitHub <noreply@github.com>2020-02-01 20:41:40 -0500
commitb5bbe7e752d5d36839a86638bfaa4b4c348497cd (patch)
treeb16b3f8ce5ec6233f9f822ad56418d74f0cd47ae /src/video_core/shader/const_buffer_locker.cpp
parent2916c1bc2588cc189080dc87818f57875ae1d4a4 (diff)
parentbb8eb15d392d69693f8cda0427669d011e23db97 (diff)
Merge pull request #3282 from FernandoS27/indexed-samplers
Partially implement Indexed samplers in general and specific code in GLSL
Diffstat (limited to 'src/video_core/shader/const_buffer_locker.cpp')
-rw-r--r--src/video_core/shader/const_buffer_locker.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/video_core/shader/const_buffer_locker.cpp b/src/video_core/shader/const_buffer_locker.cpp
index a4a0319eb..0638be8cb 100644
--- a/src/video_core/shader/const_buffer_locker.cpp
+++ b/src/video_core/shader/const_buffer_locker.cpp
@@ -66,6 +66,18 @@ std::optional<Tegra::Engines::SamplerDescriptor> ConstBufferLocker::ObtainBindle
return value;
}
+std::optional<u32> ConstBufferLocker::ObtainBoundBuffer() {
+ if (bound_buffer_saved) {
+ return bound_buffer;
+ }
+ if (!engine) {
+ return std::nullopt;
+ }
+ bound_buffer_saved = true;
+ bound_buffer = engine->GetBoundBuffer();
+ return bound_buffer;
+}
+
void ConstBufferLocker::InsertKey(u32 buffer, u32 offset, u32 value) {
keys.insert_or_assign({buffer, offset}, value);
}
@@ -78,6 +90,11 @@ void ConstBufferLocker::InsertBindlessSampler(u32 buffer, u32 offset, SamplerDes
bindless_samplers.insert_or_assign({buffer, offset}, sampler);
}
+void ConstBufferLocker::SetBoundBuffer(u32 buffer) {
+ bound_buffer_saved = true;
+ bound_buffer = buffer;
+}
+
bool ConstBufferLocker::IsConsistent() const {
if (!engine) {
return false;