Commit graph

118 commits

Author SHA1 Message Date
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
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
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
Isaac Marovitz
997393bc65 Cleanup + Format 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
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
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
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
Samuliak
320c317113 add: textures and samplers as shader arguments & fix: issue with casting 2024-09-28 19:03:01 -04:00
Samuliak
6295153a28 support fragment coord as an input to a shader 2024-09-28 19:03:01 -04:00
Isaac Marovitz
5a320cca19 Buffer bindings in shader…
Will need to be reworked
2024-09-28 19:03:01 -04:00
Isaac Marovitz
ebc53d7961 Fix buffer access syntax 2024-09-28 19:03:01 -04:00
Isaac Marovitz
70ba3506b0 Cleanup Shader I/O 2024-09-28 19:03:01 -04:00
Isaac Marovitz
35cc208435 Fix fragment shader bindings 2024-09-28 19:03:01 -04:00
Isaac Marovitz
e517cfeb8f Fix some shader gen problems… 2024-09-28 19:03:01 -04:00
Isaac Marovitz
4a30b58e0b Formatting 2024-09-28 19:03:01 -04:00
Isaac Marovitz
bdd9ede4fd Make TypeConversion failure an error 2024-09-28 19:03:01 -04:00
Isaac Marovitz
84a8edf675 Fix MSL Reinterpret Casts 2024-09-28 19:03:01 -04:00
Isaac Marovitz
df8fca012f Formatting 2024-09-28 19:03:01 -04:00
Isaac Marovitz
a9e9819b33 Dont specify [[stage_in]] on fragment 2024-09-28 19:03:01 -04:00
Isaac Marovitz
511db833db Fix fragment shaders (and fuck everything up) 2024-09-28 19:03:01 -04:00
Isaac Marovitz
ed11cdda8d Fix fragment output color 2024-09-28 19:03:01 -04:00
Isaac Marovitz
98e2ab5a49 Fix IoMap variable names
Output struct

Lazy Vertex IO

Output fixes

Fix output struct definition

MSL Binding Model description

Might need tweaks/adjustments

Cleanup

Typo + Format
2024-09-28 19:03:01 -04:00
Isaac Marovitz
81b1ae4bcf Partial TextureQuerySamples 2024-09-28 19:03:01 -04:00
Isaac Marovitz
ce5f383f5d Fix instructions 2024-09-28 19:03:01 -04:00
Isaac Marovitz
a1b314acd2 Back to where we were
First special instruction

Start Load/Store implementation

Start TextureSample

Sample progress

I/O Load/Store Progress

Rest of load/store

TODO: Currently, the generator still assumes the GLSL style of I/O attributres. On MSL, the vertex function should output a struct which contains a float4 with the required position attribute.

TextureSize and VectorExtract

Fix UserDefined IO Vars

Fix stage input struct names
2024-09-28 19:03:01 -04:00
Isaac Marovitz
163be0a159 Update for new Shader IR format 2024-09-28 19:03:01 -04:00
Isaac Marovitz
bbc2ac2e9b Vertex Input Attributes 2024-09-28 19:03:01 -04:00
Isaac Marovitz
f07327166c More Shader Gen Stuff
Mostly copied from GLSL since in terms of syntax within blocks they’re pretty similar. Likely the result will need tweaking…

Isn’t that conveniant?

“Do the simd_shuffle”

atomics

Remaining instructions

Remove removed special instructions

Getting somewhere…
2024-09-28 19:03:01 -04:00
Isaac Marovitz
1cb2ec7ebc Formatting 2024-09-28 19:03:01 -04:00
Isaac Marovitz
4ec37d1798 Start of MSL instructions
Remaining functions
2024-09-28 19:03:01 -04:00
Isaac Marovitz
27effab989 Warn when generating unsupported shader 2024-09-28 19:03:01 -04:00
Isaac Marovitz
0f3358b931 IoMap 2024-09-28 19:03:01 -04:00
Isaac Marovitz
ebaf1d8258 Start Metal Backend
Revert build yml changes
2024-09-28 19:03:01 -04:00
riperiperi
04d68ca616
GPU: Ensure all clip distances are initialized when used (#7363)
* GPU: Ensure all clip distances are initialized when used

* Shader cache version
2024-09-26 14:19:12 -03:00