Commit Graph

3704 Commits

Author SHA1 Message Date
riperiperi 4b47d7b5bc Maintain identity swizzle view of textures for rendering 2024-09-15 08:42:19 -04:00
riperiperi 75b0ddf85b Fix a bunch of issues with texture copy and flush (#32)
* Fix a bunch of issues with texture copy and flush

* TextureCopy helper class, fix clear bug
2024-09-15 08:42:19 -04:00
Isaac Marovitz 50284713eb Cleanup + Format 2024-09-15 08:42:19 -04:00
Isaac Marovitz 4363fa0ced Fix trying to reserve size 0 in staging buffer 2024-09-15 08:42:19 -04:00
Isaac Marovitz dbda96f26c Fix zero buff not being reset 2024-09-15 08:42:19 -04:00
Isaac Marovitz e17e6ec994 Dirty Arg Buffers on Program Change 2024-09-15 08:42:19 -04:00
Isaac Marovitz a47d9fd1d2 Least allocations in the west 2024-09-15 08:42:19 -04:00
Isaac Marovitz 3646e18076 Don’t use Enum.HasFlag 2024-09-15 08:42:19 -04:00
Isaac Marovitz fd2e64c0c7 Metal: Better Bindings (#29)
* Tell GAL to use Vk model (and break everything)

* ResourceBindingSegments

* Set information on backend caps

* Get ready to break everything

* Refactor EncoderStateManager

* Remove padding from helper shaders

* Fix ref array sizes

* Seperate vert & frag buffers

* Shader-side changes

* Fixes

* Fix some helper shader resource layouts

* Sort by binding id

* Fix helper shader layouts

* Don’t do inline vertex buffer updates

* Check for null storage
2024-09-15 08:42:19 -04:00
Isaac Marovitz 25a4c375ad Update comment for Metal 2024-09-15 08:42:19 -04:00
Isaac Marovitz 82eec9a147 Don’t do inline vertex buffer updates
Somehow broke zero buff MTLVertexDescriptor, but fixes broken geoemtry so I’m pushing anyway
2024-09-15 08:42:19 -04:00
riperiperi 411874ae4b Create command buffers when rented rather than in advance (#31)
* Make it less likely to freeze, but the creation of the command buffer should probably be moved

* Create command buffers as they're rented rather than in advance
2024-09-15 08:42:19 -04:00
riperiperi fb5255fc17 Preload command speedup, Texture/buffer data flush, blit shader fix (#30)
* Move encoder state to be tied to command buffer, so preload and background cbs have their own encoder state

* Texture buffer/data flush, blit shader fix
2024-09-15 08:42:19 -04:00
Isaac Marovitz d4b1e95359 Dont bind images in texture slots 2024-09-15 08:42:19 -04:00
Isaac Marovitz afc130fb88 Stop depth/stencil blits from crashing everything 2024-09-15 08:42:19 -04:00
riperiperi 40002a4a48 Fix Geometry/TFB on compute, Buffer Textures, add Window Resizing (#28) 2024-09-15 08:42:19 -04:00
riperiperi 3c25b87e1d State and cache optimization (#27)
* WIP pipeline/depth state cache rework

* Fix some issues

* Fix some more default values

* Reduce allocations for state changes

* fix helpershader stuff

* explanation comment

* fix depth bias
2024-09-15 08:42:19 -04:00
Isaac Marovitz bc3ec9ded8 Fragment input interpolation qualifiers
Fixes Mario’s shadow in SMO
2024-09-15 08:42:19 -04:00
Isaac Marovitz 534038d31f CommandBufferBarrier 2024-09-15 08:42:19 -04:00
riperiperi 8dad2953a4 Add constrained border colours to samplers (#26) 2024-09-15 08:42:19 -04:00
Isaac Marovitz 43b27faf9d Don’t bind byte format converted index buffers at requested index 2024-09-15 08:42:19 -04:00
Isaac Marovitz 963bbf7267 Render target deduplication
not sure if this is working
2024-09-15 08:42:19 -04:00
Isaac Marovitz 925897e163 Fix CBP not doing its job
Thanks peri (again)
2024-09-15 08:42:19 -04:00
Isaac Marovitz 70a05909ed Fix blend descriptors not dirting render pipeline
Thanks peri
2024-09-15 08:42:19 -04:00
Isaac Marovitz 3b95361d75 Support non-index quad draws
Fixes Deltarune
2024-09-15 08:42:19 -04:00
Isaac Marovitz 5ea6442886 Be better about memory 2024-09-15 08:42:19 -04:00
Isaac Marovitz 4ec7062727 Fix stencil clears 2024-09-15 08:42:19 -04:00
Isaac Marovitz e269be41aa Enable Alpha Test workaround on Metal 2024-09-15 08:42:19 -04:00
Isaac Marovitz 2cb46a953b Fix Cull FrontAndBack 2024-09-15 08:42:19 -04:00
Isaac Marovitz f5db6ba50a Warning about host map buffer creation 2024-09-15 08:42:19 -04:00
Isaac Marovitz 9b4a5ef939 Fix fragment point_coord in 2024-09-15 08:42:19 -04:00
Isaac Marovitz 5566979d5e Argument Buffers (#24)
* Stuff

* More arg buffer stuff

* Fixes

* Rebase

* Pass storage buffers to inline functions

* Fix binding

* Fix typo + Fix a couple shaders

* Enforce ids

* Dispose

* Mark used buffers as resident

* Update depth clear shader

* Fix non-contiguous struct defs

* Update ChangeBufferStride

* Fix StorageBuffer assignments

* Fix odyssey crash

* Retain buffer bindings

* Pad Std140

* Set texture data with safe buffers

* Clone buffers

* Always declare vert in

* Stop clears from breaking OpenGL games

* Fix depth clear

* Use invariant position

* Horribly inefficient texture & sampler arg buffers

* Fix missing struct access

* Minimise rebinds as much as possible

* Build arg buffers on staging buffer
2024-09-15 08:42:19 -04:00
Isaac Marovitz 3ad15aa114 VoteAllEqual, FindLSB/MSB 2024-09-15 08:42:19 -04:00
Isaac Marovitz 664d1efa18 Fix vertex “built-ins”
Only declare main func out in main

Fix simd_ballot

Fix thread_index_in_simdgroup outside of compute

Fix atomic operations

instance_index
2024-09-15 08:42:19 -04:00
Isaac Marovitz 2dd5e272d7 Actually clear the right render target 2024-09-15 08:42:19 -04:00
Isaac Marovitz b2fdb4cfdd Big GetData()
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
2024-09-15 08:42:19 -04:00
Isaac Marovitz c92b74e376 Fix Animal Crossing Crash 2024-09-15 08:42:19 -04:00
Isaac Marovitz 386f9b00a9 Instruction.Barrier
Whoops

Fix inline functions in compute stage

Fix regression

Declare SharedMemories + Only Declare Memories on Main Func

Lowecase struct

Avoid magic strings

Make function signatures readable

Change how unsized arrays are indexed

Use string builder

Fix shuffle instructions

Cleanup NumberFormater

Bunch of Subgroup I/O Vars

Will probably need further refinement

Fix point_coord type

Fix support buffer declaration

Fix point_coord
2024-09-15 08:42:19 -04:00
Isaac Marovitz 533c4c021d PreloadCbs + FlushCommandsIfWeightExceeding 2024-09-15 08:42:19 -04:00
Isaac Marovitz a4a8e317ec Cleanup Pipeline
Housekeeping

More housekeeping
2024-09-15 08:42:19 -04:00
Isaac Marovitz ad790e6bde PersistentFlushBuffer + BackgroundResources 2024-09-15 08:42:19 -04:00
Isaac Marovitz 7c4ed084a3 Match S8UintD24Unorm to Depth24UnormStencil8
Kind of works for es2gears
2024-09-15 08:42:19 -04:00
Isaac Marovitz 144a19d686 Fix FEZ not showing anything
Does not fix the underlying shortcomings of the cache system
2024-09-15 08:42:19 -04:00
Isaac Marovitz c4ecbe02b9 Clear cached converted buffers on signaled write 2024-09-15 08:42:19 -04:00
Isaac Marovitz dd619f9f0b FIx regression 2024-09-15 08:42:19 -04:00
Isaac Marovitz 477af39703 Helper shader cleanup 2024-09-15 08:42:19 -04:00
Isaac Marovitz a74532b7c4 Use buffer manager for color blit 2024-09-15 08:42:19 -04:00
Isaac Marovitz 703c8c3139 Buffer Conversions (#23)
* Why is this not working

* Revert helper shader changes for now

* Byte Index Buffer Restride
2024-09-15 08:42:19 -04:00
riperiperi 0853353ad8 don't recreate render pipeline unless we're about to draw, pass view depth properly (#22) 2024-09-15 08:42:19 -04:00
Isaac Marovitz dd203b84eb Metal: Buffers Take 2 (#21)
* Basic BufferManager

* Start Scoped Command Buffers

* Fences stuff

* Remember to cleanup sync manager

* Auto, Command Buffer Dependants

* Cleanup

* Cleanup + Fix Texture->Buffer Copies

* Slow buffer upload

* Cleanup + Rework TextureBuffer

* Don’t get unsafe

* Cleanup

* Goddamn it

* Staging Buffer + Interrupt Action + Flush
2024-09-15 08:42:19 -04:00