mirror of
https://github.com/ran-j/PS2Recomp.git
synced 2026-09-26 08:51:05 -04:00
e27a658b32
feat: added parallel gs feat: optmized IOP emulator feat: added guest and game fps count feat: small vu1 optmization and guards
25 lines
1.6 KiB
CMake
25 lines
1.6 KiB
CMake
file(READ "${parallel_gs_SOURCE_DIR}/gs/gs_interface.cpp" gs_interface_source)
|
|
|
|
function(patch_gs_transfer before after)
|
|
string(FIND "${gs_interface_source}" "${before}" position)
|
|
if(position EQUAL -1)
|
|
message(FATAL_ERROR "parallel-gs transfer patch does not match the pinned source")
|
|
endif()
|
|
string(REPLACE "${before}" "${after}" gs_interface_source "${gs_interface_source}")
|
|
set(gs_interface_source "${gs_interface_source}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
patch_gs_transfer("get_bits_per_pixel(transfer_state.copy.bitbltbuf.desc.DPSM)) / 64;" "get_bits_per_pixel(transfer_state.copy.bitbltbuf.desc.DPSM) + 63) / 64;")
|
|
patch_gs_transfer("get_bits_per_pixel(transfer_state.copy.bitbltbuf.desc.SPSM)) / 8;" "get_bits_per_pixel(transfer_state.copy.bitbltbuf.desc.SPSM) + 7) / 8;")
|
|
patch_gs_transfer("transfer_state.fifo_readback.reserve(required_bytes);" "transfer_state.fifo_readback.reserve((required_bytes + 15) & ~15u);\n\t\tif (required_bytes) memset(transfer_state.fifo_readback.data(), 0, (required_bytes + 15) & ~15u);")
|
|
patch_gs_transfer("transfer_state.fifo_readback_128b_size = required_bytes / 16;" "transfer_state.fifo_readback_128b_size = (required_bytes + 15) / 16;")
|
|
|
|
set(patched_interface "${parallel_gs_BINARY_DIR}/gs_interface_transfer_tails.cpp")
|
|
file(CONFIGURE OUTPUT "${patched_interface}" CONTENT "${gs_interface_source}" @ONLY)
|
|
|
|
get_target_property(gs_sources parallel-gs SOURCES)
|
|
list(REMOVE_ITEM gs_sources gs_interface.cpp)
|
|
set_property(TARGET parallel-gs PROPERTY SOURCES "${gs_sources}")
|
|
|
|
target_sources(parallel-gs PRIVATE "${patched_interface}")
|