Skip to content

Commit dcfcc07

Browse files
committed
Merge remote-tracking branch 'metal/metal' into ios
2 parents c50f020 + 97193c6 commit dcfcc07

73 files changed

Lines changed: 1236 additions & 164 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/validate.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,6 @@ jobs:
229229
token: ${{ secrets.ASSET_REPO_TOKEN }}
230230
path: ./private
231231

232-
- name: Setup latest Xcode
233-
uses: maxim-lobanov/setup-xcode@v1
234-
with:
235-
xcode-version: latest-stable
236-
237232
- name: Setup ccache
238233
uses: hendrikmuhs/ccache-action@v1.2
239234
with:

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
url = https://github.com/redorav/ddspp.git
77
[submodule "tools/XenosRecomp"]
88
path = tools/XenosRecomp
9-
url = https://github.com/hedge-dev/XenosRecomp.git
9+
url = https://github.com/squidbus/XenosRecomp.git
1010
[submodule "UnleashedRecompResources"]
1111
path = UnleashedRecompResources
1212
url = https://github.com/hedge-dev/UnleashedRecompResources.git

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ if (UNLEASHED_RECOMP_ARCHITECTURE STREQUAL "x86_64" OR UNLEASHED_RECOMP_ARCHITEC
4040
)
4141
endif()
4242

43+
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
44+
# Normally only defined by Visual Studio, added for consistency
45+
add_compile_definitions(_DEBUG)
46+
endif()
47+
4348
add_subdirectory(${UNLEASHED_RECOMP_THIRDPARTY_ROOT})
4449
add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT})
4550

UnleashedRecomp/CMakeLists.txt

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ if(WIN32)
44
option(UNLEASHED_RECOMP_D3D12 "Add D3D12 support for rendering" ON)
55
endif()
66

7-
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
7+
if (APPLE)
8+
option(UNLEASHED_RECOMP_METAL "Add Metal support for rendering" ON)
9+
endif()
10+
11+
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
812
option(UNLEASHED_RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF)
913
endif()
1014

@@ -282,6 +286,10 @@ if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
282286
set(SHOW_GIT_INFO_AND_BUILD_TYPE 1)
283287
endif()
284288

289+
if (UNLEASHED_RECOMP_METAL)
290+
set(XCRUN_TOOL "/usr/bin/xcrun")
291+
endif()
292+
285293
GenerateVersionSources(
286294
OUTPUT_DIR ${PROJECT_SOURCE_DIR}
287295
VERSION_TXT ${VERSION_TXT}
@@ -482,7 +490,11 @@ if(UNLEASHED_RECOMP_D3D12)
482490
)
483491
endif()
484492

485-
if(WIN32)
493+
if (UNLEASHED_RECOMP_METAL)
494+
target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL)
495+
endif()
496+
497+
if (WIN32)
486498
target_link_libraries(UnleashedRecomp PRIVATE
487499
comctl32
488500
dwmapi
@@ -565,30 +577,43 @@ if(NOT DEFINED DIRECTX_DXC_TOOL)
565577
endif()
566578

567579
function(compile_shader FILE_PATH TARGET_NAME)
568-
set(FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/${FILE_PATH}.hlsl)
569-
cmake_path(GET FILE_PATH STEM VARIABLE_NAME)
570-
571580
set(_shader_target UnleashedRecomp)
572581

573582
if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher)
574583
set(_shader_target UnleashedRecompIOSLauncher)
575584
endif()
576-
577-
if(UNLEASHED_RECOMP_D3D12)
585+
set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl)
586+
set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal)
587+
cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME)
588+
cmake_path(GET MSL_FILE_PATH STEM MSL_NAME)
589+
if (UNLEASHED_RECOMP_METAL)
590+
add_custom_command(
591+
OUTPUT ${MSL_FILE_PATH}.ir
592+
COMMAND ${XCRUN_TOOL} -sdk macosx metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only
593+
DEPENDS ${MSL_FILE_PATH}
594+
)
595+
add_custom_command(
596+
OUTPUT ${MSL_FILE_PATH}.metallib
597+
COMMAND ${XCRUN_TOOL} -sdk macosx metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir
598+
DEPENDS ${MSL_FILE_PATH}.ir
599+
)
600+
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air")
601+
endif()
602+
if (UNLEASHED_RECOMP_D3D12)
578603
add_custom_command(
579-
OUTPUT ${FILE_PATH}.dxil.h
580-
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -Fh ${FILE_PATH}.dxil.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_dxil
581-
DEPENDS ${FILE_PATH}
604+
OUTPUT ${HLSL_FILE_PATH}.dxil.h
605+
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -E shaderMain -Fh ${HLSL_FILE_PATH}.dxil.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_dxil
606+
DEPENDS ${HLSL_FILE_PATH}
582607
)
583-
target_sources(${_shader_target} PRIVATE ${FILE_PATH}.dxil.h)
608+
target_sources(${_shader_target} PRIVATE ${HLSL_FILE_PATH}.dxil.h)
584609
endif()
585610

586611
add_custom_command(
587-
OUTPUT ${FILE_PATH}.spirv.h
588-
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -Fh ${FILE_PATH}.spirv.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_spirv
589-
DEPENDS ${FILE_PATH}
612+
OUTPUT ${HLSL_FILE_PATH}.spirv.h
613+
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -E shaderMain -Fh ${HLSL_FILE_PATH}.spirv.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_spirv
614+
DEPENDS ${HLSL_FILE_PATH}
590615
)
591-
target_sources(${_shader_target} PRIVATE ${FILE_PATH}.spirv.h)
616+
target_sources(${_shader_target} PRIVATE ${HLSL_FILE_PATH}.spirv.h)
592617
endfunction()
593618

594619
function(compile_vertex_shader FILE_PATH)

UnleashedRecomp/gpu/imgui/imgui_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#define IMGUI_SHADER_MODIFIER_RECTANGLE_BEVEL 10
1414
#define IMGUI_SHADER_MODIFIER_LOW_QUALITY_TEXT 11
1515

16-
#ifdef __cplusplus
16+
#if defined(__cplusplus) && !defined(__air__)
1717

1818
enum class ImGuiCallback : int32_t
1919
{
File renamed without changes.

UnleashedRecomp/gpu/shader/blend_color_alpha_ps.hlsl renamed to UnleashedRecomp/gpu/shader/hlsl/blend_color_alpha_ps.hlsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
1+
#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
22

33
#ifdef __spirv__
44

@@ -22,7 +22,7 @@ cbuffer SharedConstants : register(b2, space4)
2222

2323
#endif
2424

25-
float4 main(
25+
float4 shaderMain(
2626
in float4 iPos : SV_Position,
2727
in float4 iTexCoord0 : TEXCOORD0) : SV_Target0
2828
{

UnleashedRecomp/gpu/shader/copy_color_ps.hlsl renamed to UnleashedRecomp/gpu/shader/hlsl/copy_color_ps.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Texture2D<float4> g_Texture2DDescriptorHeap[] : register(t0, space0);
44

5-
float4 main(in float4 position : SV_Position) : SV_Target
5+
float4 shaderMain(in float4 position : SV_Position) : SV_Target
66
{
77
return g_Texture2DDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].Load(int3(position.xy, 0));
88
}
File renamed without changes.

UnleashedRecomp/gpu/shader/copy_depth_ps.hlsl renamed to UnleashedRecomp/gpu/shader/hlsl/copy_depth_ps.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Texture2D<float> g_Texture2DDescriptorHeap[] : register(t0, space0);
44

5-
float main(in float4 position : SV_Position) : SV_Depth
5+
float shaderMain(in float4 position : SV_Position) : SV_Depth
66
{
77
return g_Texture2DDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].Load(int3(position.xy, 0));
88
}

0 commit comments

Comments
 (0)