mirror of
https://github.com/libretro/parallel-dc.git
synced 2026-11-07 04:25:58 -10:00
Where the adapter's memory is the processor's, kept coherent with its cache (CacheCoherentUMA), the frame's vertices, indices and modifier volumes' triangles are parsed straight into a buffer of a custom heap with write-back pages, mapped for good, in four slices (dx12/parse_arena_d3d12.h, C89): no copy into the upload ring. The sorted passes' indices go after the frame's there. A slice is taken when the context's fence has passed the value of the submission that last drew from it, polled; with none free, or another adapter, the frame is copied as ever. Render() is the base's, final, around RenderFrame(). d3d_hdr.c's D3DH_NOT_UMA has the adapter say otherwise and D3DH_EVERY prints every frame's sum; d3d_parse_arena.sh checks every render drawn from where it was parsed and every frame the one of the lists copied, under wine.
500 lines
19 KiB
Makefile
500 lines
19 KiB
Makefile
DEPS_DIR = $(CORE_DIR)/core/deps
|
|
LIBRETRO_COMM_DIR = $(CORE_DIR)/core/libretro-common
|
|
|
|
INCFLAGS += -I$(CORE_DIR)/core/libretro \
|
|
-I$(CORE_DIR)/core/ \
|
|
-I$(DEPS_DIR) \
|
|
-I$(LIBRETRO_COMM_DIR)/include \
|
|
-I$(DEPS_DIR)/vixl \
|
|
-I$(DEPS_DIR)/stb
|
|
|
|
SOURCES_C ?=
|
|
SOURCES_CXX := \
|
|
$(CORE_DIR)/core/hw/arm7/arm_mem.cpp \
|
|
$(CORE_DIR)/core/hw/arm7/arm7.cpp \
|
|
$(CORE_DIR)/core/hw/arm7/arm7_rec.cpp \
|
|
$(CORE_DIR)/core/hw/arm7/arm7_rec_x64.cpp \
|
|
$(CORE_DIR)/core/hw/arm7/arm7_rec_x86.cpp \
|
|
$(CORE_DIR)/core/hw/arm7/arm7_rec_arm64.cpp \
|
|
$(CORE_DIR)/core/hw/arm7/vbaARM.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/aica/dsp.cpp \
|
|
$(CORE_DIR)/core/hw/aica/dsp_arm64.cpp \
|
|
$(CORE_DIR)/core/hw/aica/dsp_interp.cpp \
|
|
$(CORE_DIR)/core/hw/aica/dsp_x64.cpp \
|
|
$(CORE_DIR)/core/hw/aica/dsp_x86.cpp \
|
|
$(CORE_DIR)/core/hw/aica/aica.cpp \
|
|
$(CORE_DIR)/core/hw/aica/aica_if.cpp \
|
|
$(CORE_DIR)/core/hw/aica/aica_mem.cpp \
|
|
$(CORE_DIR)/core/hw/aica/sgc_if.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/holly/holly_intc.cpp \
|
|
$(CORE_DIR)/core/hw/holly/sb.cpp \
|
|
$(CORE_DIR)/core/hw/holly/sb_mem.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/gdrom/gdrom_response.cpp \
|
|
$(CORE_DIR)/core/hw/gdrom/gdromv3.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/maple/maple_helper.cpp \
|
|
$(CORE_DIR)/core/hw/maple/maple_devs.cpp \
|
|
$(CORE_DIR)/core/hw/maple/maple_if.cpp \
|
|
$(CORE_DIR)/core/hw/maple/maple_cfg.cpp \
|
|
$(CORE_DIR)/core/hw/maple/vmu_beep.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/mem/_vmem.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/pvr/drkPvr.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/elan_host.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/Renderer_if.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/pvr_mem.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/pvr_regs.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/pvr_sb_regs.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/spg.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/ta.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/ta_ctx.cpp \
|
|
$(CORE_DIR)/core/hw/pvr/ta_vtx.cpp \
|
|
$(CORE_DIR)/core/rend/CustomTexture.cpp \
|
|
$(CORE_DIR)/core/rend/sorter.cpp \
|
|
$(CORE_DIR)/core/rend/upscaler.cpp \
|
|
$(CORE_DIR)/core/rend/TexCache.cpp \
|
|
$(CORE_DIR)/core/rend/rtt_watch.cpp \
|
|
$(CORE_DIR)/core/rend/last_picture.cpp \
|
|
$(CORE_DIR)/core/rend/tile/compute_frame.cpp \
|
|
\
|
|
$(CORE_DIR)/core/hw/sh4/sh4_mmr.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/sh4_mem.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/sh4_interrupts.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/sh4_rom.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/sh4_core_regs.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/sh4_sched.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/sh4_opcode_list.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/interpr/sh4_interpreter.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/interpr/sh4_fpu.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/interpr/sh4_opcodes.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/serial.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/rtc.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/bsc.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/tmu.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/ccn.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/intc.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/ubc.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/cpg.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/dmac.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/mmu.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/modules/fastmmu.cpp \
|
|
$(CORE_DIR)/core/imgread/ImgReader.cpp \
|
|
$(CORE_DIR)/core/imgread/cdi.cpp \
|
|
$(CORE_DIR)/core/imgread/chd.cpp \
|
|
$(CORE_DIR)/core/imgread/common.cpp \
|
|
$(CORE_DIR)/core/imgread/cue.cpp \
|
|
$(CORE_DIR)/core/imgread/gdi.cpp \
|
|
$(CORE_DIR)/core/log/LogManagerLibretro.cpp \
|
|
\
|
|
$(CORE_DIR)/core/cheats.cpp \
|
|
$(CORE_DIR)/core/nullDC.cpp \
|
|
$(CORE_DIR)/core/serialize.cpp \
|
|
$(CORE_DIR)/core/stdclass.cpp \
|
|
\
|
|
$(DEPS_DIR)/crypto/sha256.cpp \
|
|
$(DEPS_DIR)/crypto/md5.cpp \
|
|
$(DEPS_DIR)/libelf/elf.cpp \
|
|
$(DEPS_DIR)/libelf/elf32.cpp \
|
|
$(DEPS_DIR)/libelf/elf64.cpp \
|
|
$(DEPS_DIR)/chdpsr/cdipsr.cpp \
|
|
\
|
|
$(CORE_DIR)/core/reios/reios_elf.cpp \
|
|
$(CORE_DIR)/core/reios/reios.cpp \
|
|
$(CORE_DIR)/core/reios/gdrom_hle.cpp \
|
|
$(CORE_DIR)/core/reios/descrambl.cpp \
|
|
\
|
|
|
|
# CHD images are read by libretro-common's clean-room rchd reader. Its
|
|
# FLAC and zstd hunk codecs come from the same tree; deflate and LZMA
|
|
# are the archive codecs below, and the version 5 map needs
|
|
# encoding_huffman.c to open at all.
|
|
CHD_SOURCES_C = \
|
|
$(CORE_DIR)/core/imgread/chd_image.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/chd/rchd.c \
|
|
$(LIBRETRO_COMM_DIR)/encodings/encoding_huffman.c \
|
|
$(LIBRETRO_COMM_DIR)/encodings/encoding_rzstd.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/flac/rflac.c
|
|
|
|
# zip and 7z archives: rzip_archive over encoding_deflate.c, r7z_archive
|
|
# over the LZMA/LZMA2/BCJ units.
|
|
ARCHIVE_SOURCES_C = \
|
|
$(CORE_DIR)/core/archive/archive.c \
|
|
$(LIBRETRO_COMM_DIR)/encodings/encoding_deflate.c \
|
|
$(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_archive.c \
|
|
$(LIBRETRO_COMM_DIR)/encodings/encoding_rbzip2.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_lzma.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_lzma2.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_lzma_stream.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_bcj2.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_filters.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/zip/rzip_archive.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/rar/rrar_archive.c \
|
|
$(LIBRETRO_COMM_DIR)/formats/rar/rrar_ppmd7.c \
|
|
$(LIBRETRO_COMM_DIR)/features/features_cpu.c
|
|
|
|
PICOTCP_INCFLAGS = \
|
|
-I$(DEPS_DIR)/picotcp/include \
|
|
-I$(DEPS_DIR)/picotcp/modules
|
|
|
|
PICOTCP_CFLAGS = -DPICO_SUPPORT_UDP -DPICO_SUPPORT_DHCPD
|
|
|
|
PICOTCP_SOURCES_C = \
|
|
$(DEPS_DIR)/picotcp/modules/pico_arp.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_dev_ppp.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_dhcp_common.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_dhcp_server.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_dns_client.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_dns_common.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_ethernet.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_fragments.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_ipv4.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_socket_tcp.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_socket_udp.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_tcp.c \
|
|
$(DEPS_DIR)/picotcp/modules/pico_udp.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_device.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_frame.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_md5.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_protocol.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_socket_multicast.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_socket.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_stack.c \
|
|
$(DEPS_DIR)/picotcp/stack/pico_tree.c
|
|
|
|
XXHASH_SOURCES_C = $(DEPS_DIR)/xxhash/xxhash.c
|
|
|
|
# The NAOMI 2's geometry processor
|
|
SOURCES_C += $(CORE_DIR)/core/hw/pvr/elan.c
|
|
|
|
# The ROMs of a NAOMI cartridge that share a range a word each in turn
|
|
SOURCES_C += $(CORE_DIR)/core/hw/naomi/naomi_interleave.c
|
|
|
|
# What a GD-ROM game's DIMM board leaves in the NAOMI's memory
|
|
SOURCES_C += $(CORE_DIR)/core/hw/naomi/naomi_dimm.c
|
|
|
|
# The lists a frame's parse appends to (List<T>'s, typed: helper_classes.h)
|
|
SOURCES_C += $(CORE_DIR)/core/hw/pvr/ta_list.c
|
|
# ...and a strip's indices (make_index()'s)
|
|
SOURCES_C += $(CORE_DIR)/core/hw/pvr/ta_index.c
|
|
# ...and where a renderer has them parsed to (core/rend/parse_arena.h)
|
|
SOURCES_C += $(CORE_DIR)/core/rend/parse_arena.c
|
|
|
|
SOURCES_ASM :=
|
|
|
|
ifeq ($(SYSTEM_PICOTCP), 1)
|
|
CFLAGS += $(shell pkg-config --cflags picotcp)
|
|
LIBS += $(shell pkg-config --libs picotcp)
|
|
else
|
|
INCFLAGS += $(PICOTCP_INCFLAGS)
|
|
CFLAGS += $(PICOTCP_CFLAGS)
|
|
SOURCES_C += $(PICOTCP_SOURCES_C)
|
|
endif
|
|
|
|
ifeq ($(SYSTEM_XXHASH), 1)
|
|
CFLAGS += $(shell pkg-config --cflags libxxhash)
|
|
LIBS += $(shell pkg-config --libs libxxhash)
|
|
else
|
|
SOURCES_C += $(XXHASH_SOURCES_C)
|
|
endif
|
|
|
|
ifeq ($(ENABLE_MODEM), 1)
|
|
INCFLAGS += -I$(CORE_DIR)/core/deps/miniupnpc
|
|
SOURCES_CXX += $(CORE_DIR)/core/hw/modem/dns.cpp \
|
|
$(CORE_DIR)/core/hw/modem/modem.cpp \
|
|
$(CORE_DIR)/core/hw/bba/bba.cpp \
|
|
$(CORE_DIR)/core/hw/bba/rtl8139c.cpp \
|
|
$(CORE_DIR)/core/network/picoppp.cpp \
|
|
$(CORE_DIR)/core/network/miniupnp.cpp
|
|
SOURCES_CXX += $(CORE_DIR)/core/hw/modem/v42.cpp \
|
|
$(CORE_DIR)/core/hw/modem/v42bis.cpp \
|
|
$(CORE_DIR)/core/network/dcnet.cpp
|
|
|
|
SOURCES_C += \
|
|
$(CORE_DIR)/core/deps/miniupnpc/addr_is_reserved.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/igd_desc_parse.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/upnpreplyparse.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/upnpcommands.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/upnperrors.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/connecthostport.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/portlistingparse.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/receivedata.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/upnpdev.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/minissdpc.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/miniwget.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/miniupnpc.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/minixml.c \
|
|
$(CORE_DIR)/core/deps/miniupnpc/minisoap.c
|
|
|
|
CORE_DEFINES += -DENABLE_MODEM -DMINIUPNP_STATICLIB
|
|
endif
|
|
|
|
ifeq ($(HAVE_GL), 1)
|
|
SOURCES_CXX += $(CORE_DIR)/core/rend/gles/gles.cpp \
|
|
$(CORE_DIR)/core/rend/gles/gldraw.cpp \
|
|
$(CORE_DIR)/core/rend/gles/gltex.cpp \
|
|
$(CORE_DIR)/core/rend/gles/gl_texdecoder.cpp \
|
|
$(CORE_DIR)/core/rend/gles/gl_writeout.cpp \
|
|
$(CORE_DIR)/core/rend/gles/glprogram_cache.cpp
|
|
ifeq ($(HAVE_GL4), 1)
|
|
SOURCES_CXX += $(CORE_DIR)/core/rend/gl4/gles.cpp \
|
|
$(CORE_DIR)/core/rend/gl4/gldraw.cpp \
|
|
$(CORE_DIR)/core/rend/gl4/gltex.cpp \
|
|
$(CORE_DIR)/core/rend/gl4/abuffer.cpp \
|
|
$(CORE_DIR)/core/rend/gles/ta_decoder_gl.cpp
|
|
# (where a frame is parsed when the card draws it from there: gles/parse_arena_gl.h)
|
|
SOURCES_C += $(CORE_DIR)/core/rend/gles/parse_arena_gl.c
|
|
endif
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/rglgen.c \
|
|
$(LIBRETRO_COMM_DIR)/glsm/glsm.c
|
|
ifeq ($(GLES), 1)
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_es2.c
|
|
else
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_gl.c
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(HAVE_VULKAN), 1)
|
|
# (the shaders are SPIR-V made when the source is: tools/rend/kernels_spv.sh; no GLSL compiler is built in)
|
|
INCFLAGS += -I$(DEPS_DIR)/khronos
|
|
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/vulkan/vulkan_symbol_wrapper.c \
|
|
$(CORE_DIR)/core/rend/vulkan/vk_heap.c \
|
|
$(CORE_DIR)/core/rend/vulkan/parse_arena_vk.c \
|
|
$(CORE_DIR)/core/rend/vulkan/hdr_encode_vk.c
|
|
SOURCES_CXX += \
|
|
$(CORE_DIR)/core/rend/vulkan/vulkan_context.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/heap.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/buffer.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/drawer.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/motion_pass.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/writeout.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/rtt_read.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/pipeline.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/pso.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/quad.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/shaders.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/texture.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/tex_decoder.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/ta_decoder.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/vmu.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/vulkan_renderer.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/oit/oit_drawer.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/oit/oit_pipeline.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/oit/oit_renderer.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/oit/oit_renderpass.cpp \
|
|
$(CORE_DIR)/core/rend/vulkan/compute_drawer.cpp
|
|
endif
|
|
|
|
# Direct3D 11, on Windows: the frontend's device, the shaders compiled when
|
|
# they are first needed
|
|
ifeq ($(HAVE_D3D11), 1)
|
|
SOURCES_CXX += \
|
|
$(CORE_DIR)/core/rend/dx11/dx11context_lr.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_overlay.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_nvapi.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_renderer.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_writeout.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_renderstate.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_shaders.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_ta_decoder.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_texdecoder.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/dx11_texture.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/oit/dx11_oitrenderer.cpp \
|
|
$(CORE_DIR)/core/rend/dx11/oit/dx11_oitshaders.cpp
|
|
SOURCES_C += $(CORE_DIR)/core/rend/hdr/hdr_encode_d3d11.c
|
|
endif
|
|
|
|
# Direct3D 12, on Windows: the frontend's device and queue, the shaders DXBC
|
|
# made when the core is built (rend/dx12/dx12_dxbc.inc)
|
|
ifeq ($(HAVE_D3D12), 1)
|
|
SOURCES_CXX += \
|
|
$(CORE_DIR)/core/rend/dx12/dx12context_lr.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_overlay.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_pso.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_nvapi.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_renderer.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_shaders.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_ta_decoder.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_compute.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_writeout.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_texdecoder.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/dx12_texture.cpp \
|
|
$(CORE_DIR)/core/rend/dx12/oit/dx12_oitrenderer.cpp
|
|
SOURCES_C += $(CORE_DIR)/core/rend/hdr/hdr_encode_d3d12.c \
|
|
$(CORE_DIR)/core/rend/dx12/parse_arena_d3d12.c
|
|
endif
|
|
|
|
# The HDR output's Display Transform (rend/hdr/, Color Format), for the
|
|
# renderers that have the HDR output
|
|
ifneq (,$(filter 1,$(HAVE_VULKAN) $(HAVE_D3D11) $(HAVE_D3D12)))
|
|
SOURCES_C += $(CORE_DIR)/core/rend/hdr/hdr_output.c \
|
|
$(CORE_DIR)/core/rend/hdr/hdr_transform.c \
|
|
$(CORE_DIR)/core/rend/hdr/hdr_aces2.c \
|
|
$(CORE_DIR)/core/rend/hdr/hdr_display.c \
|
|
$(CORE_DIR)/core/rend/hdr/hdr_libretro.c
|
|
endif
|
|
|
|
# NVIDIA's NVAPI, loaded when it is run, for either Direct3D renderer
|
|
# (libretro-common's loader, gfx/nvidia/nvapi_loader.h)
|
|
ifneq (,$(filter 1,$(HAVE_D3D11) $(HAVE_D3D12)))
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/gfx/nvidia/nvapi_loader.c
|
|
endif
|
|
|
|
# Shaders and pipelines made ahead on a thread of their own, for either
|
|
# Direct3D renderer (rend/d3d_warm.h)
|
|
ifneq (,$(filter 1,$(HAVE_D3D11) $(HAVE_D3D12)))
|
|
SOURCES_C += $(CORE_DIR)/core/rend/d3d_warm.c
|
|
endif
|
|
ifeq ($(HAVE_D3D11), 1)
|
|
SOURCES_C += $(CORE_DIR)/core/rend/d3d_shader_cache.c
|
|
endif
|
|
|
|
# Direct3D 9, on Windows: the frontend's device, every shader compiled when
|
|
# the renderer is first set up
|
|
ifeq ($(HAVE_D3D9), 1)
|
|
SOURCES_CXX += \
|
|
$(CORE_DIR)/core/rend/dx9/dx9context_lr.cpp \
|
|
$(CORE_DIR)/core/rend/dx9/dx9_overlay.cpp \
|
|
$(CORE_DIR)/core/rend/dx9/dx9_renderer.cpp \
|
|
$(CORE_DIR)/core/rend/dx9/dx9_shaders.cpp \
|
|
$(CORE_DIR)/core/rend/dx9/dx9_texture.cpp \
|
|
$(CORE_DIR)/core/rend/dx9/dx9_texdecoder.cpp
|
|
endif
|
|
|
|
SOURCES_CXX += $(CORE_DIR)/core/hw/naomi/naomi.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/naomi_cart.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/decrypt.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/m1cartridge.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/m4cartridge.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/awcartridge.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/gdcartridge.cpp \
|
|
$(CORE_DIR)/core/hw/flashrom/x76f100.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/naomi_m3comm.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/card_reader.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/touchscreen.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/hopper.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/printer.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/midiffb.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/systemsp.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/dinokich.cpp \
|
|
$(CORE_DIR)/core/hw/naomi/dinokich_card.cpp \
|
|
$(CORE_DIR)/core/network/naomi_network.cpp
|
|
|
|
# The device in the Dreamcast's expansion port, in every build
|
|
SOURCES_CXX += $(CORE_DIR)/core/network/netstate.cpp
|
|
|
|
ifeq ($(HAVE_GENERIC_JIT), 1)
|
|
DYNAREC_USED = 1
|
|
SOURCES_CXX += $(CORE_DIR)/core/rec-cpp/rec_cpp.cpp
|
|
endif
|
|
|
|
# Recompiler (x64)
|
|
ifneq ($(filter $(WITH_DYNAREC), x86_64 x64),)
|
|
DYNAREC_USED = 1
|
|
SOURCES_CXX += $(CORE_DIR)/core/rec-x64/rec_x64.cpp
|
|
|
|
# Recompiler (x86 32bit)
|
|
else ifneq ($(filter $(WITH_DYNAREC), i386 i686 x86),)
|
|
DYNAREC_USED = 1
|
|
SOURCES_CXX += $(CORE_DIR)/core/rec-x86/rec_x86.cpp
|
|
endif
|
|
|
|
|
|
# Recompiler (ARM)
|
|
ifeq ($(WITH_DYNAREC), arm)
|
|
DYNAREC_USED = 1
|
|
SOURCES_CXX += $(CORE_DIR)/core/rec-ARM/rec_arm.cpp
|
|
SOURCES_ASM += $(CORE_DIR)/core/rec-ARM/ngen_arm.S
|
|
endif
|
|
|
|
# Recompiler (ARM64)
|
|
ifneq ($(filter $(WITH_DYNAREC), arm64 aarch64),)
|
|
DYNAREC_USED = 1
|
|
# (for macOS, what it has is in rec_arm64.cpp, in Apple's syntax)
|
|
ifeq (,$(findstring osx,$(platform)))
|
|
SOURCES_ASM += $(CORE_DIR)/core/rec-ARM64/ngen_arm64.S
|
|
endif
|
|
SOURCES_CXX += $(CORE_DIR)/core/rec-ARM64/rec_arm64.cpp \
|
|
$(DEPS_DIR)/vixl/code-buffer-vixl.cc \
|
|
$(DEPS_DIR)/vixl/compiler-intrinsics-vixl.cc \
|
|
$(DEPS_DIR)/vixl/cpu-features.cc \
|
|
$(DEPS_DIR)/vixl/utils-vixl.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/assembler-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/cpu-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/cpu-features-auditor-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/decoder-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/disasm-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/instructions-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/instrument-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/logic-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/macro-assembler-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/operands-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/pointer-auth-aarch64.cc \
|
|
$(DEPS_DIR)/vixl/aarch64/simulator-aarch64.cc
|
|
endif
|
|
|
|
# Dynarec
|
|
ifeq ($(DYNAREC_USED), 1)
|
|
SOURCES_CXX += $(CORE_DIR)/core/hw/sh4/dyna/decoder.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/dyna/driver.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/dyna/blockmanager.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/dyna/wait_site.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/dyna/shil.cpp \
|
|
$(CORE_DIR)/core/hw/sh4/dyna/ssa.cpp
|
|
endif
|
|
|
|
SOURCES_CXX += $(CORE_DIR)/core/libretro/libretro.cpp \
|
|
$(CORE_DIR)/core/libretro/audiostream.cpp \
|
|
$(CORE_DIR)/core/libretro/common.cpp \
|
|
$(CORE_DIR)/core/libretro/vmem_utils.cpp
|
|
|
|
SOURCES_C += $(DEPS_DIR)/coreio/coreio.c
|
|
SOURCES_C += $(CORE_DIR)/core/savewriter.c
|
|
|
|
# When statically linked into RetroArch (e.g. libnx), the frontend already
|
|
# compiles these libretro-common sources; building them again would duplicate
|
|
# symbols at link time. The headers stay -- they now match current upstream, so
|
|
# the declarations agree with the objects RetroArch provides.
|
|
ifneq ($(STATIC_LINKING), 1)
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/memmap/memalign.c \
|
|
$(LIBRETRO_COMM_DIR)/file/file_path.c \
|
|
$(LIBRETRO_COMM_DIR)/file/file_path_io.c \
|
|
$(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.c \
|
|
$(LIBRETRO_COMM_DIR)/vfs/vfs_prefetch.c \
|
|
$(LIBRETRO_COMM_DIR)/streams/file_stream.c \
|
|
$(LIBRETRO_COMM_DIR)/streams/file_stream_transforms.c \
|
|
$(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \
|
|
$(LIBRETRO_COMM_DIR)/compat/compat_strl.c \
|
|
$(LIBRETRO_COMM_DIR)/compat/fopen_utf8.c \
|
|
$(LIBRETRO_COMM_DIR)/compat/compat_strcasestr.c \
|
|
$(LIBRETRO_COMM_DIR)/file/retro_dirent.c \
|
|
$(LIBRETRO_COMM_DIR)/string/stdstring.c \
|
|
$(LIBRETRO_COMM_DIR)/string/rstrtod.c \
|
|
$(LIBRETRO_COMM_DIR)/time/rtime.c
|
|
endif
|
|
|
|
ifeq ($(NO_THREADS), 1)
|
|
else
|
|
ifneq ($(STATIC_LINKING), 1)
|
|
SOURCES_C += $(LIBRETRO_COMM_DIR)/rthreads/rthreads.c \
|
|
$(LIBRETRO_COMM_DIR)/rthreads/retro_eventcount.c \
|
|
$(LIBRETRO_COMM_DIR)/queues/retro_spsc.c
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(HAVE_TEXUPSCALE), 1)
|
|
SOURCES_CXX += $(DEPS_DIR)/xbrz/xbrz.cpp
|
|
endif
|
|
|
|
ifeq ($(HAVE_CHD), 1)
|
|
SOURCES_C += $(CHD_SOURCES_C)
|
|
endif
|
|
|
|
SOURCES_C += $(ARCHIVE_SOURCES_C)
|
|
|