Isaac Marovitz
549938e2b1
Update comment for Metal
2024-12-23 21:38:20 -06:00
Isaac Marovitz
144397c3da
Don’t do inline vertex buffer updates
...
Somehow broke zero buff MTLVertexDescriptor, but fixes broken geoemtry so I’m pushing anyway
2024-12-23 21:38:17 -06:00
riperiperi
2fb3c6975e
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-12-23 21:38:15 -06:00
riperiperi
879c93cf73
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-12-23 21:38:13 -06:00
Isaac Marovitz
7d5b4c5d1d
Dont bind images in texture slots
2024-12-23 21:38:11 -06:00
Isaac Marovitz
2860db198c
Stop depth/stencil blits from crashing everything
2024-12-23 21:38:04 -06:00
riperiperi
4b53d18bef
Fix Geometry/TFB on compute, Buffer Textures, add Window Resizing ( #28 )
2024-12-23 21:38:00 -06:00
riperiperi
bbbc9e529d
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-12-23 21:37:58 -06:00
Isaac Marovitz
c160810bfc
Fragment input interpolation qualifiers
...
Fixes Mario’s shadow in SMO
2024-12-23 21:37:55 -06:00
Isaac Marovitz
4f7b3fa058
CommandBufferBarrier
2024-12-23 21:37:52 -06:00
riperiperi
36de337ac2
Add constrained border colours to samplers ( #26 )
2024-12-23 21:37:50 -06:00
Isaac Marovitz
3b2beda27f
Don’t bind byte format converted index buffers at requested index
2024-12-23 21:37:48 -06:00
Isaac Marovitz
de8e03c350
Render target deduplication
...
not sure if this is working
2024-12-23 21:37:45 -06:00
Isaac Marovitz
0b6bc12a65
Fix CBP not doing its job
...
Thanks peri (again)
2024-12-23 21:37:43 -06:00
Isaac Marovitz
16bc02ea2a
Fix blend descriptors not dirting render pipeline
...
Thanks peri
2024-12-23 21:37:41 -06:00
Isaac Marovitz
97814b2852
Support non-index quad draws
...
Fixes Deltarune
2024-12-23 21:37:38 -06:00
Isaac Marovitz
a9633981a8
Be better about memory
2024-12-23 21:37:36 -06:00
Isaac Marovitz
1af7dc4b68
Fix stencil clears
2024-12-23 21:37:14 -06:00
Isaac Marovitz
d6dcc39131
Enable Alpha Test workaround on Metal
2024-12-23 21:37:10 -06:00
Isaac Marovitz
4f699ef96a
Fix Cull FrontAndBack
2024-12-23 21:37:07 -06:00
Isaac Marovitz
30f194e5c0
Warning about host map buffer creation
2024-12-23 21:37:05 -06:00
Isaac Marovitz
f1086afcdf
Fix fragment point_coord in
2024-12-23 21:37:03 -06:00
Isaac Marovitz
dae0f3cded
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-12-23 21:37:01 -06:00
Isaac Marovitz
a1ab7fe6a2
VoteAllEqual, FindLSB/MSB
2024-12-23 21:36:58 -06:00
Isaac Marovitz
fac2cbbbbf
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-12-23 21:36:56 -06:00
Isaac Marovitz
9b138a413c
Actually clear the right render target
2024-12-23 21:36:54 -06:00
Isaac Marovitz
58eefa8bdf
Big GetData()
...
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
2024-12-23 21:36:52 -06:00
Isaac Marovitz
0ebc8bd1b8
Fix Animal Crossing Crash
2024-12-23 21:36:50 -06:00
Isaac Marovitz
becf828d0a
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-12-23 21:36:48 -06:00
Isaac Marovitz
d0e4adac36
PreloadCbs + FlushCommandsIfWeightExceeding
2024-12-23 21:36:46 -06:00
Isaac Marovitz
197184657f
Cleanup Pipeline
...
Housekeeping
More housekeeping
2024-12-23 21:36:44 -06:00
Isaac Marovitz
74083083cd
PersistentFlushBuffer + BackgroundResources
2024-12-23 21:36:42 -06:00
Isaac Marovitz
175cded85d
Match S8UintD24Unorm to Depth24UnormStencil8
...
Kind of works for es2gears
2024-12-23 21:36:40 -06:00
Isaac Marovitz
c911db8309
Fix FEZ not showing anything
...
Does not fix the underlying shortcomings of the cache system
2024-12-23 21:35:50 -06:00
Isaac Marovitz
3451fbbbad
Clear cached converted buffers on signaled write
2024-12-23 21:35:47 -06:00
Isaac Marovitz
98ae46ba70
FIx regression
2024-12-23 21:35:45 -06:00
Isaac Marovitz
bf4232a35b
Helper shader cleanup
2024-12-23 21:35:43 -06:00
Isaac Marovitz
c3e39a9c91
Use buffer manager for color blit
2024-12-23 21:35:41 -06:00
Isaac Marovitz
b8779c6e09
Buffer Conversions ( #23 )
...
* Why is this not working
* Revert helper shader changes for now
* Byte Index Buffer Restride
2024-12-23 21:35:38 -06:00
riperiperi
20cf1a08c1
don't recreate render pipeline unless we're about to draw, pass view depth properly ( #22 )
2024-12-23 21:35:36 -06:00
Isaac Marovitz
dda746c0fb
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-12-23 21:35:33 -06:00
Isaac Marovitz
585bdc2b54
Log failed format conversions
2024-12-23 21:35:31 -06:00
Isaac Marovitz
e49702965f
Print shader code involved in failed linking
2024-12-23 21:35:21 -06:00
Isaac Marovitz
8b5392ce9b
Don’t use DidModifyRange
2024-12-23 21:35:17 -06:00
Isaac Marovitz
9e61294671
Fix sample compare
2024-12-23 21:35:15 -06:00
Isaac Marovitz
5423ad9ae1
Depth Bias
2024-12-23 21:35:13 -06:00
Isaac Marovitz
65bddcd475
Map R5G5B5A1Unorm
2024-12-23 21:35:11 -06:00
Samuliak
36ac0414e2
override Equals for render pipeline hash
2024-12-23 21:35:09 -06:00
Isaac Marovitz
51b4ffeb6c
Disable scaled vertex formats
2024-12-23 21:35:07 -06:00
Isaac Marovitz
39bfd55958
Disable Vector Indexing Bug Workaround
2024-12-23 21:35:04 -06:00
Isaac Marovitz
e615d7d849
Fix modulo operator
...
Support sample offsets
Include FragmentIn as additional arg
Always declare frag output struct
SubgroupLaneId
2024-12-23 21:35:02 -06:00
Isaac Marovitz
c883ebb645
Workaround for Wonder
2024-12-23 21:35:00 -06:00
Isaac Marovitz
24ab7788d8
Fix 3D -> 3D Texture Copies
2024-12-23 21:34:57 -06:00
Isaac Marovitz
9ab2cd94c1
Fix Clear Viewport
2024-12-23 21:34:55 -06:00
Isaac Marovitz
4ee4e09358
Fix sample-less reads with lod
2024-12-23 21:34:52 -06:00
Isaac Marovitz
a07975afec
Fix Pack and UnpackHalf2x16
2024-12-23 21:34:50 -06:00
Isaac Marovitz
746c897206
Handle Array Format SetData
2024-12-23 21:34:48 -06:00
Isaac Marovitz
fe4fa6f4db
Cleanup
2024-12-23 21:33:31 -06:00
Isaac Marovitz
db24e0f6fe
Implement IoVariable.FrontFacing
2024-12-23 21:33:24 -06:00
Isaac Marovitz
e9aee16a27
Fix LOD sample typo
2024-12-23 21:33:21 -06:00
Isaac Marovitz
02f1e289e2
Rebase Changes
2024-12-23 21:33:19 -06:00
Isaac Marovitz
9ebf82f184
More cleanup
2024-12-23 21:33:17 -06:00
Isaac Marovitz
49e83335d1
Cleanup + Format
2024-12-23 21:33:14 -06:00
Isaac Marovitz
f00cf8704f
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-12-23 21:33:12 -06:00
Isaac Marovitz
65da0569a3
Handle stride 0 on regular buffers
2024-12-23 21:33:09 -06:00
Isaac Marovitz
d811532a9f
Buffer Descriptor Step Functions
2024-12-23 21:33:07 -06:00
Isaac Marovitz
a42c66e6d5
Sample LOD Level
2024-12-23 21:33:01 -06:00
Isaac Marovitz
8be6b671b8
Fix FragmentOutputColor Type
2024-12-23 21:32:59 -06:00
Isaac Marovitz
2e99df371f
Stencil Ref Value
2024-12-23 21:32:56 -06:00
Isaac Marovitz
ac8af32744
Stencil Fixes
2024-12-23 21:32:54 -06:00
Isaac Marovitz
a58568d036
RenderTargetColorMasks
2024-12-23 21:32:52 -06:00
Isaac Marovitz
7ed45d12db
Make dotnet format happy
2024-12-23 21:32:50 -06:00
SamoZ256
505f830556
Zero vertex buffer ( #17 )
...
* cast src size to float
* implement zero buffers
2024-12-23 21:32:47 -06:00
Isaac Marovitz
43ad627d4f
Implement Texture CopyTo
2024-12-23 21:32:45 -06:00
Isaac Marovitz
c5cca8a1a3
Cleanup present
2024-12-23 21:32:43 -06:00
Isaac Marovitz
f7941a0a8b
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-12-23 21:32:40 -06:00
SamoZ256
6cc4d46e8c
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-12-23 21:32:34 -06:00
SamoZ256
18b852e05d
Fix Scott Pilgrim ( #15 )
...
* check for null vertex functions
* format
* Format
---------
Co-authored-by: Isaac Marovitz <isaacryu@icloud.com>
2024-12-23 21:32:02 -06:00
Isaac Marovitz
41e6a04a23
Suppress GC Finalize on StateCache
2024-12-23 21:31:59 -06:00
Isaac Marovitz
881ab59177
Use Stack instead of List
2024-12-23 21:31:57 -06:00
Isaac Marovitz
327c1576f7
Whitespace formatting
2024-12-23 21:31:54 -06:00
Samuliak
60ece6d9a1
dispose all temporary buffers
2024-12-23 21:31:52 -06:00
Samuliak
58b42a1143
dispose temporary metal buffer
2024-12-23 21:31:47 -06:00
Samuliak
3be47ae4a9
dispose drawable texture view
2024-12-23 21:31:41 -06:00
Samuliak
6ab989ac54
implement texture get data
2024-12-23 21:31:36 -06:00
Samuliak
9f01cce95f
fix: don't dispose stencil state before using
2024-12-23 21:31:30 -06:00
Samuliak
0abbbdc277
allow null depth stencil render targets
2024-12-23 21:31:28 -06:00
Samuliak
eb7ec713ec
reset certain state before doing blit or clear
2024-12-23 21:31:26 -06:00
Samuliak
d5437f3dbf
reset viewport before blit
2024-12-23 21:31:24 -06:00
Samuliak
1c4e527ac2
dispose encoder state manager
2024-12-23 21:31:01 -06:00
Samuliak
af341f88df
dispose all objects in encoder state manager
2024-12-23 21:30:58 -06:00
Samuliak
1ff81393be
dispose caches
2024-12-23 21:30:55 -06:00
Samuliak
2cb5265c8e
warn about barriers
2024-12-23 21:30:53 -06:00
Samuliak
78553f31d9
do memory barriers
2024-12-23 21:30:50 -06:00
Samuliak
60084f826e
remove useless parameters
2024-12-23 21:30:48 -06:00
Samuliak
280efb2ed6
set the inline state after restoring state
2024-12-23 21:30:46 -06:00
Samuliak
14607f4471
make states private
2024-12-23 21:30:41 -06:00
Samuliak
fd4fe01348
fix: incorrect merge stuff
2024-12-23 21:30:39 -06:00
Samuliak
8f91b556af
don't interrupt render pass before color clear
2024-12-23 21:30:29 -06:00
Samuliak
305a703d4a
implement save and restore state system
2024-12-23 21:30:22 -06:00