MTLCommandBufferState for coordinating GPU workload submission and render pass coordination.

MTLFrameBuffer has been implemented to support creation of RenderCommandEncoders, along with supporting functionality in the Metal Context.

Optimisation stubs for GPU_framebuffer_bind_ext has been added, which enables specific assignment of attachment load-store ops at the bind level, rather than on a framebuffer object as a whole.

Begin and end frame markers are used to encapsulate frame boundaries for explicit workload submission. This is required for explicit APIs where implicit flushing of work does not occur.

Ref T96261

Reviewed By: fclem

Maniphest Tasks: T96261

Differential Revision: https://developer.blender.org/D15027
This commit is contained in:
Jason Fielder
2022-06-27 11:41:04 +02:00
committed by Clément Foucault
parent 7b6b740ace
commit 9130a60d3d
28 changed files with 3869 additions and 732 deletions

View File

@@ -77,6 +77,11 @@ class GLFrameBuffer : public FrameBuffer {
eGPUDataFormat data_format,
const void *clear_value) override;
/* Attachment load-stores are currently no-op's in OpenGL. */
void attachment_set_loadstore_op(GPUAttachmentType type,
eGPULoadOp load_action,
eGPUStoreOp store_action) override{};
void read(eGPUFrameBufferBits planes,
eGPUDataFormat format,
const int area[4],