riperiperi
edceb1607f
Fix Geometry/TFB on compute, Buffer Textures, add Window Resizing ( #28 )
2024-09-28 19:03:01 -04:00
riperiperi
e02df72323
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-28 19:03:01 -04:00
Isaac Marovitz
b33c1ae22f
Don’t bind byte format converted index buffers at requested index
2024-09-28 19:03:01 -04:00
Isaac Marovitz
242fcc2481
Render target deduplication
...
not sure if this is working
2024-09-28 19:03:01 -04:00
Isaac Marovitz
c4731c0555
Fix blend descriptors not dirting render pipeline
...
Thanks peri
2024-09-28 19:03:01 -04:00
Isaac Marovitz
ab1e02c56a
Be better about memory
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b7ddb693bc
Fix Cull FrontAndBack
2024-09-28 19:03:01 -04:00
Isaac Marovitz
c8308d27f1
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-28 19:03:01 -04:00
Isaac Marovitz
4578ee53d3
Actually clear the right render target
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b1928461bb
Cleanup Pipeline
...
Housekeeping
More housekeeping
2024-09-28 19:03:01 -04:00
Isaac Marovitz
49781fde65
Fix FEZ not showing anything
...
Does not fix the underlying shortcomings of the cache system
2024-09-28 19:03:01 -04:00
Isaac Marovitz
6ebe5bb406
Buffer Conversions ( #23 )
...
* Why is this not working
* Revert helper shader changes for now
* Byte Index Buffer Restride
2024-09-28 19:03:01 -04:00
Isaac Marovitz
58b3e2e82b
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-28 19:03:01 -04:00
Isaac Marovitz
9a6759d1e5
Depth Bias
2024-09-28 19:03:01 -04:00
Isaac Marovitz
3c188718c4
Fix Clear Viewport
2024-09-28 19:03:01 -04:00
Isaac Marovitz
ba07a8c603
More cleanup
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b064d76a4f
Metal: Compute Shaders ( #19 )
...
* check for too bix texture bindings
* implement lod query
* print shader stage name
* always have fragment input
* resolve merge conflicts
* fix: lod query
* fix: casting texture coords
* support non-array memories
* use structure types for buffers
* implement compute pipeline cache
* compute dispatch
* improve error message
* rebind compute state
* bind compute textures
* pass local size as an argument to dispatch
* implement texture buffers
* hack: change vertex index to vertex id
* pass support buffer as an argument to every function
* return at the end of function
* fix: certain missing compute bindings
* implement texture base
* improve texture binding system
* remove useless exception
* move texture handle to texture base
* fix: segfault when using disposed textures
---------
Co-authored-by: Samuliak <samuliak77@gmail.com>
Co-authored-by: SamoZ256 <96914946+SamoZ256@users.noreply.github.com>
2024-09-28 19:03:01 -04:00
Isaac Marovitz
131ab75d55
Handle stride 0 on regular buffers
2024-09-28 19:03:01 -04:00
Isaac Marovitz
65149cfe9f
Buffer Descriptor Step Functions
2024-09-28 19:03:01 -04:00
Isaac Marovitz
43460186a8
Stencil Ref Value
2024-09-28 19:03:01 -04:00
Isaac Marovitz
0a6f11d247
Stencil Fixes
2024-09-28 19:03:01 -04:00
Isaac Marovitz
1b86360a61
RenderTargetColorMasks
2024-09-28 19:03:01 -04:00
SamoZ256
e423f81155
Zero vertex buffer ( #17 )
...
* cast src size to float
* implement zero buffers
2024-09-28 19:03:01 -04:00
Isaac Marovitz
1f29a76ea3
Metal: Advanced Present ( #6 )
...
* Initial DrawTexture support & Advanced Present
* TODO: Get Scissors Working
* Chnage scissor state management
* Rebase problems…
* Rebase fixes again
* Update DrawTexture + Fix Topology
* Fix flipping
* Add clear action support
* Cleanup
2024-09-28 19:03:01 -04:00
SamoZ256
1f91c74a95
Clone the state & flip viewport vertically ( #16 )
...
* implement texture get data
* reset all state before blit & clone state
* format
* support blit regions
* implement source region for blit
* replace bottom with top
* account for 0 size
* support image flipping
* revert presentation fixes & y flip
* revert
* flip viewport vertically
* switch face winding
* comment
* use SetBytes for texture clear
* implement missing compute builtins
* change storage and texture buffer alignment
* correct compute builtins
* don't use nullable for textures and samplers
* remove incorrect texture get data implementation
* Cleanup IntPtrs
---------
Co-authored-by: Isaac Marovitz <isaacryu@icloud.com>
2024-09-28 19:03:01 -04:00
SamoZ256
20b1f6a6ee
Fix Scott Pilgrim ( #15 )
...
* check for null vertex functions
* format
* Format
---------
Co-authored-by: Isaac Marovitz <isaacryu@icloud.com>
2024-09-28 19:03:01 -04:00
Isaac Marovitz
bbcd05aacf
Use Stack instead of List
2024-09-28 19:03:01 -04:00
Isaac Marovitz
0e095c778a
Whitespace formatting
2024-09-28 19:03:01 -04:00
Samuliak
704a78c11f
fix: don't dispose stencil state before using
2024-09-28 19:03:01 -04:00
Samuliak
acce02bdf5
allow null depth stencil render targets
2024-09-28 19:03:01 -04:00
Samuliak
57a173a671
reset viewport before blit
2024-09-28 19:03:01 -04:00
Samuliak
7654f0b16c
dispose all objects in encoder state manager
2024-09-28 19:03:01 -04:00
Samuliak
c26df1f7a3
dispose caches
2024-09-28 19:03:01 -04:00
Samuliak
be9f5dcf69
set the inline state after restoring state
2024-09-28 19:03:01 -04:00
Samuliak
f08d6c1cad
make states private
2024-09-28 19:03:01 -04:00
Samuliak
b475a44941
implement save and restore state system
2024-09-28 19:03:01 -04:00
Samuliak
295845e6e3
revert deferred clears
2024-09-28 19:03:01 -04:00
Isaac Marovitz
997393bc65
Cleanup + Format
2024-09-28 19:03:01 -04:00
Samuliak
0d15f0fc90
implement depth stencil cache
2024-09-28 19:03:01 -04:00
Isaac Marovitz
e1279f67fe
Fix StoreActions & Don’t Clamp Scissor for Now
2024-09-28 19:03:01 -04:00
Isaac Marovitz
bd3df5f26a
Depth Clear
2024-09-28 19:03:01 -04:00
Isaac Marovitz
8feee9c005
Shitty Clears + Inline Buffer Improvements?
2024-09-28 19:03:01 -04:00
Samuliak
bab9542020
implement pipeline cache
2024-09-28 19:03:01 -04:00
Isaac Marovitz
684e025d61
Cleanup
2024-09-28 19:03:01 -04:00
Isaac Marovitz
e72c69cf19
Dont hardcode Vertex Format
2024-09-28 19:03:01 -04:00
Samuliak
9ecaacc977
style
2024-09-28 19:03:01 -04:00
Samuliak
d04e24c382
bring back inline updates for some state
2024-09-28 19:03:01 -04:00
Samuliak
bb425bf640
fix: don't rebind pipeline unless dirty
2024-09-28 19:03:01 -04:00
Samuliak
0444e43654
don't bind null vertex buffers
2024-09-28 19:03:01 -04:00
Samuliak
ccce85e1bb
mark state as dirty
2024-09-28 19:03:01 -04:00