Commit: e442f5af765ca5a6aa05e59899b9d3cfaada0de4
Author: Campbell Barton
Date:   Wed Mar 8 02:54:13 2017 +1100
Branches: temp-select-pick
https://developer.blender.org/rBe442f5af765ca5a6aa05e59899b9d3cfaada0de4

Cleanup, minor fixes

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

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

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

diff --git a/source/blender/gpu/intern/gpu_select.c 
b/source/blender/gpu/intern/gpu_select.c
index 4334f0b30f..f47ba4dcde 100644
--- a/source/blender/gpu/intern/gpu_select.c
+++ b/source/blender/gpu/intern/gpu_select.c
@@ -156,6 +156,7 @@ bool GPU_select_query_check_active(void)
 void GPU_select_cache_begin(void)
 {
        /* validate on GPU_select_begin, clear if not supported */
+       BLI_assert(g_select_state.use_cache == false);
        g_select_state.use_cache = true;
 }
 
@@ -174,6 +175,8 @@ void GPU_select_cache_load_id(void)
 
 void GPU_select_cache_end(void)
 {
+       BLI_assert(g_select_state.use_cache == true);
+
        if (!g_select_state.use_gpu_select) {
                /* pass */
        }
@@ -183,6 +186,7 @@ void GPU_select_cache_end(void)
        else {
                /* pass */
        }
+       g_select_state.use_cache = false;
 }
 
 bool GPU_select_is_cached(void)
diff --git a/source/blender/gpu/intern/gpu_select_pick.c 
b/source/blender/gpu/intern/gpu_select_pick.c
index 0282c745af..c41c85c912 100644
--- a/source/blender/gpu/intern/gpu_select_pick.c
+++ b/source/blender/gpu/intern/gpu_select_pick.c
@@ -136,9 +136,6 @@ typedef struct GPUPickState {
        /* mode of operation */
        char mode;
 
-       unsigned int prev_id;
-       bool is_init;
-
        /* OpenGL drawing, (use_cached == false). */
        struct {
                DepthBufCache *rect_depth;
@@ -147,6 +144,9 @@ typedef struct GPUPickState {
 
                /* Pass to glReadPixels (x,y,w,h) */
                int clip_readpixels[4];
+
+               bool is_init;
+               unsigned int prev_id;
        } gl;
 
        /* Data stored in 'cache' and 'gl' */
@@ -228,6 +228,9 @@ void gpu_select_pick_begin(
                ps->gl.rect_depth_test = depth_buf_malloc(rect_len);
                ps->gl.rect_depth = depth_buf_malloc(rect_len);
 
+               ps->gl.is_init = false;
+               ps->gl.prev_id = 0;
+
                /* TODO, find exact value this will be and write into it 
(clip-far?) */
                glReadPixels(UNPACK4(ps->gl.clip_readpixels), 
GL_DEPTH_COMPONENT, GL_FLOAT, ps->gl.rect_depth->buf);
 
@@ -245,12 +248,10 @@ void gpu_select_pick_begin(
        else {
                /* src.clip_rect -> dst.clip_rect */
                rect_subregion_stride_calc(&ps->src.clip_rect, 
&ps->dst.clip_rect, &ps->cache.sub_rect);
+               BLI_assert(ps->gl.rect_depth == NULL);
+               BLI_assert(ps->gl.rect_depth_test == NULL);
        }
 
-       /* generate cache */
-       ps->prev_id = 0;
-       ps->is_init = false;
-
        if (mode == GPU_SELECT_PICK_SORT_ALL) {
                ps->all.hits = MEM_mallocN(sizeof(*ps->all.hits) * 
ALLOC_DEPTHS, __func__);
                ps->all.hits_len = 0;
@@ -357,12 +358,12 @@ static void gpu_select_load_id_pass(
 bool gpu_select_pick_load_id(unsigned int id)
 {
        GPUPickState *ps = &g_pick_state;
-       if (ps->is_init) {
+       if (ps->gl.is_init) {
                const unsigned int rect_len = ps->src.rect_len;
                glReadPixels(UNPACK4(ps->gl.clip_readpixels), 
GL_DEPTH_COMPONENT, GL_FLOAT, ps->gl.rect_depth_test);
                /* perform initial memcmp since most cases the array remains 
unchanged  */
                if (memcmp(ps->gl.rect_depth->buf, ps->gl.rect_depth_test->buf, 
rect_len * sizeof(float)) != 0) {
-                       ps->gl.rect_depth_test->id = ps->prev_id;
+                       ps->gl.rect_depth_test->id = ps->gl.prev_id;
 
                        gpu_select_load_id_pass(ps->gl.rect_depth, 
ps->gl.rect_depth_test);
 
@@ -375,8 +376,9 @@ bool gpu_select_pick_load_id(unsigned int id)
                        SWAP(DepthBufCache *, ps->gl.rect_depth_test, 
ps->gl.rect_depth);
                }
        }
-       ps->prev_id = id;
-       ps->is_init = true;
+
+       ps->gl.is_init = true;
+       ps->gl.prev_id = id;
 
        return true;
 }
@@ -386,9 +388,9 @@ unsigned int gpu_select_pick_end(void)
        GPUPickState *ps = &g_pick_state;
 
        if (ps->is_cached == false) {
-               if (ps->is_init) {
+               if (ps->gl.is_init) {
                        /* force finishing last pass */
-                       gpu_select_pick_load_id(ps->prev_id);
+                       gpu_select_pick_load_id(ps->gl.prev_id);
                }
 
                glPopAttrib();

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to