88 if (use_select_next) {
250 if (hit_result.depth < depth_min) {
252 depth_min = hit_result.depth;
253 hit_result_near = &hit_result;
256 return hit_result_near;
266 if (hit_result.id != select_id) {
267 if (index_dst != index_src) {
268 hit_results[index_dst] = hit_result;
280 const int x = dst->
xmin - src->
xmin;
281 const int y = dst->
ymin - src->
ymin;
292 int last_px_id = src_x * (y + dst_y - 1) + (x + dst_x - 1);
293 memset(&r_buf[last_px_id + 1], 0, (src_x * src_y - (last_px_id + 1)) *
sizeof(*r_buf));
295 if (last_px_id < 0) {
301 int last_px_written = dst_x * dst_y - 1;
302 const int skip = src_x - dst_x;
305 for (
int i = dst_x; i--;) {
306 r_buf[last_px_id--] = r_buf[last_px_written--];
308 if (last_px_written < 0) {
312 memset(&r_buf[last_px_id + 1], 0, skip *
sizeof(*r_buf));
314 memset(r_buf, 0, (last_px_id + 1) *
sizeof(*r_buf));
#define BLI_assert_unreachable()
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
@ GPU_SELECT_NEAREST_SECOND_PASS
@ GPU_SELECT_PICK_NEAREST
const GPUSelectResult * GPU_select_buffer_near(const blender::Span< GPUSelectResult > hit_results)
static GPUSelectState g_select_state
void GPU_select_cache_end()
bool GPU_select_is_cached()
bool GPU_select_load_id(uint id)
static void gpu_select_begin_ex(GPUSelectBuffer *buffer, const rcti *input, eGPUSelectMode mode, int oldhits, bool use_select_next)
void GPU_select_begin(GPUSelectBuffer *buffer, const rcti *input, eGPUSelectMode mode, int oldhits)
void GPU_select_cache_load_id()
void GPU_select_begin_next(GPUSelectBuffer *buffer, const rcti *input, eGPUSelectMode mode, int oldhits)
uint GPU_select_buffer_remove_by_id(blender::MutableSpan< GPUSelectResult > hit_results, uint select_id)
void GPU_select_cache_begin()
void GPU_select_buffer_stride_realign(const rcti *src, const rcti *dst, uint *r_buf)
uint gpu_select_next_end()
void gpu_select_next_begin(GPUSelectBuffer *buffer, const rcti *input, eGPUSelectMode mode)
bool gpu_select_pick_load_id(uint id, bool end)
uint gpu_select_pick_end()
void gpu_select_pick_cache_begin()
bool gpu_select_pick_is_cached()
void gpu_select_pick_cache_load_id()
void gpu_select_pick_begin(GPUSelectBuffer *buffer, const rcti *input, eGPUSelectMode mode)
void gpu_select_pick_cache_end()
bool gpu_select_query_load_id(uint id)
uint gpu_select_query_end()
void gpu_select_query_begin(GPUSelectBuffer *buffer, const rcti *input, eGPUSelectMode mode, int oldhits)
bool use_cache_needs_init