mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-03 19:25:18 +02:00
Mirrors the earlier Common extraction. The old "core" target folded in all of GPU/ (~200 files) plus a few ext/ files wholesale; Windows already treats GPU as its own project (GPU.vcxproj), so GPU/CMakeLists.txt splits that out too. GPU has a genuine two-way dependency with Core (Core/System.cpp calls GPU_Init(), GPU/* calls back into Core for Memory/Config/CoreTiming/etc), so GPU is a CMake OBJECT library: its object files are always included wherever consumed instead of being lazily pulled from an archive, avoiding the GNU ld single-pass archive-ordering problem a two-way STATIC dependency would hit. Also fixed a few library misattributions discovered while tracing what each file actually uses: - GlslangLibs (glslang/spirv-cross) moved from Core to Common, since it's Common/GPU/ShaderTranslation.cpp and VulkanContext.cpp that call into it directly. It only worked before because Core happened to always be linked after Common. - ZSTD and OPENGL_LIBRARIES/X11_LIBRARIES moved from Core to GPU, matching where they're actually called (GPU/Debugger/Record.cpp and Playback.cpp for ZSTD, GPU/GLES for raw gl*() calls). - GPU also needs Ext::Snappy directly (Playback.cpp calls snappy_uncompress) and the libretro-common include dir under LIBRETRO, both previously inherited for free by accident. Also fixed USE_DISCORD's add_compile_definitions ordering: it was being defined after ppsspp_ui's add_library call, so the UI target never actually saw it on non-MSVC platforms. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSNaZnHCjmryS3ziVN9gZU
218 lines
5.7 KiB
CMake
218 lines
5.7 KiB
CMake
set(GPUArch)
|
|
list(APPEND GPUArch
|
|
Common/VertexDecoderArm.cpp
|
|
Common/VertexDecoderArm64.cpp
|
|
Common/VertexDecoderX86.cpp
|
|
Software/DrawPixelX86.cpp
|
|
Software/SamplerX86.cpp
|
|
Common/VertexDecoderRiscV.cpp
|
|
Common/VertexDecoderLoongArch64.cpp
|
|
)
|
|
|
|
set(GPU_GLES
|
|
GLES/StencilBufferGLES.cpp
|
|
GLES/GPU_GLES.cpp
|
|
GLES/GPU_GLES.h
|
|
GLES/FragmentTestCacheGLES.cpp
|
|
GLES/FragmentTestCacheGLES.h
|
|
GLES/FramebufferManagerGLES.cpp
|
|
GLES/FramebufferManagerGLES.h
|
|
GLES/ShaderManagerGLES.cpp
|
|
GLES/ShaderManagerGLES.h
|
|
GLES/StateMappingGLES.cpp
|
|
GLES/StateMappingGLES.h
|
|
GLES/TextureCacheGLES.cpp
|
|
GLES/TextureCacheGLES.h
|
|
GLES/DrawEngineGLES.cpp
|
|
GLES/DrawEngineGLES.h
|
|
)
|
|
|
|
set(GPU_VULKAN
|
|
Vulkan/DebugVisVulkan.cpp
|
|
Vulkan/DebugVisVulkan.h
|
|
Vulkan/DrawEngineVulkan.cpp
|
|
Vulkan/DrawEngineVulkan.h
|
|
Vulkan/FramebufferManagerVulkan.cpp
|
|
Vulkan/FramebufferManagerVulkan.h
|
|
Vulkan/GPU_Vulkan.cpp
|
|
Vulkan/GPU_Vulkan.h
|
|
Vulkan/PipelineManagerVulkan.cpp
|
|
Vulkan/PipelineManagerVulkan.h
|
|
Vulkan/ShaderManagerVulkan.cpp
|
|
Vulkan/ShaderManagerVulkan.h
|
|
Vulkan/StateMappingVulkan.cpp
|
|
Vulkan/StateMappingVulkan.h
|
|
Vulkan/TextureCacheVulkan.cpp
|
|
Vulkan/TextureCacheVulkan.h
|
|
Vulkan/VulkanUtil.cpp
|
|
Vulkan/VulkanUtil.h
|
|
)
|
|
|
|
set(GPU_D3D11
|
|
D3D11/DrawEngineD3D11.cpp
|
|
D3D11/DrawEngineD3D11.h
|
|
D3D11/FramebufferManagerD3D11.cpp
|
|
D3D11/FramebufferManagerD3D11.h
|
|
D3D11/GPU_D3D11.cpp
|
|
D3D11/GPU_D3D11.h
|
|
D3D11/D3D11Util.cpp
|
|
D3D11/D3D11Util.h
|
|
D3D11/ShaderManagerD3D11.cpp
|
|
D3D11/ShaderManagerD3D11.h
|
|
D3D11/StateMappingD3D11.cpp
|
|
D3D11/StateMappingD3D11.h
|
|
D3D11/TextureCacheD3D11.cpp
|
|
D3D11/TextureCacheD3D11.h
|
|
)
|
|
|
|
# We build Vulkan even on Apple to avoid annoying build differences.
|
|
set(GPU_IMPLS ${GPU_GLES} ${GPU_VULKAN})
|
|
if(WIN32)
|
|
list(APPEND GPU_IMPLS ${GPU_D3D11})
|
|
endif()
|
|
|
|
set(GPU_SOURCES
|
|
${GPUArch}
|
|
${GPU_IMPLS}
|
|
${GPU_NEON}
|
|
Common/Draw2D.cpp
|
|
Common/Draw2D.h
|
|
Common/DepthBufferCommon.cpp
|
|
Common/DepthRaster.cpp
|
|
Common/DepthRaster.h
|
|
Common/TextureShaderCommon.cpp
|
|
Common/TextureShaderCommon.h
|
|
Common/DepalettizeShaderCommon.cpp
|
|
Common/DepalettizeShaderCommon.h
|
|
Common/FragmentShaderGenerator.cpp
|
|
Common/FragmentShaderGenerator.h
|
|
Common/VertexShaderGenerator.cpp
|
|
Common/VertexShaderGenerator.h
|
|
Common/FramebufferManagerCommon.cpp
|
|
Common/FramebufferManagerCommon.h
|
|
Common/GPUDebugInterface.cpp
|
|
Common/GPUDebugInterface.h
|
|
Common/GPUStateUtils.cpp
|
|
Common/GPUStateUtils.h
|
|
Common/DrawEngineCommon.cpp
|
|
Common/DrawEngineCommon.h
|
|
Common/PresentationCommon.cpp
|
|
Common/PresentationCommon.h
|
|
Common/ReinterpretFramebuffer.cpp
|
|
Common/ReinterpretFramebuffer.h
|
|
Common/ShaderId.cpp
|
|
Common/ShaderId.h
|
|
Common/ShaderUniforms.cpp
|
|
Common/ShaderUniforms.h
|
|
Common/ShaderCommon.cpp
|
|
Common/ShaderCommon.h
|
|
Common/SplineCommon.cpp
|
|
Common/SplineCommon.h
|
|
Common/StencilCommon.cpp
|
|
Common/StencilCommon.h
|
|
Common/SoftwareTransformCommon.cpp
|
|
Common/SoftwareTransformCommon.h
|
|
Common/VertexDecoderCommon.cpp
|
|
Common/VertexDecoderCommon.h
|
|
Common/VertexDecoderHandwritten.cpp
|
|
Common/VertexDecoderHandwritten.h
|
|
Common/VertexReader.h
|
|
Common/TransformCommon.cpp
|
|
Common/TransformCommon.h
|
|
Common/IndexGenerator.cpp
|
|
Common/IndexGenerator.h
|
|
Common/ImageCommon.h
|
|
Common/TextureDecoder.cpp
|
|
Common/TextureDecoder.h
|
|
Common/TextureCacheCommon.cpp
|
|
Common/TextureCacheCommon.h
|
|
Common/TextureScalerCommon.cpp
|
|
Common/TextureScalerCommon.h
|
|
Common/PostShader.cpp
|
|
Common/PostShader.h
|
|
Common/TextureReplacer.cpp
|
|
Common/TextureReplacer.h
|
|
Common/ReplacedTexture.cpp
|
|
Common/ReplacedTexture.h
|
|
Debugger/Breakpoints.cpp
|
|
Debugger/Breakpoints.h
|
|
Debugger/Debugger.cpp
|
|
Debugger/Debugger.h
|
|
Debugger/GECommandTable.cpp
|
|
Debugger/GECommandTable.h
|
|
Debugger/Playback.cpp
|
|
Debugger/Playback.h
|
|
Debugger/Record.cpp
|
|
Debugger/Record.h
|
|
Debugger/RecordFormat.h
|
|
Debugger/State.cpp
|
|
Debugger/State.h
|
|
Debugger/Stepping.cpp
|
|
Debugger/Stepping.h
|
|
ge_constants.h
|
|
GeConstants.cpp
|
|
GPUDefinitions.h
|
|
GeDisasm.cpp
|
|
GeDisasm.h
|
|
GPU.cpp
|
|
GPU.h
|
|
GPUCommon.cpp
|
|
GPUCommon.h
|
|
GPUCommonHW.cpp
|
|
GPUCommonHW.h
|
|
GPUState.cpp
|
|
GPUState.h
|
|
GPUStateSIMDUtil.h
|
|
Math3D.cpp
|
|
Math3D.h
|
|
Software/BinManager.cpp
|
|
Software/BinManager.h
|
|
Software/Clipper.cpp
|
|
Software/Clipper.h
|
|
Software/DrawPixel.cpp
|
|
Software/DrawPixel.h
|
|
Software/FuncId.cpp
|
|
Software/FuncId.h
|
|
Software/Lighting.cpp
|
|
Software/Lighting.h
|
|
Software/Rasterizer.cpp
|
|
Software/Rasterizer.h
|
|
Software/RasterizerRectangle.cpp
|
|
Software/RasterizerRectangle.h
|
|
Software/RasterizerRegCache.cpp
|
|
Software/RasterizerRegCache.h
|
|
Software/Sampler.cpp
|
|
Software/Sampler.h
|
|
Software/SoftGpu.cpp
|
|
Software/SoftGpu.h
|
|
Software/TransformUnit.cpp
|
|
Software/TransformUnit.h
|
|
)
|
|
|
|
# GPU has a genuine two-way dependency with Core (Core/System.cpp calls GPU_Init(), while
|
|
# all of GPU/ calls back into Core for Memory/Config/CoreTiming/etc). An OBJECT library's
|
|
# object files are always included wherever it's consumed rather than being lazily pulled
|
|
# from an archive, which sidesteps the GNU ld single-pass archive-ordering problem a normal
|
|
# two-way STATIC dependency would hit. Core links this PUBLICLY so consumers of Core get it.
|
|
add_library(GPU OBJECT ${GPU_SOURCES})
|
|
target_compile_features(GPU PUBLIC cxx_std_17)
|
|
|
|
if(LIBRETRO)
|
|
target_include_directories(GPU PRIVATE ${CMAKE_SOURCE_DIR}/libretro/libretro-common/include)
|
|
endif()
|
|
|
|
setup_target_project(GPU GPU)
|
|
|
|
# The only direct external dependencies of GPU/ itself (as opposed to Common/GPU/*, which
|
|
# already carries its own GL/Vulkan loader abstractions): raw gl*() calls in GPU/GLES, direct
|
|
# ZSTD_compress/decompress calls in GPU/Debugger/Record.cpp and Playback.cpp, and Playback.cpp
|
|
# also calls snappy_uncompress() directly.
|
|
target_link_libraries(GPU PUBLIC ${OPENGL_LIBRARIES} ${X11_LIBRARIES} Ext::Snappy)
|
|
|
|
if(USE_SYSTEM_ZSTD)
|
|
target_include_directories(GPU PRIVATE ${ZSTD_INCLUDE_DIR})
|
|
target_link_libraries(GPU PUBLIC ${ZSTD_LIBRARY})
|
|
else()
|
|
target_link_libraries(GPU PUBLIC libzstd_static)
|
|
endif()
|