diff options
Diffstat (limited to 'source/blender/gpu/metal/mtl_immediate.hh')
-rw-r--r-- | source/blender/gpu/metal/mtl_immediate.hh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/source/blender/gpu/metal/mtl_immediate.hh b/source/blender/gpu/metal/mtl_immediate.hh new file mode 100644 index 00000000000..b743efb397d --- /dev/null +++ b/source/blender/gpu/metal/mtl_immediate.hh @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/** \file + * \ingroup gpu + * + * Mimics old style opengl immediate mode drawing. + */ + + +#pragma once + +#include "MEM_guardedalloc.h" +#include "gpu_immediate_private.hh" + +#include <Cocoa/Cocoa.h> +#include <Metal/Metal.h> +#include <QuartzCore/QuartzCore.h> + +namespace blender::gpu { + +class MTLImmediate : public Immediate { + private: + MTLContext *context_ = nullptr; + MTLTemporaryBuffer current_allocation_; + MTLPrimitiveTopologyClass metal_primitive_mode_; + MTLPrimitiveType metal_primitive_type_; + bool has_begun_ = false; + + public: + MTLImmediate(MTLContext *ctx); + ~MTLImmediate(); + + uchar *begin() override; + void end() override; + bool imm_is_recording() + { + return has_begun_; + } +}; + +} // namespace blender::gpu |