diff --git a/engine/gfx/metal/include/gfx_metal.hpp b/engine/gfx/metal/include/gfx_metal.hpp index 0094c87..143a268 100755 --- a/engine/gfx/metal/include/gfx_metal.hpp +++ b/engine/gfx/metal/include/gfx_metal.hpp @@ -44,7 +44,7 @@ public: GFXPipeline* create_graphics_pipeline(const GFXGraphicsPipelineCreateInfo& info) override; GFXPipeline* create_compute_pipeline(const GFXComputePipelineCreateInfo& info) override; - GFXCommandBuffer* acquire_command_buffer() override; + GFXCommandBuffer* acquire_command_buffer(bool for_presentation_use = false) override; void submit(GFXCommandBuffer* command_buffer, const int window = -1) override; diff --git a/engine/gfx/metal/src/gfx_metal.mm b/engine/gfx/metal/src/gfx_metal.mm index f69a2b9..a2cb765 100755 --- a/engine/gfx/metal/src/gfx_metal.mm +++ b/engine/gfx/metal/src/gfx_metal.mm @@ -220,9 +220,8 @@ void GFXMetal::copy_buffer(GFXBuffer* buffer, void* data, const GFXSize offset, const unsigned char * src = reinterpret_cast(data); unsigned char * dest = reinterpret_cast(metalBuffer->get(currentFrameIndex).contents); - memcpy(dest + offset, src, size); - - //[metalBuffer->handle didModifyRange:NSMakeRange(offset, size)]; + if(dest != nullptr) + memcpy(dest + offset, src, size); } void* GFXMetal::get_buffer_contents(GFXBuffer* buffer) { @@ -699,7 +698,7 @@ GFXPipeline* GFXMetal::create_compute_pipeline(const GFXComputePipelineCreateInf return pipeline; } -GFXCommandBuffer* GFXMetal::acquire_command_buffer() { +GFXCommandBuffer* GFXMetal::acquire_command_buffer(bool for_presentation_use) { GFXCommandBuffer* cmdbuf = nullptr; while(cmdbuf == nullptr) { for(const auto [i, buffer_status] : utility::enumerate(free_command_buffers)) {