mirror of
https://github.com/libretro/parallel-dc.git
synced 2026-11-07 12:37:53 -10:00
dx12_dxil.inc has every raster shader and the HDR output's as DXIL, shader model 6.0, made by dxc and signed, each held to the raster root signature (-verifyrootsignature); kernels_dx12.sh update-dxil makes it, and check compares it. DX12Pipelines::Init() asks the device for its shader model before the pipeline file is read: DXIL from 6.0 on, DXBC below, a pipeline's shaders always of one kind. The pipeline file's sum is of the shaders chosen. tools/rend/d3d_dxil.sh runs the test discs on Direct3D 12 as the device answers and with it saying 5.1 (d3d_hdr.c's D3DH_SM51): the shaders are DXIL only where the device takes it, every pipeline is made, and the pictures are the DXBC ones.
196 lines
9.3 KiB
YAML
196 lines
9.3 KiB
YAML
name: Vulkan negotiation
|
|
|
|
# The core's Vulkan device, negotiated as RetroArch does (v2, made through
|
|
# the frontend's vkCreateDevice wrapper) and as a frontend without v2 does
|
|
# (v1), on lavapipe under the validation layer: tools/vulkan/vk_negotiate.sh.
|
|
# Then the HDR output (Color Format), the frames run and the pictures read
|
|
# back: tools/vulkan/vk_hdr.sh; and its HLSL, which Direct3D 11 and 12
|
|
# draw with, against the GLSL: tools/vulkan/hdr_hlsl.sh. And ACES 2.0
|
|
# (Full)'s cube, baked by a lock-free worker off the frame, against the
|
|
# cube baked in place, under TSan and ASan/UBSan: tools/hdr/hdr_cube.sh.
|
|
# And Direct3D 11 and 12's HDR encoders and their DXBC, under wine (wined3d
|
|
# and vkd3d on lavapipe), against the GLSL: tools/hdr/hdr_d3d.sh; and the
|
|
# core's Windows build drawing with Direct3D 11 and 12 under wine, its
|
|
# 24-bit, HDR10 and scRGB pictures read back and judged:
|
|
# tools/hdr/d3d_hdr.sh. SSAA's exact average on Direct3D 12 is the
|
|
# encoders' (hdr_d3d 12ssaa, 12sums): wine's vkd3d cannot draw SSAA.
|
|
# The HDR post effects (bloom, halation, chromatic aberration) are judged
|
|
# in each against what the CPU makes of the picture (vk_hdr --post).
|
|
# And renders to textures: what is fetched off the card and when
|
|
# (tools/rend/rtt_watch_test.sh), and video memory written by DMA over
|
|
# them, with Vulkan and with OpenGL (tools/vulkan/vk_dma.sh,
|
|
# tools/gl/gl_dma.sh: Mesa's surfaceless EGL). And the translucent
|
|
# sorter's sort against a stable sort by < (tools/rend/sort_pairs_test.sh).
|
|
# And polygons drawn outside a clipping rectangle, with OpenGL and OpenGL
|
|
# ES, each renderer (tools/gl/gl_clip.sh).
|
|
# And a state saved while a render to a texture is still on the card, every
|
|
# frame run ahead, with OpenGL and OpenGL ES (tools/gl/gl_ahead.sh).
|
|
# And the OpenGL renderers compiled as macOS (clang) and the Switch (libnx)
|
|
# build them, through glsm's own GL functions (tools/gl/gl_shapes.sh).
|
|
# And a frame's vertices and indices parsed straight into memory the card
|
|
# reads, none copied, the pictures those of the lists copied, with Vulkan
|
|
# and with OpenGL (tools/vulkan/vk_parse_arena.sh, tools/gl/gl_parse_arena.sh:
|
|
# no OpenGL error either, and OpenGL ES drawing as ever), and with Direct3D
|
|
# 12 where the adapter's memory is the processor's (tools/rend/d3d_parse_arena.sh,
|
|
# under wine), and the arena's slices (tools/rend/parse_arena_test.sh).
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'core/rend/vulkan/**'
|
|
- 'core/rend/hdr/**'
|
|
- 'core/rend/dx11/**'
|
|
- 'core/rend/dx12/**'
|
|
- 'tools/rend/kernels_dxbc.sh'
|
|
- 'tools/rend/kernels_dx12.sh'
|
|
- 'tools/rend/dxil_bindings.c'
|
|
- 'core/rend/tile/pvr_compute.h'
|
|
- 'tools/hdr/**'
|
|
- 'core/libretro/**'
|
|
- 'tools/threads/live_disc.py'
|
|
- 'tools/vulkan/**'
|
|
- 'core/rend/upscaler.*'
|
|
- 'tools/rend/upscaler_test.*'
|
|
- 'core/rend/rtt_watch.*'
|
|
- 'core/rend/gles/**'
|
|
- 'core/rend/gl4/**'
|
|
- 'tools/gl/**'
|
|
- 'core/rend/TexCache.*'
|
|
- 'core/hw/sh4/sh4_mem.cpp'
|
|
- 'tools/rend/rtt_watch_test.*'
|
|
- 'core/rend/sorter.*'
|
|
- 'core/rend/sort_pairs.h'
|
|
- 'core/rend/grow_buf.h'
|
|
- 'tools/rend/sort_pairs_test.*'
|
|
- 'core/rend/parse_arena.*'
|
|
- 'core/hw/pvr/ta_index.*'
|
|
- 'core/hw/pvr/ta_list.*'
|
|
- 'core/hw/pvr/helper_classes.h'
|
|
- 'tools/rend/parse_arena_test.*'
|
|
- 'tools/rend/d3d_parse_arena.sh'
|
|
- 'tools/rend/d3d_dxil.sh'
|
|
- 'tools/rend/dx12_blend_fold_test.*'
|
|
- 'tools/rend/clip_check.py'
|
|
- 'tools/threads/live_prog.c'
|
|
- 'Makefile*'
|
|
- '.github/workflows/vulkan-negotiation.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'core/rend/vulkan/**'
|
|
- 'core/rend/hdr/**'
|
|
- 'core/rend/dx11/**'
|
|
- 'core/rend/dx12/**'
|
|
- 'tools/rend/kernels_dxbc.sh'
|
|
- 'tools/rend/kernels_dx12.sh'
|
|
- 'tools/rend/dxil_bindings.c'
|
|
- 'core/rend/tile/pvr_compute.h'
|
|
- 'tools/hdr/**'
|
|
- 'core/libretro/**'
|
|
- 'tools/threads/live_disc.py'
|
|
- 'tools/vulkan/**'
|
|
- 'core/rend/upscaler.*'
|
|
- 'tools/rend/upscaler_test.*'
|
|
- 'core/rend/rtt_watch.*'
|
|
- 'core/rend/gles/**'
|
|
- 'core/rend/gl4/**'
|
|
- 'tools/gl/**'
|
|
- 'core/rend/TexCache.*'
|
|
- 'core/hw/sh4/sh4_mem.cpp'
|
|
- 'tools/rend/rtt_watch_test.*'
|
|
- 'core/rend/sorter.*'
|
|
- 'core/rend/sort_pairs.h'
|
|
- 'core/rend/grow_buf.h'
|
|
- 'tools/rend/sort_pairs_test.*'
|
|
- 'core/rend/parse_arena.*'
|
|
- 'core/hw/pvr/ta_index.*'
|
|
- 'core/hw/pvr/ta_list.*'
|
|
- 'core/hw/pvr/helper_classes.h'
|
|
- 'tools/rend/parse_arena_test.*'
|
|
- 'tools/rend/d3d_parse_arena.sh'
|
|
- 'tools/rend/d3d_dxil.sh'
|
|
- 'tools/rend/dx12_blend_fold_test.*'
|
|
- 'tools/rend/clip_check.py'
|
|
- 'tools/threads/live_prog.c'
|
|
- 'Makefile*'
|
|
- '.github/workflows/vulkan-negotiation.yml'
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
vulkan-negotiation:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install Vulkan (lavapipe, validation layer)
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential libgl1-mesa-dev mesa-vulkan-drivers vulkan-validationlayers libvulkan1 \
|
|
glslang-tools mingw-w64 wine wine64 xvfb libegl1-mesa-dev libgl1-mesa-dri clang
|
|
- name: The OpenGL renderers as macOS and the Switch compile them
|
|
run: sh tools/gl/gl_shapes.sh
|
|
- name: Build the core
|
|
run: make -j"$(nproc)"
|
|
- name: Negotiation v2 and v1
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/vulkan/vk_negotiate.sh
|
|
- name: Renders to textures - what is fetched off the card, when, and what a DMA over them leaves
|
|
run: |
|
|
sh tools/rend/rtt_watch_test.sh
|
|
VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/vulkan/vk_dma.sh
|
|
sh tools/gl/gl_dma.sh
|
|
- name: Polygons drawn outside a clipping rectangle, with OpenGL and OpenGL ES (each renderer)
|
|
run: sh tools/gl/gl_clip.sh
|
|
- name: A state saved while a render to a texture is on the card, every frame run ahead (OpenGL and OpenGL ES)
|
|
run: sh tools/gl/gl_ahead.sh
|
|
- name: The translucent sorter's sort (radix, stable, as a sort by <)
|
|
run: sh tools/rend/sort_pairs_test.sh
|
|
- name: Direct3D 12's polygon blends, the factors folded into the shader, against the PowerVR's (wine, no device)
|
|
run: sh tools/rend/dx12_blend_fold_test.sh
|
|
- name: The frame parsed where the card reads it, not copied (the arena's slices; the pictures those of a copy)
|
|
run: |
|
|
sh tools/rend/parse_arena_test.sh
|
|
VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/vulkan/vk_parse_arena.sh
|
|
sh tools/gl/gl_parse_arena.sh
|
|
- name: The temporal upscaler's side in the core (strips matched, the request, the inputs)
|
|
run: sh tools/rend/upscaler_test.sh
|
|
- name: HDR output (HDR10, scRGB, each renderer, every Display Transform)
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/vulkan/vk_hdr.sh
|
|
- name: HDR output's HLSL against its GLSL
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/vulkan/hdr_hlsl.sh
|
|
- name: HDR output's DXBC and DXIL are their sources' (sums), the compute kernels' bindings
|
|
run: |
|
|
sh tools/rend/kernels_dxbc.sh check
|
|
sh tools/rend/kernels_dx12.sh check
|
|
sh tools/rend/kernels_dx12.sh bindings
|
|
- name: HDR output with Direct3D 11 and 12 (wine, the core's encoders, against the GLSL)
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/hdr/hdr_d3d.sh
|
|
- name: ACES 2.0 (Full)'s cube baked off the frame (threads, TSan, ASan/UBSan, no threads)
|
|
run: |
|
|
sh tools/hdr/hdr_cube.sh
|
|
SANITIZE=thread sh tools/hdr/hdr_cube.sh
|
|
SANITIZE=address,undefined UBSAN_OPTIONS=halt_on_error=1 sh tools/hdr/hdr_cube.sh
|
|
|
|
d3d11-hdr:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install mingw-w64, wine and lavapipe
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential mingw-w64 wine wine64 xvfb mesa-vulkan-drivers libvulkan1 python3
|
|
- name: Build the core for Windows
|
|
run: make -j"$(nproc)" platform=win CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++
|
|
- name: HDR output with Direct3D 11 and 12 (24-bit, refused, HDR10, scRGB, each renderer)
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/hdr/d3d_hdr.sh parallel_dc_libretro.dll
|
|
- name: Direct3D 11 - video memory written by DMA over renders to textures (Direct3D 12 with D3D12_DLLS)
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/rend/d3d_dma.sh parallel_dc_libretro.dll
|
|
- name: Direct3D 12 drawing the frame from where it is parsed, every frame the one of the lists copied
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/rend/d3d_parse_arena.sh parallel_dc_libretro.dll
|
|
- name: Direct3D 12's shaders as DXIL where the device takes shader model 6.0, as DXBC where it does not
|
|
run: VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json sh tools/rend/d3d_dxil.sh parallel_dc_libretro.dll
|