summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_state.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-04-14 18:45:23 +0200
committerSubv <subv2112@gmail.com>2018-04-15 05:54:23 +0200
commit1957640ea25b34bec9e356a06dadf5937933c4ef (patch)
tree62fb25a03d53e032bfada62a525e2d23be1570e8 /src/video_core/renderer_opengl/gl_state.cpp
parentGPU: Added a function to determine whether a shader stage is enabled or not. (diff)
downloadyuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.tar
yuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.tar.gz
yuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.tar.bz2
yuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.tar.lz
yuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.tar.xz
yuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.tar.zst
yuzu-1957640ea25b34bec9e356a06dadf5937933c4ef.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_state.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index 6da3a7781..7b8a15ed2 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -202,6 +202,20 @@ void OpenGLState::Apply() const {
}
}
+ // Constbuffers
+ for (u32 stage = 0; stage < draw.const_buffers.size(); ++stage) {
+ for (u32 buffer_id = 0; buffer_id < draw.const_buffers[stage].size(); ++buffer_id) {
+ auto& current = cur_state.draw.const_buffers[stage][buffer_id];
+ auto& new_state = draw.const_buffers[stage][buffer_id];
+ if (current.enabled != new_state.enabled || current.bindpoint != new_state.bindpoint ||
+ current.ssbo != new_state.ssbo) {
+ if (new_state.enabled) {
+ glBindBufferBase(GL_SHADER_STORAGE_BUFFER, new_state.bindpoint, new_state.ssbo);
+ }
+ }
+ }
+ }
+
// Lighting LUTs
if (lighting_lut.texture_buffer != cur_state.lighting_lut.texture_buffer) {
glActiveTexture(TextureUnits::LightingLUT.Enum());