Archived
1
Fork 0

Bring Metal backend up to speed

This commit is contained in:
redstrate 2021-02-17 01:08:46 -05:00
parent 1f98e19819
commit f3f6a219f6
2 changed files with 4 additions and 5 deletions

View file

@ -44,7 +44,7 @@ public:
GFXPipeline* create_graphics_pipeline(const GFXGraphicsPipelineCreateInfo& info) override; GFXPipeline* create_graphics_pipeline(const GFXGraphicsPipelineCreateInfo& info) override;
GFXPipeline* create_compute_pipeline(const GFXComputePipelineCreateInfo& 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; void submit(GFXCommandBuffer* command_buffer, const int window = -1) override;

View file

@ -220,9 +220,8 @@ void GFXMetal::copy_buffer(GFXBuffer* buffer, void* data, const GFXSize offset,
const unsigned char * src = reinterpret_cast<const unsigned char*>(data); const unsigned char * src = reinterpret_cast<const unsigned char*>(data);
unsigned char * dest = reinterpret_cast<unsigned char *>(metalBuffer->get(currentFrameIndex).contents); unsigned char * dest = reinterpret_cast<unsigned char *>(metalBuffer->get(currentFrameIndex).contents);
if(dest != nullptr)
memcpy(dest + offset, src, size); memcpy(dest + offset, src, size);
//[metalBuffer->handle didModifyRange:NSMakeRange(offset, size)];
} }
void* GFXMetal::get_buffer_contents(GFXBuffer* buffer) { void* GFXMetal::get_buffer_contents(GFXBuffer* buffer) {
@ -699,7 +698,7 @@ GFXPipeline* GFXMetal::create_compute_pipeline(const GFXComputePipelineCreateInf
return pipeline; return pipeline;
} }
GFXCommandBuffer* GFXMetal::acquire_command_buffer() { GFXCommandBuffer* GFXMetal::acquire_command_buffer(bool for_presentation_use) {
GFXCommandBuffer* cmdbuf = nullptr; GFXCommandBuffer* cmdbuf = nullptr;
while(cmdbuf == nullptr) { while(cmdbuf == nullptr) {
for(const auto [i, buffer_status] : utility::enumerate(free_command_buffers)) { for(const auto [i, buffer_status] : utility::enumerate(free_command_buffers)) {