[Bf-blender-cvs] [e51c428be64] master: GPUSelect: Avoid assert caused by clearing without a depth mask

Clément Foucault noreply at git.blender.org
Tue Aug 25 15:03:18 CEST 2020


Commit: e51c428be64feef0877a957b483aa71e5753b29c
Author: Clément Foucault
Date:   Tue Aug 25 12:15:15 2020 +0200
Branches: master
https://developer.blender.org/rBe51c428be64feef0877a957b483aa71e5753b29c

GPUSelect: Avoid assert caused by clearing without a depth mask

This should not cause any problem since the depth test is required
in order to draw to the depth buffer and this is not altered by
this change.

To be on the safe side, we still restor the mask after altering it.

===================================================================

M	source/blender/gpu/intern/gpu_select_pick.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_select_pick.c b/source/blender/gpu/intern/gpu_select_pick.c
index 5ee97134015..c3ccb68a998 100644
--- a/source/blender/gpu/intern/gpu_select_pick.c
+++ b/source/blender/gpu/intern/gpu_select_pick.c
@@ -518,8 +518,13 @@ bool gpu_select_pick_load_id(uint id, bool end)
       SWAP(DepthBufCache *, ps->gl.rect_depth, ps->gl.rect_depth_test);
 
       if (g_pick_state.mode == GPU_SELECT_PICK_ALL) {
+        /* (fclem) This is to be on the safe side. I don't know if this is required. */
+        bool prev_depth_mask = GPU_depth_mask_get();
         /* we want new depths every time */
+        GPU_depth_mask(true);
         GPU_clear_depth(1.0f);
+
+        GPU_depth_mask(prev_depth_mask);
       }
     }
   }



More information about the Bf-blender-cvs mailing list