mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-12-11 14:19:10 +00:00
+
This commit is contained in:
32
CMakeLists.txt
Executable file → Normal file
32
CMakeLists.txt
Executable file → Normal file
@@ -1084,31 +1084,33 @@ endif()
|
|||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
# Include MoltenVK, along with an ICD file so it can be found by the system Vulkan loader if used for loading layers.
|
# Include MoltenVK, along with an ICD file so it can be found by the system Vulkan loader if used for loading layers.
|
||||||
|
set(MVK_DYLIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/externals/MoltenVK/libMoltenVK.dylib)
|
||||||
|
|
||||||
if (ENABLE_QT_GUI)
|
if (ENABLE_QT_GUI)
|
||||||
set(MVK_BUNDLE_PATH "Resources/vulkan/icd.d")
|
set_property(TARGET shadps4 APPEND PROPERTY BUILD_RPATH "@executable_path/../Frameworks")
|
||||||
set_property(TARGET shadps4 APPEND PROPERTY BUILD_RPATH "@executable_path/../${MVK_BUNDLE_PATH}")
|
set(MVK_ICD_DST ${CMAKE_CURRENT_BINARY_DIR}/shadps4.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json)
|
||||||
set(MVK_DST ${CMAKE_CURRENT_BINARY_DIR}/shadps4.app/Contents/${MVK_BUNDLE_PATH})
|
set(MVK_DYLIB_DST ${CMAKE_CURRENT_BINARY_DIR}/shadps4.app/Contents/Frameworks/libMoltenVK.dylib)
|
||||||
|
set(MVK_DYLIB_ICD_PATH "../../../Frameworks/libMoltenVK.dylib")
|
||||||
else()
|
else()
|
||||||
set_property(TARGET shadps4 APPEND PROPERTY BUILD_RPATH "@executable_path")
|
set_property(TARGET shadps4 APPEND PROPERTY BUILD_RPATH "@executable_path")
|
||||||
set(MVK_DST ${CMAKE_CURRENT_BINARY_DIR})
|
set(MVK_ICD_DST ${CMAKE_CURRENT_BINARY_DIR}/MoltenVK_icd.json)
|
||||||
|
set(MVK_DYLIB_DST ${CMAKE_CURRENT_BINARY_DIR}/libMoltenVK.dylib)
|
||||||
|
set(MVK_DYLIB_ICD_PATH "./libMoltenVK.dylib")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(MVK_DYLIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/externals/MoltenVK/libMoltenVK.dylib)
|
cmake_path(GET MVK_ICD_DST PARENT_PATH MVK_ICD_DST_PARENT)
|
||||||
set(MVK_DYLIB_DST ${MVK_DST}/libMoltenVK.dylib)
|
cmake_path(GET MVK_DYLIB_DST PARENT_PATH MVK_DYLIB_DST_PARENT)
|
||||||
set(MVK_ICD_SRC ${CMAKE_CURRENT_SOURCE_DIR}/externals/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json)
|
|
||||||
set(MVK_ICD_DST ${MVK_DST}/MoltenVK_icd.json)
|
|
||||||
|
|
||||||
add_custom_command(
|
set(MVK_ICD "\\\{ \\\"file_format_version\\\": \\\"1.0.0\\\", \\\"ICD\\\": \\\{ \\\"library_path\\\": \\\"${MVK_DYLIB_ICD_PATH}\\\", \\\"api_version\\\": \\\"1.3.0\\\", \\\"is_portability_driver\\\": true \\\} \\\}")
|
||||||
OUTPUT ${MVK_DST}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DST})
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${MVK_ICD_DST}
|
OUTPUT ${MVK_ICD_DST}
|
||||||
DEPENDS ${MVK_ICD_SRC} ${MVK_DST}
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_ICD_DST_PARENT} && ${CMAKE_COMMAND} -E echo ${MVK_ICD} > ${MVK_ICD_DST})
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${MVK_ICD_SRC} ${MVK_ICD_DST})
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${MVK_DYLIB_DST}
|
OUTPUT ${MVK_DYLIB_DST}
|
||||||
DEPENDS ${MVK_DYLIB_SRC} ${MVK_DST}
|
DEPENDS ${MVK_DYLIB_SRC}
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST})
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DYLIB_DST_PARENT} && ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST})
|
||||||
|
|
||||||
add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST})
|
add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST})
|
||||||
add_dependencies(CopyMoltenVK MoltenVK)
|
add_dependencies(CopyMoltenVK MoltenVK)
|
||||||
add_dependencies(shadps4 CopyMoltenVK)
|
add_dependencies(shadps4 CopyMoltenVK)
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ static void LowerBufferFormatInst(IR::Block& block, IR::Inst& inst, Info& info)
|
|||||||
.data_format = data_format,
|
.data_format = data_format,
|
||||||
.num_format = num_format,
|
.num_format = num_format,
|
||||||
.swizzle = is_inst_typed ? AmdGpu::IdentityMapping : buffer.DstSelect(),
|
.swizzle = is_inst_typed ? AmdGpu::IdentityMapping : buffer.DstSelect(),
|
||||||
.num_conversion = AmdGpu::MapNumberConversion(num_format, data_format),
|
.num_conversion = AmdGpu::MapNumberConversion(num_format),
|
||||||
.num_components = AmdGpu::NumComponents(data_format),
|
.num_components = AmdGpu::NumComponents(data_format),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -34,18 +34,6 @@ inline F32 ApplyReadNumberConversion(IREmitter& ir, const F32& value,
|
|||||||
case AmdGpu::NumberConversion::UnormToUbnorm:
|
case AmdGpu::NumberConversion::UnormToUbnorm:
|
||||||
// Convert 0...1 to -1...1
|
// Convert 0...1 to -1...1
|
||||||
return ir.FPSub(ir.FPMul(value, ir.Imm32(2.f)), ir.Imm32(1.f));
|
return ir.FPSub(ir.FPMul(value, ir.Imm32(2.f)), ir.Imm32(1.f));
|
||||||
case AmdGpu::NumberConversion::Sint8ToSnormNz: {
|
|
||||||
const IR::U32 additon = ir.IAdd(ir.IMul(ir.BitCast<U32>(value), ir.Imm32(2)), ir.Imm32(1));
|
|
||||||
const IR::F32 left = ir.ConvertSToF(32, 32, additon);
|
|
||||||
const IR::F32 max = ir.Imm32(float(std::numeric_limits<u8>::max()));
|
|
||||||
return ir.FPDiv(left, max);
|
|
||||||
}
|
|
||||||
case AmdGpu::NumberConversion::Sint16ToSnormNz: {
|
|
||||||
const IR::U32 additon = ir.IAdd(ir.IMul(ir.BitCast<U32>(value), ir.Imm32(2)), ir.Imm32(1));
|
|
||||||
const IR::F32 left = ir.ConvertSToF(32, 32, additon);
|
|
||||||
const IR::F32 max = ir.Imm32(float(std::numeric_limits<u16>::max()));
|
|
||||||
return ir.FPDiv(left, max);
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
@@ -78,20 +66,6 @@ inline F32 ApplyWriteNumberConversion(IREmitter& ir, const F32& value,
|
|||||||
case AmdGpu::NumberConversion::UnormToUbnorm:
|
case AmdGpu::NumberConversion::UnormToUbnorm:
|
||||||
// Convert -1...1 to 0...1
|
// Convert -1...1 to 0...1
|
||||||
return ir.FPDiv(ir.FPAdd(value, ir.Imm32(1.f)), ir.Imm32(2.f));
|
return ir.FPDiv(ir.FPAdd(value, ir.Imm32(1.f)), ir.Imm32(2.f));
|
||||||
case AmdGpu::NumberConversion::Sint8ToSnormNz: {
|
|
||||||
const IR::F32 max = ir.Imm32(float(std::numeric_limits<u8>::max()));
|
|
||||||
const IR::F32 mul = ir.FPMul(ir.FPClamp(value, ir.Imm32(-1.f), ir.Imm32(1.f)), max);
|
|
||||||
const IR::F32 left = ir.FPSub(mul, ir.Imm32(1.f));
|
|
||||||
const IR::U32 raw = ir.ConvertFToS(32, ir.FPDiv(left, ir.Imm32(2.f)));
|
|
||||||
return ir.BitCast<F32>(raw);
|
|
||||||
}
|
|
||||||
case AmdGpu::NumberConversion::Sint16ToSnormNz: {
|
|
||||||
const IR::F32 max = ir.Imm32(float(std::numeric_limits<u16>::max()));
|
|
||||||
const IR::F32 mul = ir.FPMul(ir.FPClamp(value, ir.Imm32(-1.f), ir.Imm32(1.f)), max);
|
|
||||||
const IR::F32 left = ir.FPSub(mul, ir.Imm32(1.f));
|
|
||||||
const IR::U32 raw = ir.ConvertFToS(32, ir.FPDiv(left, ir.Imm32(2.f)));
|
|
||||||
return ir.BitCast<F32>(raw);
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -932,7 +932,7 @@ struct Liverpool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] NumberConversion GetNumberConversion() const {
|
[[nodiscard]] NumberConversion GetNumberConversion() const {
|
||||||
return MapNumberConversion(info.number_type, info.format);
|
return MapNumberConversion(info.number_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] CompMapping Swizzle() const {
|
[[nodiscard]] CompMapping Swizzle() const {
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ struct Buffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NumberConversion GetNumberConversion() const noexcept {
|
NumberConversion GetNumberConversion() const noexcept {
|
||||||
return MapNumberConversion(NumberFormat(num_format), DataFormat(data_format));
|
return MapNumberConversion(NumberFormat(num_format));
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 GetStride() const noexcept {
|
u32 GetStride() const noexcept {
|
||||||
@@ -292,7 +292,7 @@ struct Image {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NumberConversion GetNumberConversion() const noexcept {
|
NumberConversion GetNumberConversion() const noexcept {
|
||||||
return MapNumberConversion(NumberFormat(num_format), DataFormat(data_format));
|
return MapNumberConversion(NumberFormat(num_format));
|
||||||
}
|
}
|
||||||
|
|
||||||
TilingMode GetTilingMode() const {
|
TilingMode GetTilingMode() const {
|
||||||
|
|||||||
Reference in New Issue
Block a user