Commit graph

67 commits

Author SHA1 Message Date
Isaac Marovitz
ab79959975 Dirty Arg Buffers on Program Change 2024-09-28 19:03:01 -04:00
Isaac Marovitz
de5bf3a141 Least allocations in the west 2024-09-28 19:03:01 -04:00
Isaac Marovitz
5e8606c89a Don’t use Enum.HasFlag 2024-09-28 19:03:01 -04:00
Isaac Marovitz
daee63c451 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-28 19:03:01 -04:00
Isaac Marovitz
6aff6401fb Don’t do inline vertex buffer updates
Somehow broke zero buff MTLVertexDescriptor, but fixes broken geoemtry so I’m pushing anyway
2024-09-28 19:03:01 -04:00
riperiperi
2511bf1e4c 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-28 19:03:01 -04:00
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