From 53a806f6dffb2a778e383a82c3d0cdb6e9d9d552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 1 Sep 2020 02:41:29 +0200 Subject: GPU: Move UBO binding validation to GL backend This also make the validation quicker by tracking the currently bound slots. --- source/blender/gpu/opengl/gl_uniform_buffer.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source/blender/gpu/opengl/gl_uniform_buffer.cc') diff --git a/source/blender/gpu/opengl/gl_uniform_buffer.cc b/source/blender/gpu/opengl/gl_uniform_buffer.cc index 5115034639c..0e0c64e5c60 100644 --- a/source/blender/gpu/opengl/gl_uniform_buffer.cc +++ b/source/blender/gpu/opengl/gl_uniform_buffer.cc @@ -110,6 +110,11 @@ void GLUniformBuf::bind(int slot) slot_ = slot; glBindBufferBase(GL_UNIFORM_BUFFER, slot_, ubo_id_); + +#ifdef DEBUG + BLI_assert(slot < 16); + static_cast(GPU_context_active_get())->bound_ubo_slots |= 1 << slot; +#endif } void GLUniformBuf::unbind(void) @@ -117,6 +122,8 @@ void GLUniformBuf::unbind(void) #ifdef DEBUG /* NOTE: This only unbinds the last bound slot. */ glBindBufferBase(GL_UNIFORM_BUFFER, slot_, 0); + /* Hope that the context did not change. */ + static_cast(GPU_context_active_get())->bound_ubo_slots &= ~(1 << slot_); #endif slot_ = 0; } -- cgit v1.2.3