Fix T63936 GPUSelect: Read depth in the end

fix T63936 introduced  in 86914e7133.

Reviewers: fclem

Reviewed By: fclem

Tags: #bf_blender

Maniphest Tasks: T63936

Differential Revision: https://developer.blender.org/D4750
This commit is contained in:
2019-04-27 20:37:11 +02:00
parent 6cb90d180f
commit d2f1705b15
3 changed files with 5 additions and 5 deletions

View File

@@ -120,7 +120,7 @@ bool GPU_select_load_id(uint id)
}
default: /* ALGO_GL_PICK */
{
return gpu_select_pick_load_id(id);
return gpu_select_pick_load_id(id, false);
}
}
}

View File

@@ -476,12 +476,12 @@ static void gpu_select_load_id_pass_nearest(const DepthBufCache *rect_prev,
}
}
bool gpu_select_pick_load_id(uint id)
bool gpu_select_pick_load_id(uint id, bool end)
{
GPUPickState *ps = &g_pick_state;
if (ps->gl.is_init) {
if (id == ps->gl.prev_id) {
if (id == ps->gl.prev_id && !end) {
/* No need to read if we are still drawing for the same id since
* all these depths will be merged / deduplicated in the end. */
return true;
@@ -543,7 +543,7 @@ uint gpu_select_pick_end(void)
if (ps->is_cached == false) {
if (ps->gl.is_init) {
/* force finishing last pass */
gpu_select_pick_load_id(ps->gl.prev_id);
gpu_select_pick_load_id(ps->gl.prev_id, true);
}
gpuPopAttr();
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);

View File

@@ -28,7 +28,7 @@
/* gpu_select_pick */
void gpu_select_pick_begin(uint (*buffer)[4], uint bufsize, const rcti *input, char mode);
bool gpu_select_pick_load_id(uint id);
bool gpu_select_pick_load_id(uint id, bool end);
uint gpu_select_pick_end(void);
void gpu_select_pick_cache_begin(void);