From 8948f73784cb818689ba38aa9ae5008eb3c8290b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 28 Jan 2021 21:16:17 +1100 Subject: Fix T81334: Python view-port drawing depth-test regression Since 216d78687d2b9468b05fb598d1cef0b8424a40d2 the depth function (glDepthFunc) was left in an undefined state for drawing callbacks that use the `bgl` module. This meant enabling depth-test from Python's bgl module also needed to set the depth function (which previously wasn't necessary). Set the depth function as part of GPU_bgl_start --- source/blender/gpu/intern/gpu_state.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/blender/gpu') diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc index 407a8dd6e2b..e158601a25c 100644 --- a/source/blender/gpu/intern/gpu_state.cc +++ b/source/blender/gpu/intern/gpu_state.cc @@ -339,6 +339,20 @@ void GPU_bgl_start() /* Expected by many addons (see T80169, T81289). * This will reset the blend function. */ GPU_blend(GPU_BLEND_NONE); + + /* Equivalent of setting the depth func `glDepthFunc(GL_LEQUAL)` + * Needed since Python scripts may enable depth test. + * Without this block the depth test function is undefined. */ + { + eGPUDepthTest depth_test_real = GPU_depth_test_get(); + eGPUDepthTest depth_test_temp = GPU_DEPTH_LESS_EQUAL; + if (depth_test_real != depth_test_temp) { + GPU_depth_test(depth_test_temp); + state_manager.apply_state(); + GPU_depth_test(depth_test_real); + } + } + state_manager.apply_state(); state_manager.use_bgl = true; } -- cgit v1.2.3