31void MTLQueryPool::allocate()
43 buffer_.append(buffer);
49 return MTLVisibilityResultModeBoolean;
52 return MTLVisibilityResultModeBoolean;
69 int query_id = query_issued_;
71 if (requested_buffer >= buffer_.size()) {
85 [rec setVisibilityResultMode:mtl_type_
96 [rec setVisibilityResultMode:MTLVisibilityResultModeDisabled offset:0];
105 if ([ctx->
device hasUnifiedMemory] ==
false) {
109 [blit_encoder synchronizeResource:buf->get_metal_buffer()];
123 buffer_[requested_buffer]->get_host_ptr());
unsigned long long int uint64_t
constexpr IndexRange()=default
gpu::MTLBuffer * allocate(uint64_t size, bool cpu_visible)
void * get_host_ptr() const
id< MTLBlitCommandEncoder > ensure_begin_blit_encoder()
id< MTLRenderCommandEncoder > get_active_render_command_encoder()
void set_visibility_buffer(gpu::MTLBuffer *buffer)
id< MTLRenderCommandEncoder > ensure_begin_render_pass()
static MTLContext * get()
MTLCommandBufferManager main_command_buffer
static MTLBufferPool * get_global_memory_manager()
void begin_query() override
void init(GPUQueryType type) override
void end_query() override
void get_occlusion_result(MutableSpan< uint32_t > r_values) override
static const size_t VISIBILITY_COUNT_PER_BUFFER
static const size_t VISIBILITY_RESULT_SIZE_IN_BYTES
static MTLVisibilityResultMode to_mtl_type(GPUQueryType type)