From cb59ef10320e9db95548d9f1586ed7ee7ebafc78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 2 Jun 2020 12:19:38 +0200 Subject: OCIO: GLSL: Avoid undefined behavior Set ubo binding after shaderinterface creation as GPU_shaderinterface_create will call glUniformBlockBinding. --- intern/opencolorio/ocio_impl_glsl.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'intern/opencolorio/ocio_impl_glsl.cc') diff --git a/intern/opencolorio/ocio_impl_glsl.cc b/intern/opencolorio/ocio_impl_glsl.cc index 87769a647f6..43416f734c5 100644 --- a/intern/opencolorio/ocio_impl_glsl.cc +++ b/intern/opencolorio/ocio_impl_glsl.cc @@ -264,14 +264,14 @@ static void updateGLSLShader(OCIO_GLSLShader *shader, glUseProgram(shader->program); - /* Set UBO binding location. */ - GLuint index = glGetUniformBlockIndex(shader->program, "OCIO_GLSLCurveMappingParameters"); - glUniformBlockBinding(shader->program, index, UBO_BIND_LOC); - /* TODO(fclem) Remove this. Make caller always assume viewport space and * specify texco via vertex attribs. */ shader->interface = GPU_shaderinterface_create(shader->program); + /* Set UBO binding location. */ + GLuint index = glGetUniformBlockIndex(shader->program, "OCIO_GLSLCurveMappingParameters"); + glUniformBlockBinding(shader->program, index, UBO_BIND_LOC); + /* Set texture bind point uniform once. This is saved by the shader. */ glUniform1i(glGetUniformLocation(shader->program, "image_texture"), 0); glUniform1i(glGetUniformLocation(shader->program, "lut3d_texture"), 2); -- cgit v1.2.3