Metal: MTLShader and MTLShaderGenerator implementation.
commitcc8ea6ac67a108fcb96e4a8373ac02faf9ccea3d
authorThomas Dinges <dingto>
Thu, 1 Sep 2022 20:22:32 +0000 (1 22:22 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Thu, 1 Sep 2022 20:28:40 +0000 (1 22:28 +0200)
tree351d23dc82e72ea34e6f2d630f9746ec76344af5
parentac07fb38a1b35fa156b2d0901eb35cd65ed73903
Metal: MTLShader and MTLShaderGenerator implementation.

Full support for translation and compilation of shaders in Metal, using
GPUShaderCreateInfo. Includes render pipeline state creation and management,
enabling all standard GPU viewport rendering features in Metal.

Authored by Apple: Michael Parkin-White, Marco Giordano

Ref T96261

Reviewed By: fclem

Maniphest Tasks: T96261

Differential Revision: https://developer.blender.org/D15563
42 files changed:
source/blender/gpu/CMakeLists.txt
source/blender/gpu/GPU_capabilities.h
source/blender/gpu/GPU_shader_shared_utils.h
source/blender/gpu/intern/gpu_context.cc
source/blender/gpu/intern/gpu_context_private.hh
source/blender/gpu/intern/gpu_shader.cc
source/blender/gpu/intern/gpu_shader_create_info.hh
source/blender/gpu/metal/kernels/compute_texture_read.msl
source/blender/gpu/metal/kernels/compute_texture_update.msl
source/blender/gpu/metal/kernels/depth_2d_update_float_frag.glsl
source/blender/gpu/metal/kernels/depth_2d_update_info.hh [new file with mode: 0644]
source/blender/gpu/metal/kernels/depth_2d_update_int24_frag.glsl
source/blender/gpu/metal/kernels/depth_2d_update_int32_frag.glsl
source/blender/gpu/metal/kernels/depth_2d_update_vert.glsl
source/blender/gpu/metal/kernels/gpu_shader_fullscreen_blit_frag.glsl
source/blender/gpu/metal/kernels/gpu_shader_fullscreen_blit_info.hh [new file with mode: 0644]
source/blender/gpu/metal/kernels/gpu_shader_fullscreen_blit_vert.glsl
source/blender/gpu/metal/mtl_backend.mm
source/blender/gpu/metal/mtl_capabilities.hh
source/blender/gpu/metal/mtl_common.hh
source/blender/gpu/metal/mtl_context.hh
source/blender/gpu/metal/mtl_context.mm
source/blender/gpu/metal/mtl_memory.mm
source/blender/gpu/metal/mtl_primitive.hh [new file with mode: 0644]
source/blender/gpu/metal/mtl_pso_descriptor_state.hh [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader.hh [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader.mm [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader_generator.hh [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader_generator.mm [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader_interface.hh [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader_interface.mm [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader_interface_type.hh [new file with mode: 0644]
source/blender/gpu/metal/mtl_shader_shared.h [new file with mode: 0644]
source/blender/gpu/metal/mtl_state.hh
source/blender/gpu/metal/mtl_state.mm
source/blender/gpu/metal/mtl_texture.hh
source/blender/gpu/metal/mtl_texture.mm
source/blender/gpu/metal/mtl_texture_util.mm
source/blender/gpu/opengl/gl_backend.cc
source/blender/gpu/shaders/metal/mtl_shader_common.msl [new file with mode: 0644]
source/blender/gpu/shaders/metal/mtl_shader_defines.msl [new file with mode: 0644]
source/blender/python/gpu/gpu_py_shader_create_info.cc