From a55860bf495403e810e0e1b289749432071cbcde Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 27 Jan 2025 11:52:32 +0100 Subject: [PATCH] glgsg: Fix memory barrier for extract_shader_buffer_data --- panda/src/glstuff/glGraphicsStateGuardian_src.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index 9988da71d0..87aeb36639 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -3207,7 +3207,7 @@ reset() { _max_image_units = 0; #ifndef OPENGLES_1 #ifdef OPENGLES - if (is_at_least_gles_version(3, 1) && gl_immutable_texture_storage) { + if (is_at_least_gles_version(3, 1)) { #else if (is_at_least_gl_version(4, 2) || has_extension("GL_ARB_shader_image_load_store")) { #endif @@ -7516,7 +7516,6 @@ release_shader_buffers(const pvector &contexts) { */ bool CLP(GraphicsStateGuardian):: extract_shader_buffer_data(ShaderBuffer *buffer, vector_uchar &data) { - GLuint index = 0; BufferContext *bc = buffer->prepare_now(get_prepared_objects(), this); if (bc == nullptr || !bc->is_of_type(CLP(BufferContext)::get_class_type())) { return false; @@ -7525,6 +7524,10 @@ extract_shader_buffer_data(ShaderBuffer *buffer, vector_uchar &data) { data.resize(buffer->get_data_size_bytes()); + if (_glMemoryBarrier != nullptr) { + _glMemoryBarrier(GL_BUFFER_UPDATE_BARRIER_BIT); + } + _glBindBuffer(GL_SHADER_STORAGE_BUFFER, gbc->_index); _glGetBufferSubData(GL_SHADER_STORAGE_BUFFER, 0, data.size(), &data[0]);