From f23bf4cb109cb8f39f873c4f80acbec3f33b098c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 8 Oct 2020 17:58:38 +0200 Subject: Revert "BGL: Workaround broken bgl usage caused by GPU refactor" This reverts commit f12b0373f322b710b9fa5cebb67bdf363ff90e9f. --- source/blender/editors/space_api/spacetypes.c | 2 +- source/blender/gpu/GPU_state.h | 5 +--- source/blender/gpu/intern/gpu_state.cc | 35 +++----------------------- source/blender/gpu/intern/gpu_state_private.hh | 1 - source/blender/gpu/opengl/gl_debug.cc | 2 +- source/blender/gpu/opengl/gl_state.cc | 12 +++------ source/blender/python/generic/bgl.c | 3 --- 7 files changed, 10 insertions(+), 50 deletions(-) (limited to 'source/blender') diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c index b89c8cb2193..2a18ffafc6c 100644 --- a/source/blender/editors/space_api/spacetypes.c +++ b/source/blender/editors/space_api/spacetypes.c @@ -281,7 +281,7 @@ void ED_region_draw_cb_draw(const bContext *C, ARegion *region, int type) } if (has_drawn_something) { /* This is needed until we get rid of BGL which can change the states we are tracking. */ - GPU_bgl_end(); + GPU_force_state(); } } diff --git a/source/blender/gpu/GPU_state.h b/source/blender/gpu/GPU_state.h index 471edfb7b8f..04cf7bc54ba 100644 --- a/source/blender/gpu/GPU_state.h +++ b/source/blender/gpu/GPU_state.h @@ -161,10 +161,7 @@ float GPU_line_width_get(void); void GPU_flush(void); void GPU_finish(void); void GPU_apply_state(void); - -void GPU_bgl_start(void); -void GPU_bgl_end(void); -bool GPU_bgl_get(void); +void GPU_force_state(void); void GPU_memory_barrier(eGPUBarrier barrier); diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc index 44cc11155bb..44ad9cc9a84 100644 --- a/source/blender/gpu/intern/gpu_state.cc +++ b/source/blender/gpu/intern/gpu_state.cc @@ -317,39 +317,10 @@ void GPU_apply_state(void) Context::get()->state_manager->apply_state(); } -/** \} */ - -/* -------------------------------------------------------------------- */ -/** \name BGL workaround - * - * bgl makes direct GL calls that makes our state tracking out of date. - * This flag make it so that the pyGPU calls will not override the state set by - * bgl functions. - * \{ */ - -void GPU_bgl_start(void) -{ - StateManager &state_manager = *(Context::get()->state_manager); - if (state_manager.use_bgl == false) { - /* Expected by many addons (see T80169, T81289). - * This will reset the blend function. */ - GPU_blend(GPU_BLEND_NONE); - state_manager.apply_state(); - state_manager.use_bgl = true; - } -} - -void GPU_bgl_end(void) -{ - StateManager &state_manager = *(Context::get()->state_manager); - state_manager.use_bgl = false; - /* Resync state tracking. */ - state_manager.force_state(); -} - -bool GPU_bgl_get(void) +/* Will set all the states regardless of the current ones. */ +void GPU_force_state(void) { - return Context::get()->state_manager->use_bgl; + Context::get()->state_manager->force_state(); } /** \} */ diff --git a/source/blender/gpu/intern/gpu_state_private.hh b/source/blender/gpu/intern/gpu_state_private.hh index db1747127d4..d93556a1058 100644 --- a/source/blender/gpu/intern/gpu_state_private.hh +++ b/source/blender/gpu/intern/gpu_state_private.hh @@ -153,7 +153,6 @@ class StateManager { public: GPUState state; GPUStateMutable mutable_state; - bool use_bgl = false; public: StateManager(); diff --git a/source/blender/gpu/opengl/gl_debug.cc b/source/blender/gpu/opengl/gl_debug.cc index b2b05124463..797f9ff404c 100644 --- a/source/blender/gpu/opengl/gl_debug.cc +++ b/source/blender/gpu/opengl/gl_debug.cc @@ -200,7 +200,7 @@ void check_gl_error(const char *info) void check_gl_resources(const char *info) { - if (!(G.debug & G_DEBUG_GPU) || GPU_bgl_get()) { + if (!(G.debug & G_DEBUG_GPU)) { return; } diff --git a/source/blender/gpu/opengl/gl_state.cc b/source/blender/gpu/opengl/gl_state.cc index 27c9b501add..cd24fa0e0e4 100644 --- a/source/blender/gpu/opengl/gl_state.cc +++ b/source/blender/gpu/opengl/gl_state.cc @@ -73,17 +73,13 @@ GLStateManager::GLStateManager(void) : StateManager() void GLStateManager::apply_state(void) { - if (!this->use_bgl) { - this->set_state(this->state); - this->set_mutable_state(this->mutable_state); - this->texture_bind_apply(); - this->image_bind_apply(); - } - /* This is needed by gpu_py_offscreen. */ + this->set_state(this->state); + this->set_mutable_state(this->mutable_state); + this->texture_bind_apply(); + this->image_bind_apply(); active_fb->apply_state(); }; -/* Will set all the states regardless of the current ones. */ void GLStateManager::force_state(void) { /* Little exception for clip distances since they need to keep the old count correct. */ diff --git a/source/blender/python/generic/bgl.c b/source/blender/python/generic/bgl.c index e9a58288c5e..8a5c4f4a11b 100644 --- a/source/blender/python/generic/bgl.c +++ b/source/blender/python/generic/bgl.c @@ -29,8 +29,6 @@ #include "BLI_utildefines.h" #include "MEM_guardedalloc.h" -#include "GPU_state.h" - #include "../generic/py_capi_utils.h" #include "glew-mx.h" @@ -1111,7 +1109,6 @@ static PyObject *Buffer_repr(Buffer *self) if (!PyArg_ParseTuple(args, arg_str arg_list, arg_ref arg_list)) { \ return NULL; \ } \ - GPU_bgl_start(); \ ret_set_##ret gl##funcname(arg_var arg_list); \ ret_ret_##ret; \ } -- cgit v1.2.3