Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/metal/mtl_drawlist.hh
| /* SPDX-License-Identifier: GPL-2.0-or-later */ | /* SPDX-License-Identifier: GPL-2.0-or-later */ | ||||
| /** \file | /** \file | ||||
| * \ingroup gpu | * \ingroup gpu | ||||
| * | * | ||||
| * Implementation of Multi Draw Indirect using OpenGL. | * Implementation of Multi Draw Indirect using OpenGL. | ||||
| * Fallback if the needed extensions are not supported. | * Fallback if the needed extensions are not supported. | ||||
| */ | */ | ||||
| #pragma once | #pragma once | ||||
| #pragma once | #include "BLI_sys_types.h" | ||||
| #include "GPU_batch.h" | |||||
| #include "MEM_guardedalloc.h" | |||||
| #include "gpu_drawlist_private.hh" | #include "gpu_drawlist_private.hh" | ||||
| namespace blender { | #include "mtl_batch.hh" | ||||
| namespace gpu { | #include "mtl_context.hh" | ||||
| namespace blender::gpu { | |||||
| /** | /** | ||||
| * TODO(Metal): MTLDrawList Implementation. Included as temporary stub. | * Implementation of Multi Draw Indirect using OpenGL. | ||||
| */ | **/ | ||||
| class MTLDrawList : public DrawList { | class MTLDrawList : public DrawList { | ||||
| private: | |||||
| /** Batch for which we are recording commands for. */ | |||||
| MTLBatch *batch_; | |||||
| /** Mapped memory bounds. */ | |||||
| void *data_; | |||||
| /** Length of the mapped buffer (in byte). */ | |||||
| size_t data_size_; | |||||
| /** Current offset inside the mapped buffer (in byte). */ | |||||
| size_t command_offset_; | |||||
| /** Current number of command recorded inside the mapped buffer. */ | |||||
| uint32_t command_len_; | |||||
| /** Is UINT_MAX if not drawing indexed geom. Also Avoid dereferencing batch. */ | |||||
| uint32_t base_index_; | |||||
| /** Also Avoid dereferencing batch. */ | |||||
| uint32_t v_first_, v_count_; | |||||
| /** Length of whole the buffer (in byte). */ | |||||
| uint32_t buffer_size_; | |||||
| public: | public: | ||||
| MTLDrawList(int length) | MTLDrawList(int length); | ||||
| { | ~MTLDrawList(); | ||||
| } | |||||
| ~MTLDrawList() | void append(GPUBatch *batch, int i_first, int i_count) override; | ||||
| { | void submit() override; | ||||
| } | |||||
| private: | |||||
| void append(GPUBatch *batch, int i_first, int i_count) override | void init(); | ||||
| { | |||||
| } | |||||
| void submit() override | |||||
| { | |||||
| } | |||||
| MEM_CXX_CLASS_ALLOC_FUNCS("MTLDrawList"); | MEM_CXX_CLASS_ALLOC_FUNCS("MTLDrawList"); | ||||
| }; | }; | ||||
| } // namespace gpu | } // namespace blender::gpu | ||||
| } // namespace blender | |||||