[Bf-blender-cvs] [5f414234dde] master: GPUState: Use state setters inside selection code

Clément Foucault noreply at git.blender.org
Thu Aug 20 17:02:47 CEST 2020


Commit: 5f414234ddea6815136b1cae8eb309ee2b67b172
Author: Clément Foucault
Date:   Thu Aug 20 16:57:38 2020 +0200
Branches: master
https://developer.blender.org/rB5f414234ddea6815136b1cae8eb309ee2b67b172

GPUState: Use state setters inside selection code

This fixes T79945 Gizmos don't work in Edit Mode

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

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

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

diff --git a/source/blender/gpu/intern/gpu_select_pick.c b/source/blender/gpu/intern/gpu_select_pick.c
index c1a91490f5e..f7fd1faeb1e 100644
--- a/source/blender/gpu/intern/gpu_select_pick.c
+++ b/source/blender/gpu/intern/gpu_select_pick.c
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "GPU_framebuffer.h"
 #include "GPU_glew.h"
 #include "GPU_immediate.h"
 #include "GPU_select.h"
@@ -317,12 +318,11 @@ void gpu_select_pick_begin(uint (*buffer)[4], uint bufsize, const rcti *input, c
     /* disable writing to the framebuffer */
     GPU_color_mask(false, false, false, false);
 
-    glEnable(GL_DEPTH_TEST);
-    glDepthMask(GL_TRUE);
+    GPU_depth_mask(true);
     /* Always use #GL_LEQUAL even though GPU_SELECT_PICK_ALL always clears the buffer. This is
      * because individual objects themselves might have sections that overlap and we need these
      * to have the correct distance information. */
-    glDepthFunc(GL_LEQUAL);
+    GPU_depth_test(GPU_DEPTH_LESS_EQUAL);
 
     float viewport[4];
     GPU_viewport_size_get_f(viewport);
@@ -339,7 +339,7 @@ void gpu_select_pick_begin(uint (*buffer)[4], uint bufsize, const rcti *input, c
 
     /* It's possible we don't want to clear depth buffer,
      * so existing elements are masked by current z-buffer. */
-    glClear(GL_DEPTH_BUFFER_BIT);
+    GPU_clear(GPU_DEPTH_BIT);
 
     /* scratch buffer (read new values here) */
     ps->gl.rect_depth_test = depth_buf_malloc(rect_len);
@@ -519,7 +519,7 @@ bool gpu_select_pick_load_id(uint id, bool end)
 
       if (g_pick_state.mode == GPU_SELECT_PICK_ALL) {
         /* we want new depths every time */
-        glClear(GL_DEPTH_BUFFER_BIT);
+        GPU_clear(GPU_DEPTH_BIT);
       }
     }
   }
diff --git a/source/blender/gpu/intern/gpu_select_sample_query.c b/source/blender/gpu/intern/gpu_select_sample_query.c
index 334f4ba927a..7e41faf8678 100644
--- a/source/blender/gpu/intern/gpu_select_sample_query.c
+++ b/source/blender/gpu/intern/gpu_select_sample_query.c
@@ -26,6 +26,7 @@
 
 #include <stdlib.h>
 
+#include "GPU_framebuffer.h"
 #include "GPU_glew.h"
 #include "GPU_select.h"
 #include "GPU_state.h"
@@ -112,20 +113,17 @@ void gpu_select_query_begin(
   if (mode == GPU_SELECT_ALL) {
     /* glQueries on Windows+Intel drivers only works with depth testing turned on.
      * See T62947 for details */
-    glEnable(GL_DEPTH_TEST);
-    glDepthFunc(GL_ALWAYS);
-    glDepthMask(GL_TRUE);
+    GPU_depth_test(GPU_DEPTH_ALWAYS);
+    GPU_depth_mask(true);
   }
   else if (mode == GPU_SELECT_NEAREST_FIRST_PASS) {
-    glClear(GL_DEPTH_BUFFER_BIT);
-    glEnable(GL_DEPTH_TEST);
-    glDepthMask(GL_TRUE);
-    glDepthFunc(GL_LEQUAL);
+    GPU_clear(GPU_DEPTH_BIT);
+    GPU_depth_test(GPU_DEPTH_LESS_EQUAL);
+    GPU_depth_mask(true);
   }
   else if (mode == GPU_SELECT_NEAREST_SECOND_PASS) {
-    glEnable(GL_DEPTH_TEST);
-    glDepthMask(GL_FALSE);
-    glDepthFunc(GL_EQUAL);
+    GPU_depth_test(GPU_DEPTH_EQUAL);
+    GPU_depth_mask(false);
   }
 }



More information about the Bf-blender-cvs mailing list