35 matrix_buf.current().trim_to_next_power_of_2(resource_len_);
36 bounds_buf.current().trim_to_next_power_of_2(resource_len_);
37 infos_buf.current().trim_to_next_power_of_2(resource_len_);
52#if !defined(NDEBUG) && !defined(_M_ARM64)
74void Manager::sync_layer_attributes()
85 std::sort(id_list.
begin(), id_list.
end());
95 if (++
count == size) {
108 sync_layer_attributes();
143# ifndef DISABLE_DEBUG_SHADER_PRINT_BARRIER
170 pass.draw_commands_buf_.bind(
state, pass.headers_, pass.commands_, pass.sub_passes_);
185 bool freeze_culling = (
U.experimental.use_viewport_debug &&
DST.
draw_ctx.
v3d &&
188 view.compute_visibility(
194 pass.draw_commands_buf_.bind(
state,
197 view.get_visibility_buffer(),
198 view.visibility_word_per_draw(),
200 pass.use_custom_ids);
222 pass.draw_commands_buf_.bind(
state, pass.headers_, pass.commands_, pass.sub_passes_);
235 pass.draw_commands_buf_.resource_id_buf_.read();
239 pass.draw_commands_buf_.resource_id_count_};
241 output.visibility = {(
uint *)view.get_visibility_buffer().data(), 0};
251 pass.draw_commands_buf_.resource_id_buf_.read();
252 view.get_visibility_buffer().read();
256 pass.draw_commands_buf_.resource_id_count_};
257 output.visibility = {(
uint *)view.get_visibility_buffer().data(),
270 output.bounds = {
bounds_buf.current().data(), resource_len_};
271 output.infos = {
infos_buf.current().data(), resource_len_};
MINLINE uint divide_ceil_u(uint a, uint b)
@ V3D_DEBUG_FREEZE_CULLING
void GPU_compute_dispatch(GPUShader *shader, uint groups_x_len, uint groups_y_len, uint groups_z_len)
void GPU_debug_group_end()
void GPU_debug_group_begin(const char *name)
void GPU_shader_uniform_1i(GPUShader *sh, const char *name, int value)
int GPU_shader_get_ssbo_binding(GPUShader *shader, const char *name)
void GPU_shader_bind(GPUShader *shader)
void GPU_memory_barrier(eGPUBarrier barrier)
@ GPU_BARRIER_SHADER_STORAGE
@ GPU_BARRIER_BUFFER_UPDATE
void GPU_storagebuf_bind(GPUStorageBuf *ssbo, int slot)
void GPU_texture_free(GPUTexture *texture)
struct GPUShader GPUShader
const Value & lookup(const Key &key) const
constexpr const T * data() const
void append(const T &value)
void reserve(const int64_t min_capacity)
LayerAttributeBuf layer_attributes_buf
SwapChain< ObjectBoundsBuf, 2 > bounds_buf
SubmitDebugOutput submit_debug(PassSimple &pass, View &view)
SwapChain< ObjectInfosBuf, 2 > infos_buf
ObjectAttributeBuf attributes_buf
Map< uint32_t, GPULayerAttr > layer_attributes
Vector< GPUTexture * > acquired_textures
SwapChain< ObjectMatricesBuf, 2 > matrix_buf
void submit(PassSimple &pass, View &view)
ResourceHandle resource_handle(const ObjectRef &ref, float inflate_bounds=0.0f)
ObjectAttributeLegacyBuf attributes_buf_legacy
DataDebugOutput data_debug()
void trim_to_next_power_of_2(int64_t required_size)
GPUStorageBuf * drw_debug_gpu_print_buf_get()
GPUStorageBuf * drw_debug_gpu_draw_buf_get()
Simple API to draw debug shapes and log in the viewport.
#define DRW_FINALIZE_GROUP_SIZE
#define DRW_DEBUG_DRAW_SLOT
#define DRW_DEBUG_PRINT_SLOT
#define DRW_OBJ_INFOS_SLOT
#define DRW_OBJ_ATTR_SLOT
#define DRW_LAYER_ATTR_UBO_SLOT
GPUShader * DRW_shader_draw_resource_finalize_get()
static MatBase identity()
Span< ObjectMatrices > matrices
Span< uint32_t > resource_id