* video_core: Take the float mode of compute shaders from COMPUTE_PGM_RSRC1
BuildRuntimeInfo copies FLOAT_MODE from SPI_SHADER_PGM_RSRC1 for every
graphics stage but not for compute. RuntimeInfo::Initialize zeroes the
struct, so every compute shader was translated with mode 0 (round to
nearest even, fp32 and fp16/fp64 denormals flushed) whatever the guest
asked for.
Name the four FLOAT_MODE fields of COMPUTE_PGM_RSRC1 (bits 12-19, the
same layout as the graphics program registers) and copy them the way
BuildCommon does for the other stages. The fields are u64 like the rest
of the bit-field: with the MSVC ABI a field of a different type size
starts a new allocation unit, which would move num_user_regs and every
field after it.
* video_core: Use the float mode enum types in ComputeProgram
---------
Co-authored-by: nikmparis217-ux <295578344+nikmparis217-ux@users.noreply.github.com>
* vk_runtime: Revert to interval sets for barrier tracking
Perf capture shows they are faster in almost all cases due to not needing rebalancing after every insert
* buffer_cache: Dont use copysparsememory for streaming copies
* fetch_shader: Optimize fetch shader parsing
* shader_recompiler: Optimize common case of sharp fetch
Almost always the sharp will be contigious in flatbuf so just use a single load op to load it
* remove zlib
* vk_rasterizer: Check dst region not in sync batch before doing cpu fast path
* address_space: Maintain sparse page table of backing pointers
Can be used to implement CopySparseMemory lock free and cheaply
* vk_rasterizer: Proper gds barriers
* texture_cache: Bring back lock
* fetch_shader: Handle v_mov_b32
* address_space: Avoid out of bounds access with higher than 40bit addresses
so stephen doesnt kill me
* core: Add setting to control inlining of fetch shader
SystemSetup stored the result of SystemSetupCore in a u32, so the
`result < 0` guards could never be taken and an invalid system option
was reported back to the guest as ORBIS_OK.
* Fix config corruption on close and replace error with unreachable for failing to load configs
* Clean up config init code a bit
* Fix some hotkeys accidentally triggering twice
* Add unreachable for user_settings as well
* sir clang offnir, the all-formatting
* oops lmao
* oh come on why does clang-format have to find some new random edge case every few months
* update tests that failed
* fuck if i know what this was supposed to be
* :we:
* Change stub generation to create stubs dynamically at runtime with xbyak
* Log execute access violations
* arm macos is now unsupported architecture
* a global constexpr array means a pointer compare is enough here
* With duplicate checking, 2000 is overkill for a default capacity
* Remove one level of unnecessary indirection
* Swap trampoline protection from r-x to rwx
* Do not check library version and symbol type when searching for exports in the linker
* i swear my next PR will be the update CI clang version one
* Remove a line I left in for debugging
* Update comment
* random typo I spotted
* Handle NoType exports
* Added pTo and pFrom to OrbisNpPeerAddressA support
* all mighty clang
* improved OrbisNpSessionInvitationEventParam
* changed diagnostic to debug
* all mighty clang again
Trace MaskedBitCount32 inputs back to their ballot source and apply wave64 lowering only when that ballot is in uniform control flow. Keep divergent ballot/MBCNT pairs on native wave32 semantics.
* common: Optimize logger by replacing hash map with table lookup and hide implementation details in cpp file
Also bring back assertion noinline functions, this makes call sites of ASSERT/UNREACHABLE much cleaner
* clang format
* review comments
* fix tests
* fix build pt1
* fix build pt2
* fix build pt3
* Add Shutdown method to Socket interface
* Add Shutdown method to PosixSocket class
* Add Shutdown method to UnixSocket class
* Add Shutdown method to P2PSocket class
* Add error handling and logging to sys_shutdown
* Add sys_shutdown function to kernel library
* buffer_cache: Begin memory tracker rework
* buffer_cache: Implement upload batching
* buffer_cache: Dont use copysparsememory for stream copies
Will need a faster way to check if page is mapped, but also using it has heavy perf overhead
* buffer_cache: Adjust region manager so bitset updates are vectorized
Also remove readable/writeable bitsets since they arent actually needed, should allow more data to fit in cpu caches
* memory: Fix build
* buffer_cache: Bring back copy sparse memory
* staging_pool: Allow requesting unsychronized buffers
Prevents large memory spikes from tiler
* page_manager: Add null check
* video_core: Cleanup implementation
* fix build
* buffer_cache: Remove dead function
* liverpool: Fix nullgpu
* host_shaders: embed shaders as spv
* always clang-format and reuse...
* fix commented out #pragma once in generated code
* use glslang to build shaders
* add cstdint to generated headers
* Log errors returned from UFFDIO_* operations
* Maintain userfaultfd registration on all reserved memory at all times
* Set userfaultfd handler thread name
* Do not lock GPU resources while handling writeprotection faults originating from GpuCommandProcessor thread
* Style fixes
* Use gettid to retrieve the GPUComm thread id
* shader_recompiler: implement fragment sample coverage input
* shader_recompiler: move sample coverage handling to IR
Keep the SPIR-V backend limited to raw built-in loads and construct the
guest sample coverage value in the fragment prologue.
Suggested-by: @raphaelthegreat
* shader_recompiler: Emit GetPcLo as constant
Fixes the assertion triggered by this instruction
* shader_recompiler: Convert mbcnt into pseudo-instruction for better pattern matching and improve reliability of detection
* phi_simplification_pass: Copy users before iterating
Running local CSE can mutate instructions in the list
* vk_instance: Enable maintenance5 if available