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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user