Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/CMakeLists.txt
| Show First 20 Lines • Show All 188 Lines • ▼ Show 20 Lines | set(METAL_SRC | ||||
| metal/mtl_backend.mm | metal/mtl_backend.mm | ||||
| metal/mtl_command_buffer.mm | metal/mtl_command_buffer.mm | ||||
| metal/mtl_context.mm | metal/mtl_context.mm | ||||
| metal/mtl_debug.mm | metal/mtl_debug.mm | ||||
| metal/mtl_framebuffer.mm | metal/mtl_framebuffer.mm | ||||
| metal/mtl_index_buffer.mm | metal/mtl_index_buffer.mm | ||||
| metal/mtl_memory.mm | metal/mtl_memory.mm | ||||
| metal/mtl_query.mm | metal/mtl_query.mm | ||||
| metal/mtl_shader.mm | |||||
| metal/mtl_shader_generator.mm | |||||
| metal/mtl_shader_interface.mm | |||||
| metal/mtl_state.mm | metal/mtl_state.mm | ||||
| metal/mtl_texture.mm | metal/mtl_texture.mm | ||||
| metal/mtl_texture_util.mm | metal/mtl_texture_util.mm | ||||
| metal/mtl_uniform_buffer.mm | metal/mtl_uniform_buffer.mm | ||||
| metal/mtl_backend.hh | metal/mtl_backend.hh | ||||
| metal/mtl_capabilities.hh | metal/mtl_capabilities.hh | ||||
| metal/mtl_common.hh | metal/mtl_common.hh | ||||
| metal/mtl_context.hh | metal/mtl_context.hh | ||||
| metal/mtl_debug.hh | metal/mtl_debug.hh | ||||
| metal/mtl_framebuffer.hh | metal/mtl_framebuffer.hh | ||||
| metal/mtl_index_buffer.hh | metal/mtl_index_buffer.hh | ||||
| metal/mtl_memory.hh | metal/mtl_memory.hh | ||||
| metal/mtl_pso_descriptor_state.hh | |||||
| metal/mtl_primitive.hh | |||||
| metal/mtl_query.hh | metal/mtl_query.hh | ||||
| metal/mtl_shader.hh | |||||
| metal/mtl_shader_generator.hh | |||||
| metal/mtl_shader_interface_type.hh | |||||
| metal/mtl_shader_interface.hh | |||||
| metal/mtl_shader_shared.h | |||||
| metal/mtl_state.hh | metal/mtl_state.hh | ||||
| metal/mtl_texture.hh | metal/mtl_texture.hh | ||||
| metal/mtl_uniform_buffer.hh | metal/mtl_uniform_buffer.hh | ||||
| ) | ) | ||||
| # Select Backend source based on availability | # Select Backend source based on availability | ||||
| if(WITH_OPENGL) | if(WITH_OPENGL) | ||||
| list(APPEND SRC ${OPENGL_SRC}) | list(APPEND SRC ${OPENGL_SRC}) | ||||
| endif() | endif() | ||||
| if(WITH_METAL_BACKEND) | if(WITH_METAL_BACKEND) | ||||
| list(APPEND SRC ${METAL_SRC}) | list(APPEND SRC ${METAL_SRC}) | ||||
| endif() | endif() | ||||
| set(LIB | set(LIB | ||||
| ${Epoxy_LIBRARIES} | ${Epoxy_LIBRARIES} | ||||
| ) | ) | ||||
| set(MSL_SRC | set(MSL_SRC | ||||
| shaders/metal/mtl_shader_defines.msl | |||||
| shaders/metal/mtl_shader_common.msl | |||||
| metal/kernels/compute_texture_update.msl | metal/kernels/compute_texture_update.msl | ||||
| metal/kernels/compute_texture_read.msl | metal/kernels/compute_texture_read.msl | ||||
| metal/kernels/depth_2d_update_float_frag.glsl | metal/kernels/depth_2d_update_float_frag.glsl | ||||
| metal/kernels/depth_2d_update_int24_frag.glsl | metal/kernels/depth_2d_update_int24_frag.glsl | ||||
| metal/kernels/depth_2d_update_int32_frag.glsl | metal/kernels/depth_2d_update_int32_frag.glsl | ||||
| metal/kernels/depth_2d_update_vert.glsl | metal/kernels/depth_2d_update_vert.glsl | ||||
| metal/kernels/gpu_shader_fullscreen_blit_vert.glsl | metal/kernels/gpu_shader_fullscreen_blit_vert.glsl | ||||
| metal/kernels/gpu_shader_fullscreen_blit_frag.glsl | metal/kernels/gpu_shader_fullscreen_blit_frag.glsl | ||||
| ▲ Show 20 Lines • Show All 215 Lines • ▼ Show 20 Lines | set(GLSL_SRC | ||||
| shaders/gpu_shader_gpencil_stroke_geom.glsl | shaders/gpu_shader_gpencil_stroke_geom.glsl | ||||
| shaders/gpu_shader_cfg_world_clip_lib.glsl | shaders/gpu_shader_cfg_world_clip_lib.glsl | ||||
| shaders/gpu_shader_colorspace_lib.glsl | shaders/gpu_shader_colorspace_lib.glsl | ||||
| GPU_shader_shared_utils.h | GPU_shader_shared_utils.h | ||||
| ) | ) | ||||
| set(GLSL_C) | set(MTL_BACKEND_GLSL_SRC | ||||
| foreach(GLSL_FILE ${GLSL_SRC}) | metal/kernels/compute_texture_update.msl | ||||
fclem: This is something to keep aware of. Every source files in `GLSL_SRC` is processed by… | |||||
Not Done Inline ActionsAh right, can keep this in mind. I originally had these two lists kept separate, but appended the Metal shader sources onto this list as a number of these shaders are used in create info. Perhaps best to split this section further, separating out MSL shaders from GLSL shaders used by the Metal backend. These GLSL shaders could be common between all APIs, though they are not required by the Gl backend, as support for Depth-write etc; is hidden behind the API. MichaelPW: Ah right, can keep this in mind. I originally had these two lists kept separate, but appended… | |||||
| data_to_c_simple(${GLSL_FILE} GLSL_C) | metal/kernels/compute_texture_read.msl | ||||
| endforeach() | metal/kernels/depth_2d_update_float_frag.glsl | ||||
| metal/kernels/depth_2d_update_int24_frag.glsl | |||||
| metal/kernels/depth_2d_update_int32_frag.glsl | |||||
| metal/kernels/depth_2d_update_vert.glsl | |||||
| metal/kernels/gpu_shader_fullscreen_blit_vert.glsl | |||||
| metal/kernels/gpu_shader_fullscreen_blit_frag.glsl | |||||
| ) | |||||
| set(MSL_SRC | |||||
| shaders/metal/mtl_shader_defines.msl | |||||
| shaders/metal/mtl_shader_common.msl | |||||
| metal/mtl_shader_shared.h | |||||
| ) | |||||
| if(WITH_METAL_BACKEND) | if(WITH_METAL_BACKEND) | ||||
| list(APPEND GLSL_SRC ${MTL_BACKEND_GLSL_SRC}) | |||||
| set(MSL_C) | set(MSL_C) | ||||
| foreach(MSL_FILE ${MSL_SRC}) | foreach(MSL_FILE ${MSL_SRC}) | ||||
| data_to_c_simple(${MSL_FILE} MSL_C) | data_to_c_simple(${MSL_FILE} MSL_C) | ||||
| endforeach() | endforeach() | ||||
| list(APPEND GLSL_C ${MSL_C}) | |||||
| endif() | endif() | ||||
| blender_add_lib(bf_gpu_shaders "${GLSL_C}" "" "" "") | set(GLSL_C) | ||||
| foreach(GLSL_FILE ${GLSL_SRC}) | |||||
| data_to_c_simple(${GLSL_FILE} GLSL_C) | |||||
| endforeach() | |||||
| set(SHADER_C) | |||||
| list(APPEND SHADER_C ${GLSL_C}) | |||||
| if(WITH_METAL_BACKEND) | |||||
| list(APPEND SHADER_C ${MSL_C}) | |||||
| endif() | |||||
| blender_add_lib(bf_gpu_shaders "${SHADER_C}" "" "" "") | |||||
| list(APPEND LIB | list(APPEND LIB | ||||
| bf_gpu_shaders | bf_gpu_shaders | ||||
| ) | ) | ||||
| set(GLSL_SOURCE_CONTENT "") | set(GLSL_SOURCE_CONTENT "") | ||||
| foreach(GLSL_FILE ${GLSL_SRC}) | foreach(GLSL_FILE ${GLSL_SRC}) | ||||
| get_filename_component(GLSL_FILE_NAME ${GLSL_FILE} NAME) | get_filename_component(GLSL_FILE_NAME ${GLSL_FILE} NAME) | ||||
| ▲ Show 20 Lines • Show All 98 Lines • ▼ Show 20 Lines | set(SRC_SHADER_CREATE_INFOS | ||||
| shaders/compositor/infos/compositor_image_crop_info.hh | shaders/compositor/infos/compositor_image_crop_info.hh | ||||
| shaders/compositor/infos/compositor_projector_lens_distortion_info.hh | shaders/compositor/infos/compositor_projector_lens_distortion_info.hh | ||||
| shaders/compositor/infos/compositor_realize_on_domain_info.hh | shaders/compositor/infos/compositor_realize_on_domain_info.hh | ||||
| shaders/compositor/infos/compositor_screen_lens_distortion_info.hh | shaders/compositor/infos/compositor_screen_lens_distortion_info.hh | ||||
| shaders/compositor/infos/compositor_set_alpha_info.hh | shaders/compositor/infos/compositor_set_alpha_info.hh | ||||
| shaders/compositor/infos/compositor_split_viewer_info.hh | shaders/compositor/infos/compositor_split_viewer_info.hh | ||||
| ) | ) | ||||
| set(SRC_SHADER_CREATE_INFOS_MTL | |||||
| metal/kernels/depth_2d_update_info.hh | |||||
| metal/kernels/gpu_shader_fullscreen_blit_info.hh | |||||
| ) | |||||
| if(WITH_METAL_BACKEND) | |||||
| list(APPEND SRC_SHADER_CREATE_INFOS ${SRC_SHADER_CREATE_INFOS_MTL}) | |||||
| endif() | |||||
| set(SHADER_CREATE_INFOS_CONTENT "") | set(SHADER_CREATE_INFOS_CONTENT "") | ||||
| foreach(DESCRIPTOR_FILE ${SRC_SHADER_CREATE_INFOS}) | foreach(DESCRIPTOR_FILE ${SRC_SHADER_CREATE_INFOS}) | ||||
| string(APPEND SHADER_CREATE_INFOS_CONTENT "#include \"${DESCRIPTOR_FILE}\"\n") | string(APPEND SHADER_CREATE_INFOS_CONTENT "#include \"${DESCRIPTOR_FILE}\"\n") | ||||
| endforeach() | endforeach() | ||||
| set(shader_create_info_list_file "${CMAKE_CURRENT_BINARY_DIR}/gpu_shader_create_info_list.hh") | set(shader_create_info_list_file "${CMAKE_CURRENT_BINARY_DIR}/gpu_shader_create_info_list.hh") | ||||
| file(GENERATE OUTPUT ${shader_create_info_list_file} CONTENT "${SHADER_CREATE_INFOS_CONTENT}") | file(GENERATE OUTPUT ${shader_create_info_list_file} CONTENT "${SHADER_CREATE_INFOS_CONTENT}") | ||||
| Show All 26 Lines | |||||
| if(WITH_GPU_BUILDTIME_SHADER_BUILDER) | if(WITH_GPU_BUILDTIME_SHADER_BUILDER) | ||||
| # TODO(@fclem) Fix this mess. | # TODO(@fclem) Fix this mess. | ||||
| if(APPLE) | if(APPLE) | ||||
| add_executable(shader_builder | add_executable(shader_builder | ||||
| intern/gpu_shader_builder.cc | intern/gpu_shader_builder.cc | ||||
| intern/gpu_shader_builder_stubs.cc | |||||
| ${shader_create_info_list_file} | ${shader_create_info_list_file} | ||||
| ) | ) | ||||
| setup_platform_linker_flags(shader_builder) | setup_platform_linker_flags(shader_builder) | ||||
| target_link_libraries(shader_builder PUBLIC buildinfoobj) | target_link_libraries(shader_builder PUBLIC buildinfoobj) | ||||
| else() | else() | ||||
| if(WIN32) | if(WIN32) | ||||
| # We can re-use the manifest from tests.exe here since it's | # We can re-use the manifest from tests.exe here since it's | ||||
| ▲ Show 20 Lines • Show All 62 Lines • Show Last 20 Lines | |||||
This is something to keep aware of. Every source files in GLSL_SRC is processed by GPUSource constructor which at the moment expects GLSL syntax (even if it doesn't really do any parsing).