Isaac Marovitz
242fcc2481
Render target deduplication
...
not sure if this is working
2024-09-28 19:03:01 -04:00
Isaac Marovitz
ef4a2fb3b5
Fix CBP not doing its job
...
Thanks peri (again)
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
0c562a2c50
Support non-index quad draws
...
Fixes Deltarune
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
a264d9273d
Fix stencil clears
2024-09-28 19:03:01 -04:00
Isaac Marovitz
05189c7749
Enable Alpha Test workaround on Metal
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b7ddb693bc
Fix Cull FrontAndBack
2024-09-28 19:03:01 -04:00
Isaac Marovitz
a60643620d
Warning about host map buffer creation
2024-09-28 19:03:01 -04:00
Isaac Marovitz
113e721cce
Fix fragment point_coord in
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
a71b5f1a3a
VoteAllEqual, FindLSB/MSB
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b094d34575
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-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
72cbb41609
Big GetData()
...
Co-authored-by: riperiperi <rhy3756547@hotmail.com>
2024-09-28 19:03:01 -04:00
Isaac Marovitz
e7fab91c69
Fix Animal Crossing Crash
2024-09-28 19:03:01 -04:00
Isaac Marovitz
97a36298fa
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-28 19:03:01 -04:00
Isaac Marovitz
03161d8048
PreloadCbs + FlushCommandsIfWeightExceeding
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
30b50a99e4
PersistentFlushBuffer + BackgroundResources
2024-09-28 19:03:01 -04:00
Isaac Marovitz
a638060dee
Match S8UintD24Unorm to Depth24UnormStencil8
...
Kind of works for es2gears
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
84f3b4a3e1
Clear cached converted buffers on signaled write
2024-09-28 19:03:01 -04:00
Isaac Marovitz
2c511cdf4f
FIx regression
2024-09-28 19:03:01 -04:00
Isaac Marovitz
17cfcf07d2
Helper shader cleanup
2024-09-28 19:03:01 -04:00
Isaac Marovitz
410287aba2
Use buffer manager for color blit
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
riperiperi
02de48a6f2
don't recreate render pipeline unless we're about to draw, pass view depth properly ( #22 )
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
d0946213fa
Log failed format conversions
2024-09-28 19:03:01 -04:00
Isaac Marovitz
66e2533c90
Print shader code involved in failed linking
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b821cb1739
Don’t use DidModifyRange
2024-09-28 19:03:01 -04:00
Isaac Marovitz
122f0f45c8
Fix sample compare
2024-09-28 19:03:01 -04:00
Isaac Marovitz
9a6759d1e5
Depth Bias
2024-09-28 19:03:01 -04:00
Isaac Marovitz
e97c9bc959
Map R5G5B5A1Unorm
2024-09-28 19:03:01 -04:00
Samuliak
bc5df02d7d
override Equals for render pipeline hash
2024-09-28 19:03:01 -04:00
Isaac Marovitz
1c5937c40b
Disable scaled vertex formats
2024-09-28 19:03:01 -04:00
Isaac Marovitz
4bb736d70a
Disable Vector Indexing Bug Workaround
2024-09-28 19:03:01 -04:00
Isaac Marovitz
efb7baf15c
Fix modulo operator
...
Support sample offsets
Include FragmentIn as additional arg
Always declare frag output struct
SubgroupLaneId
2024-09-28 19:03:01 -04:00
Isaac Marovitz
fad653c12e
Workaround for Wonder
2024-09-28 19:03:01 -04:00
Isaac Marovitz
bb4cb531f2
Fix 3D -> 3D Texture Copies
2024-09-28 19:03:01 -04:00
Isaac Marovitz
3c188718c4
Fix Clear Viewport
2024-09-28 19:03:01 -04:00
Isaac Marovitz
362672ae12
Fix sample-less reads with lod
2024-09-28 19:03:01 -04:00
Isaac Marovitz
970914e2b4
Fix Pack and UnpackHalf2x16
2024-09-28 19:03:01 -04:00
Isaac Marovitz
f7e97a30af
Handle Array Format SetData
2024-09-28 19:03:01 -04:00
Isaac Marovitz
aae9dc0c2e
Cleanup
2024-09-28 19:03:01 -04:00
Isaac Marovitz
b0ba5d5da1
Implement IoVariable.FrontFacing
2024-09-28 19:03:01 -04:00
Isaac Marovitz
a6de2c9274
Fix LOD sample typo
2024-09-28 19:03:01 -04:00
Isaac Marovitz
d323a8d44a
Rebase Changes
2024-09-28 19:03:01 -04:00
Isaac Marovitz
ba07a8c603
More cleanup
2024-09-28 19:03:01 -04:00
Isaac Marovitz
362746887e
Cleanup + Format
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
a435d94fae
Sample LOD Level
2024-09-28 19:03:01 -04:00
Isaac Marovitz
88dd2984be
Fix FragmentOutputColor Type
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
Isaac Marovitz
dc01de61cd
Make dotnet format happy
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
35f68c1b31
Implement Texture CopyTo
2024-09-28 19:03:01 -04:00
Isaac Marovitz
cb8fdeafbc
Cleanup present
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
8b7ac4e87f
Suppress GC Finalize on StateCache
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
2833642858
dispose all temporary buffers
2024-09-28 19:03:01 -04:00
Samuliak
f470430c2f
dispose temporary metal buffer
2024-09-28 19:03:01 -04:00
Samuliak
051bd144e1
dispose drawable texture view
2024-09-28 19:03:01 -04:00
Samuliak
68f6c08287
implement texture get data
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
8d7be4fe25
reset certain state before doing blit or clear
2024-09-28 19:03:01 -04:00
Samuliak
57a173a671
reset viewport before blit
2024-09-28 19:03:01 -04:00
Samuliak
e6e898b297
dispose encoder state manager
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
41fb433495
warn about barriers
2024-09-28 19:03:01 -04:00
Samuliak
1a0b928c35
do memory barriers
2024-09-28 19:03:01 -04:00
Samuliak
17334b2131
remove useless parameters
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
8eba42447f
fix: incorrect merge stuff
2024-09-28 19:03:01 -04:00
Samuliak
3ec45f73f4
don't interrupt render pass before color clear
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
Samuliak
79acae3709
prepare for deferred clears
2024-09-28 19:03:01 -04:00
Samuliak
d423a53595
resolve merge conflicts
2024-09-28 19:03:01 -04:00
Isaac Marovitz
f4190bd95a
Rebase
2024-09-28 19:03:01 -04:00
Isaac Marovitz
997393bc65
Cleanup + Format
2024-09-28 19:03:01 -04:00
Isaac Marovitz
937d84018e
Start Proper Dispose
2024-09-28 19:03:01 -04:00
Samuliak
4bbf7b67d4
do texture barrier tiled
2024-09-28 19:03:01 -04:00
Samuliak
b1549be8c3
do texture barrier
2024-09-28 19:03:01 -04:00
Samuliak
0d15f0fc90
implement depth stencil cache
2024-09-28 19:03:01 -04:00
Isaac Marovitz
20beb2e250
Fix typo in SamplerType.TextureBuffer
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
Isaac Marovitz
087bf71a13
FragmentOutputDepth Fixes
2024-09-28 19:03:01 -04:00
Isaac Marovitz
3e1f624308
Depth Sampler Fixes
2024-09-28 19:03:01 -04:00
Isaac Marovitz
8b2cc4ccf1
Revert position changes
2024-09-28 19:03:01 -04:00
Isaac Marovitz
1aa2b793eb
Nvm it should be in.position
2024-09-28 19:03:01 -04:00
Isaac Marovitz
6f44dcc416
More shader fixes
2024-09-28 19:03:01 -04:00
Samuliak
bd14efb220
fix: incorrect layer count of texture view
2024-09-28 19:03:01 -04:00
Samuliak
f5cffa0b46
don't use mask on size query
2024-09-28 19:03:01 -04:00
Samuliak
979da4c1ab
declare local memory
2024-09-28 19:03:01 -04:00
Samuliak
f08d3a7517
support multiple render targets & fix: incorrect texture name
2024-09-28 19:03:01 -04:00
Samuliak
21029e895a
put render pipeline cache into a separate file
2024-09-28 19:03:01 -04:00
Samuliak
bab9542020
implement pipeline cache
2024-09-28 19:03:01 -04:00
Isaac Marovitz
f2490347af
Use return value of BeginRenderPass
2024-09-28 19:03:01 -04:00
Isaac Marovitz
684e025d61
Cleanup
2024-09-28 19:03:01 -04:00
Samuliak
7983bc062b
remove outdated comment
2024-09-28 19:03:01 -04:00
Isaac Marovitz
fe2337d61a
Fix table
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
Samuliak
348a37a355
add todo notice
2024-09-28 19:03:01 -04:00
Samuliak
918e1c16b7
don't end render pass when not neccessary
2024-09-28 19:03:01 -04:00
Isaac Marovitz
2abadbd649
Remove rebase garbage
2024-09-28 19:03:01 -04:00
Isaac Marovitz
14c58f62eb
Be smart and use a bitmask not a list
2024-09-28 19:03:01 -04:00
Isaac Marovitz
102c87e623
Cleanup
2024-09-28 19:03:01 -04:00
Isaac Marovitz
a7e5c26011
Fix Vertex Attributes in Wonder & Kirby
2024-09-28 19:03:01 -04:00
Isaac Marovitz
20e1d1cd33
Implement SetDepthClamp
2024-09-28 19:03:01 -04:00
Isaac Marovitz
f98d9bae24
Implement SetBlendState
2024-09-28 19:03:01 -04:00
Isaac Marovitz
1db8decd12
Be consistent with things that lack support
2024-09-28 19:03:01 -04:00
Isaac Marovitz
71ccb7eaef
Ignore SetDepthMode
2024-09-28 19:03:01 -04:00
Isaac Marovitz
e6c2e5873c
Make Texture Volatile on dispose
2024-09-28 19:03:01 -04:00
Isaac Marovitz
c97e7d621b
Format
2024-09-28 19:03:01 -04:00
Isaac Marovitz
45b533b23b
Fix present
2024-09-28 19:03:01 -04:00
Isaac Marovitz
fbe275204b
Fix Depth/Stencil attachments
2024-09-28 19:03:01 -04:00
Isaac Marovitz
738227519d
Break everything :D
2024-09-28 19:03:01 -04:00
Isaac Marovitz
de86f20b94
Clamp ScissorRect
2024-09-28 19:03:01 -04:00
Isaac Marovitz
fcc7cb55df
Set DepthAttachmentPixelFormat
2024-09-28 19:03:01 -04:00
Isaac Marovitz
4e6abb0191
Set Depth Attachment Texture
2024-09-28 19:03:01 -04:00
Isaac Marovitz
35b0436a2b
Clamp Viewport ZNear & ZFar
2024-09-28 19:03:01 -04:00
Samuliak
e99f9e2af0
format
2024-09-28 19:03:01 -04:00
Samuliak
bc3fd22f05
use 0 instead of undef
2024-09-28 19:03:01 -04:00
Samuliak
fefdabf257
fix: pass array index as an additional argument to sample
2024-09-28 19:03:01 -04:00
Samuliak
73bb0712a8
don't declare samplers for separate textures
2024-09-28 19:03:01 -04:00
Samuliak
75781ba698
don't hardcode texture type
2024-09-28 19:03:01 -04:00
Samuliak
262452f586
offset storage buffer bindings by 15
2024-09-28 19:03:01 -04:00
Samuliak
f56117a5c7
fix: incorrect abs instruction
2024-09-28 19:03:01 -04:00
Samuliak
aff8fdb2f8
add: vertex and instance id arguments
2024-09-28 19:03:01 -04:00
Samuliak
3651e8ea32
determine type of buffer by its field types
2024-09-28 19:03:01 -04:00