sdl3-bindings 1.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +159 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +132 -0
  5. data/lib/sdl3.rb +150 -0
  6. data/lib/sdl3_assert.rb +61 -0
  7. data/lib/sdl3_asyncio.rb +68 -0
  8. data/lib/sdl3_atomic.rb +64 -0
  9. data/lib/sdl3_audio.rb +120 -0
  10. data/lib/sdl3_bits.rb +38 -0
  11. data/lib/sdl3_blendmode.rb +63 -0
  12. data/lib/sdl3_camera.rb +67 -0
  13. data/lib/sdl3_clipboard.rb +49 -0
  14. data/lib/sdl3_cpuinfo.rb +55 -0
  15. data/lib/sdl3_dialog.rb +60 -0
  16. data/lib/sdl3_endian.rb +39 -0
  17. data/lib/sdl3_error.rb +41 -0
  18. data/lib/sdl3_events.rb +680 -0
  19. data/lib/sdl3_filesystem.rb +82 -0
  20. data/lib/sdl3_gamepad.rb +216 -0
  21. data/lib/sdl3_gpu.rb +836 -0
  22. data/lib/sdl3_guid.rb +44 -0
  23. data/lib/sdl3_haptic.rb +209 -0
  24. data/lib/sdl3_hidapi.rb +84 -0
  25. data/lib/sdl3_hints.rb +285 -0
  26. data/lib/sdl3_image.rb +108 -0
  27. data/lib/sdl3_init.rb +71 -0
  28. data/lib/sdl3_iostream.rb +115 -0
  29. data/lib/sdl3_joystick.rb +174 -0
  30. data/lib/sdl3_keyboard.rb +81 -0
  31. data/lib/sdl3_keycode.rb +310 -0
  32. data/lib/sdl3_loadso.rb +39 -0
  33. data/lib/sdl3_locale.rb +44 -0
  34. data/lib/sdl3_log.rb +85 -0
  35. data/lib/sdl3_messagebox.rb +88 -0
  36. data/lib/sdl3_misc.rb +37 -0
  37. data/lib/sdl3_mixer.rb +179 -0
  38. data/lib/sdl3_mouse.rb +90 -0
  39. data/lib/sdl3_mutex.rb +77 -0
  40. data/lib/sdl3_pen.rb +56 -0
  41. data/lib/sdl3_pixels.rb +296 -0
  42. data/lib/sdl3_platform.rb +37 -0
  43. data/lib/sdl3_power.rb +44 -0
  44. data/lib/sdl3_process.rb +65 -0
  45. data/lib/sdl3_properties.rb +67 -0
  46. data/lib/sdl3_rect.rb +98 -0
  47. data/lib/sdl3_render.rb +240 -0
  48. data/lib/sdl3_revision.rb +37 -0
  49. data/lib/sdl3_scancode.rb +286 -0
  50. data/lib/sdl3_sensor.rb +61 -0
  51. data/lib/sdl3_sound.rb +98 -0
  52. data/lib/sdl3_stdinc.rb +229 -0
  53. data/lib/sdl3_storage.rb +70 -0
  54. data/lib/sdl3_surface.rb +122 -0
  55. data/lib/sdl3_thread.rb +65 -0
  56. data/lib/sdl3_time.rb +66 -0
  57. data/lib/sdl3_timer.rb +54 -0
  58. data/lib/sdl3_touch.rb +56 -0
  59. data/lib/sdl3_tray.rb +66 -0
  60. data/lib/sdl3_ttf.rb +216 -0
  61. data/lib/sdl3_version.rb +41 -0
  62. data/lib/sdl3_video.rb +341 -0
  63. data/lib/sdl3_vulkan.rb +46 -0
  64. metadata +118 -0
data/lib/sdl3_gpu.rb ADDED
@@ -0,0 +1,836 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+ require_relative 'sdl3_pixels'
9
+
10
+ module SDL
11
+ extend FFI::Library
12
+ # Define/Macro
13
+
14
+ GPU_TEXTUREUSAGE_SAMPLER = 1 << 0
15
+ GPU_TEXTUREUSAGE_COLOR_TARGET = 1 << 1
16
+ GPU_TEXTUREUSAGE_DEPTH_STENCIL_TARGET = 1 << 2
17
+ GPU_TEXTUREUSAGE_GRAPHICS_STORAGE_READ = 1 << 3
18
+ GPU_TEXTUREUSAGE_COMPUTE_STORAGE_READ = 1 << 4
19
+ GPU_TEXTUREUSAGE_COMPUTE_STORAGE_WRITE = 1 << 5
20
+ GPU_TEXTUREUSAGE_COMPUTE_STORAGE_SIMULTANEOUS_READ_WRITE = 1 << 6
21
+ GPU_BUFFERUSAGE_VERTEX = 1 << 0
22
+ GPU_BUFFERUSAGE_INDEX = 1 << 1
23
+ GPU_BUFFERUSAGE_INDIRECT = 1 << 2
24
+ GPU_BUFFERUSAGE_GRAPHICS_STORAGE_READ = 1 << 3
25
+ GPU_BUFFERUSAGE_COMPUTE_STORAGE_READ = 1 << 4
26
+ GPU_BUFFERUSAGE_COMPUTE_STORAGE_WRITE = 1 << 5
27
+ GPU_SHADERFORMAT_INVALID = 0
28
+ GPU_SHADERFORMAT_PRIVATE = 1 << 0
29
+ GPU_SHADERFORMAT_SPIRV = 1 << 1
30
+ GPU_SHADERFORMAT_DXBC = 1 << 2
31
+ GPU_SHADERFORMAT_DXIL = 1 << 3
32
+ GPU_SHADERFORMAT_MSL = 1 << 4
33
+ GPU_SHADERFORMAT_METALLIB = 1 << 5
34
+ GPU_COLORCOMPONENT_R = 1 << 0
35
+ GPU_COLORCOMPONENT_G = 1 << 1
36
+ GPU_COLORCOMPONENT_B = 1 << 2
37
+ GPU_COLORCOMPONENT_A = 1 << 3
38
+ PROP_GPU_DEVICE_CREATE_DEBUGMODE_BOOLEAN = "SDL.gpu.device.create.debugmode"
39
+ PROP_GPU_DEVICE_CREATE_PREFERLOWPOWER_BOOLEAN = "SDL.gpu.device.create.preferlowpower"
40
+ PROP_GPU_DEVICE_CREATE_NAME_STRING = "SDL.gpu.device.create.name"
41
+ PROP_GPU_DEVICE_CREATE_SHADERS_PRIVATE_BOOLEAN = "SDL.gpu.device.create.shaders.private"
42
+ PROP_GPU_DEVICE_CREATE_SHADERS_SPIRV_BOOLEAN = "SDL.gpu.device.create.shaders.spirv"
43
+ PROP_GPU_DEVICE_CREATE_SHADERS_DXBC_BOOLEAN = "SDL.gpu.device.create.shaders.dxbc"
44
+ PROP_GPU_DEVICE_CREATE_SHADERS_DXIL_BOOLEAN = "SDL.gpu.device.create.shaders.dxil"
45
+ PROP_GPU_DEVICE_CREATE_SHADERS_MSL_BOOLEAN = "SDL.gpu.device.create.shaders.msl"
46
+ PROP_GPU_DEVICE_CREATE_SHADERS_METALLIB_BOOLEAN = "SDL.gpu.device.create.shaders.metallib"
47
+ PROP_GPU_DEVICE_CREATE_D3D12_SEMANTIC_NAME_STRING = "SDL.gpu.device.create.d3d12.semantic"
48
+ PROP_GPU_COMPUTEPIPELINE_CREATE_NAME_STRING = "SDL.gpu.computepipeline.create.name"
49
+ PROP_GPU_GRAPHICSPIPELINE_CREATE_NAME_STRING = "SDL.gpu.graphicspipeline.create.name"
50
+ PROP_GPU_SAMPLER_CREATE_NAME_STRING = "SDL.gpu.sampler.create.name"
51
+ PROP_GPU_SHADER_CREATE_NAME_STRING = "SDL.gpu.shader.create.name"
52
+ PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_R_FLOAT = "SDL.gpu.texture.create.d3d12.clear.r"
53
+ PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_G_FLOAT = "SDL.gpu.texture.create.d3d12.clear.g"
54
+ PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_B_FLOAT = "SDL.gpu.texture.create.d3d12.clear.b"
55
+ PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_A_FLOAT = "SDL.gpu.texture.create.d3d12.clear.a"
56
+ PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_DEPTH_FLOAT = "SDL.gpu.texture.create.d3d12.clear.depth"
57
+ PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_STENCIL_UINT8 = "SDL.gpu.texture.create.d3d12.clear.stencil"
58
+ PROP_GPU_TEXTURE_CREATE_NAME_STRING = "SDL.gpu.texture.create.name"
59
+ PROP_GPU_BUFFER_CREATE_NAME_STRING = "SDL.gpu.buffer.create.name"
60
+ PROP_GPU_TRANSFERBUFFER_CREATE_NAME_STRING = "SDL.gpu.transferbuffer.create.name"
61
+
62
+ # Enum
63
+
64
+ GPU_PRIMITIVETYPE_TRIANGLELIST = 0
65
+ GPU_PRIMITIVETYPE_TRIANGLESTRIP = 1
66
+ GPU_PRIMITIVETYPE_LINELIST = 2
67
+ GPU_PRIMITIVETYPE_LINESTRIP = 3
68
+ GPU_PRIMITIVETYPE_POINTLIST = 4
69
+ GPU_LOADOP_LOAD = 0
70
+ GPU_LOADOP_CLEAR = 1
71
+ GPU_LOADOP_DONT_CARE = 2
72
+ GPU_STOREOP_STORE = 0
73
+ GPU_STOREOP_DONT_CARE = 1
74
+ GPU_STOREOP_RESOLVE = 2
75
+ GPU_STOREOP_RESOLVE_AND_STORE = 3
76
+ GPU_INDEXELEMENTSIZE_16BIT = 0
77
+ GPU_INDEXELEMENTSIZE_32BIT = 1
78
+ GPU_TEXTUREFORMAT_INVALID = 0
79
+ GPU_TEXTUREFORMAT_A8_UNORM = 1
80
+ GPU_TEXTUREFORMAT_R8_UNORM = 2
81
+ GPU_TEXTUREFORMAT_R8G8_UNORM = 3
82
+ GPU_TEXTUREFORMAT_R8G8B8A8_UNORM = 4
83
+ GPU_TEXTUREFORMAT_R16_UNORM = 5
84
+ GPU_TEXTUREFORMAT_R16G16_UNORM = 6
85
+ GPU_TEXTUREFORMAT_R16G16B16A16_UNORM = 7
86
+ GPU_TEXTUREFORMAT_R10G10B10A2_UNORM = 8
87
+ GPU_TEXTUREFORMAT_B5G6R5_UNORM = 9
88
+ GPU_TEXTUREFORMAT_B5G5R5A1_UNORM = 10
89
+ GPU_TEXTUREFORMAT_B4G4R4A4_UNORM = 11
90
+ GPU_TEXTUREFORMAT_B8G8R8A8_UNORM = 12
91
+ GPU_TEXTUREFORMAT_BC1_RGBA_UNORM = 13
92
+ GPU_TEXTUREFORMAT_BC2_RGBA_UNORM = 14
93
+ GPU_TEXTUREFORMAT_BC3_RGBA_UNORM = 15
94
+ GPU_TEXTUREFORMAT_BC4_R_UNORM = 16
95
+ GPU_TEXTUREFORMAT_BC5_RG_UNORM = 17
96
+ GPU_TEXTUREFORMAT_BC7_RGBA_UNORM = 18
97
+ GPU_TEXTUREFORMAT_BC6H_RGB_FLOAT = 19
98
+ GPU_TEXTUREFORMAT_BC6H_RGB_UFLOAT = 20
99
+ GPU_TEXTUREFORMAT_R8_SNORM = 21
100
+ GPU_TEXTUREFORMAT_R8G8_SNORM = 22
101
+ GPU_TEXTUREFORMAT_R8G8B8A8_SNORM = 23
102
+ GPU_TEXTUREFORMAT_R16_SNORM = 24
103
+ GPU_TEXTUREFORMAT_R16G16_SNORM = 25
104
+ GPU_TEXTUREFORMAT_R16G16B16A16_SNORM = 26
105
+ GPU_TEXTUREFORMAT_R16_FLOAT = 27
106
+ GPU_TEXTUREFORMAT_R16G16_FLOAT = 28
107
+ GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT = 29
108
+ GPU_TEXTUREFORMAT_R32_FLOAT = 30
109
+ GPU_TEXTUREFORMAT_R32G32_FLOAT = 31
110
+ GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT = 32
111
+ GPU_TEXTUREFORMAT_R11G11B10_UFLOAT = 33
112
+ GPU_TEXTUREFORMAT_R8_UINT = 34
113
+ GPU_TEXTUREFORMAT_R8G8_UINT = 35
114
+ GPU_TEXTUREFORMAT_R8G8B8A8_UINT = 36
115
+ GPU_TEXTUREFORMAT_R16_UINT = 37
116
+ GPU_TEXTUREFORMAT_R16G16_UINT = 38
117
+ GPU_TEXTUREFORMAT_R16G16B16A16_UINT = 39
118
+ GPU_TEXTUREFORMAT_R32_UINT = 40
119
+ GPU_TEXTUREFORMAT_R32G32_UINT = 41
120
+ GPU_TEXTUREFORMAT_R32G32B32A32_UINT = 42
121
+ GPU_TEXTUREFORMAT_R8_INT = 43
122
+ GPU_TEXTUREFORMAT_R8G8_INT = 44
123
+ GPU_TEXTUREFORMAT_R8G8B8A8_INT = 45
124
+ GPU_TEXTUREFORMAT_R16_INT = 46
125
+ GPU_TEXTUREFORMAT_R16G16_INT = 47
126
+ GPU_TEXTUREFORMAT_R16G16B16A16_INT = 48
127
+ GPU_TEXTUREFORMAT_R32_INT = 49
128
+ GPU_TEXTUREFORMAT_R32G32_INT = 50
129
+ GPU_TEXTUREFORMAT_R32G32B32A32_INT = 51
130
+ GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB = 52
131
+ GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB = 53
132
+ GPU_TEXTUREFORMAT_BC1_RGBA_UNORM_SRGB = 54
133
+ GPU_TEXTUREFORMAT_BC2_RGBA_UNORM_SRGB = 55
134
+ GPU_TEXTUREFORMAT_BC3_RGBA_UNORM_SRGB = 56
135
+ GPU_TEXTUREFORMAT_BC7_RGBA_UNORM_SRGB = 57
136
+ GPU_TEXTUREFORMAT_D16_UNORM = 58
137
+ GPU_TEXTUREFORMAT_D24_UNORM = 59
138
+ GPU_TEXTUREFORMAT_D32_FLOAT = 60
139
+ GPU_TEXTUREFORMAT_D24_UNORM_S8_UINT = 61
140
+ GPU_TEXTUREFORMAT_D32_FLOAT_S8_UINT = 62
141
+ GPU_TEXTUREFORMAT_ASTC_4x4_UNORM = 63
142
+ GPU_TEXTUREFORMAT_ASTC_5x4_UNORM = 64
143
+ GPU_TEXTUREFORMAT_ASTC_5x5_UNORM = 65
144
+ GPU_TEXTUREFORMAT_ASTC_6x5_UNORM = 66
145
+ GPU_TEXTUREFORMAT_ASTC_6x6_UNORM = 67
146
+ GPU_TEXTUREFORMAT_ASTC_8x5_UNORM = 68
147
+ GPU_TEXTUREFORMAT_ASTC_8x6_UNORM = 69
148
+ GPU_TEXTUREFORMAT_ASTC_8x8_UNORM = 70
149
+ GPU_TEXTUREFORMAT_ASTC_10x5_UNORM = 71
150
+ GPU_TEXTUREFORMAT_ASTC_10x6_UNORM = 72
151
+ GPU_TEXTUREFORMAT_ASTC_10x8_UNORM = 73
152
+ GPU_TEXTUREFORMAT_ASTC_10x10_UNORM = 74
153
+ GPU_TEXTUREFORMAT_ASTC_12x10_UNORM = 75
154
+ GPU_TEXTUREFORMAT_ASTC_12x12_UNORM = 76
155
+ GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB = 77
156
+ GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB = 78
157
+ GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB = 79
158
+ GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB = 80
159
+ GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB = 81
160
+ GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB = 82
161
+ GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB = 83
162
+ GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB = 84
163
+ GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB = 85
164
+ GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB = 86
165
+ GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB = 87
166
+ GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB = 88
167
+ GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB = 89
168
+ GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB = 90
169
+ GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT = 91
170
+ GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT = 92
171
+ GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT = 93
172
+ GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT = 94
173
+ GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT = 95
174
+ GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT = 96
175
+ GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT = 97
176
+ GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT = 98
177
+ GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT = 99
178
+ GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT = 100
179
+ GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT = 101
180
+ GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT = 102
181
+ GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT = 103
182
+ GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT = 104
183
+ GPU_TEXTURETYPE_2D = 0
184
+ GPU_TEXTURETYPE_2D_ARRAY = 1
185
+ GPU_TEXTURETYPE_3D = 2
186
+ GPU_TEXTURETYPE_CUBE = 3
187
+ GPU_TEXTURETYPE_CUBE_ARRAY = 4
188
+ GPU_SAMPLECOUNT_1 = 0
189
+ GPU_SAMPLECOUNT_2 = 1
190
+ GPU_SAMPLECOUNT_4 = 2
191
+ GPU_SAMPLECOUNT_8 = 3
192
+ GPU_CUBEMAPFACE_POSITIVEX = 0
193
+ GPU_CUBEMAPFACE_NEGATIVEX = 1
194
+ GPU_CUBEMAPFACE_POSITIVEY = 2
195
+ GPU_CUBEMAPFACE_NEGATIVEY = 3
196
+ GPU_CUBEMAPFACE_POSITIVEZ = 4
197
+ GPU_CUBEMAPFACE_NEGATIVEZ = 5
198
+ GPU_TRANSFERBUFFERUSAGE_UPLOAD = 0
199
+ GPU_TRANSFERBUFFERUSAGE_DOWNLOAD = 1
200
+ GPU_SHADERSTAGE_VERTEX = 0
201
+ GPU_SHADERSTAGE_FRAGMENT = 1
202
+ GPU_VERTEXELEMENTFORMAT_INVALID = 0
203
+ GPU_VERTEXELEMENTFORMAT_INT = 1
204
+ GPU_VERTEXELEMENTFORMAT_INT2 = 2
205
+ GPU_VERTEXELEMENTFORMAT_INT3 = 3
206
+ GPU_VERTEXELEMENTFORMAT_INT4 = 4
207
+ GPU_VERTEXELEMENTFORMAT_UINT = 5
208
+ GPU_VERTEXELEMENTFORMAT_UINT2 = 6
209
+ GPU_VERTEXELEMENTFORMAT_UINT3 = 7
210
+ GPU_VERTEXELEMENTFORMAT_UINT4 = 8
211
+ GPU_VERTEXELEMENTFORMAT_FLOAT = 9
212
+ GPU_VERTEXELEMENTFORMAT_FLOAT2 = 10
213
+ GPU_VERTEXELEMENTFORMAT_FLOAT3 = 11
214
+ GPU_VERTEXELEMENTFORMAT_FLOAT4 = 12
215
+ GPU_VERTEXELEMENTFORMAT_BYTE2 = 13
216
+ GPU_VERTEXELEMENTFORMAT_BYTE4 = 14
217
+ GPU_VERTEXELEMENTFORMAT_UBYTE2 = 15
218
+ GPU_VERTEXELEMENTFORMAT_UBYTE4 = 16
219
+ GPU_VERTEXELEMENTFORMAT_BYTE2_NORM = 17
220
+ GPU_VERTEXELEMENTFORMAT_BYTE4_NORM = 18
221
+ GPU_VERTEXELEMENTFORMAT_UBYTE2_NORM = 19
222
+ GPU_VERTEXELEMENTFORMAT_UBYTE4_NORM = 20
223
+ GPU_VERTEXELEMENTFORMAT_SHORT2 = 21
224
+ GPU_VERTEXELEMENTFORMAT_SHORT4 = 22
225
+ GPU_VERTEXELEMENTFORMAT_USHORT2 = 23
226
+ GPU_VERTEXELEMENTFORMAT_USHORT4 = 24
227
+ GPU_VERTEXELEMENTFORMAT_SHORT2_NORM = 25
228
+ GPU_VERTEXELEMENTFORMAT_SHORT4_NORM = 26
229
+ GPU_VERTEXELEMENTFORMAT_USHORT2_NORM = 27
230
+ GPU_VERTEXELEMENTFORMAT_USHORT4_NORM = 28
231
+ GPU_VERTEXELEMENTFORMAT_HALF2 = 29
232
+ GPU_VERTEXELEMENTFORMAT_HALF4 = 30
233
+ GPU_VERTEXINPUTRATE_VERTEX = 0
234
+ GPU_VERTEXINPUTRATE_INSTANCE = 1
235
+ GPU_FILLMODE_FILL = 0
236
+ GPU_FILLMODE_LINE = 1
237
+ GPU_CULLMODE_NONE = 0
238
+ GPU_CULLMODE_FRONT = 1
239
+ GPU_CULLMODE_BACK = 2
240
+ GPU_FRONTFACE_COUNTER_CLOCKWISE = 0
241
+ GPU_FRONTFACE_CLOCKWISE = 1
242
+ GPU_COMPAREOP_INVALID = 0
243
+ GPU_COMPAREOP_NEVER = 1
244
+ GPU_COMPAREOP_LESS = 2
245
+ GPU_COMPAREOP_EQUAL = 3
246
+ GPU_COMPAREOP_LESS_OR_EQUAL = 4
247
+ GPU_COMPAREOP_GREATER = 5
248
+ GPU_COMPAREOP_NOT_EQUAL = 6
249
+ GPU_COMPAREOP_GREATER_OR_EQUAL = 7
250
+ GPU_COMPAREOP_ALWAYS = 8
251
+ GPU_STENCILOP_INVALID = 0
252
+ GPU_STENCILOP_KEEP = 1
253
+ GPU_STENCILOP_ZERO = 2
254
+ GPU_STENCILOP_REPLACE = 3
255
+ GPU_STENCILOP_INCREMENT_AND_CLAMP = 4
256
+ GPU_STENCILOP_DECREMENT_AND_CLAMP = 5
257
+ GPU_STENCILOP_INVERT = 6
258
+ GPU_STENCILOP_INCREMENT_AND_WRAP = 7
259
+ GPU_STENCILOP_DECREMENT_AND_WRAP = 8
260
+ GPU_BLENDOP_INVALID = 0
261
+ GPU_BLENDOP_ADD = 1
262
+ GPU_BLENDOP_SUBTRACT = 2
263
+ GPU_BLENDOP_REVERSE_SUBTRACT = 3
264
+ GPU_BLENDOP_MIN = 4
265
+ GPU_BLENDOP_MAX = 5
266
+ GPU_BLENDFACTOR_INVALID = 0
267
+ GPU_BLENDFACTOR_ZERO = 1
268
+ GPU_BLENDFACTOR_ONE = 2
269
+ GPU_BLENDFACTOR_SRC_COLOR = 3
270
+ GPU_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 4
271
+ GPU_BLENDFACTOR_DST_COLOR = 5
272
+ GPU_BLENDFACTOR_ONE_MINUS_DST_COLOR = 6
273
+ GPU_BLENDFACTOR_SRC_ALPHA = 7
274
+ GPU_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 8
275
+ GPU_BLENDFACTOR_DST_ALPHA = 9
276
+ GPU_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 10
277
+ GPU_BLENDFACTOR_CONSTANT_COLOR = 11
278
+ GPU_BLENDFACTOR_ONE_MINUS_CONSTANT_COLOR = 12
279
+ GPU_BLENDFACTOR_SRC_ALPHA_SATURATE = 13
280
+ GPU_FILTER_NEAREST = 0
281
+ GPU_FILTER_LINEAR = 1
282
+ GPU_SAMPLERMIPMAPMODE_NEAREST = 0
283
+ GPU_SAMPLERMIPMAPMODE_LINEAR = 1
284
+ GPU_SAMPLERADDRESSMODE_REPEAT = 0
285
+ GPU_SAMPLERADDRESSMODE_MIRRORED_REPEAT = 1
286
+ GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE = 2
287
+ GPU_PRESENTMODE_VSYNC = 0
288
+ GPU_PRESENTMODE_IMMEDIATE = 1
289
+ GPU_PRESENTMODE_MAILBOX = 2
290
+ GPU_SWAPCHAINCOMPOSITION_SDR = 0
291
+ GPU_SWAPCHAINCOMPOSITION_SDR_LINEAR = 1
292
+ GPU_SWAPCHAINCOMPOSITION_HDR_EXTENDED_LINEAR = 2
293
+ GPU_SWAPCHAINCOMPOSITION_HDR10_ST2084 = 3
294
+
295
+ # Typedef
296
+
297
+ typedef :int, :SDL_GPUPrimitiveType
298
+ typedef :int, :SDL_GPULoadOp
299
+ typedef :int, :SDL_GPUStoreOp
300
+ typedef :int, :SDL_GPUIndexElementSize
301
+ typedef :int, :SDL_GPUTextureFormat
302
+ typedef :uint, :SDL_GPUTextureUsageFlags
303
+ typedef :int, :SDL_GPUTextureType
304
+ typedef :int, :SDL_GPUSampleCount
305
+ typedef :int, :SDL_GPUCubeMapFace
306
+ typedef :uint, :SDL_GPUBufferUsageFlags
307
+ typedef :int, :SDL_GPUTransferBufferUsage
308
+ typedef :int, :SDL_GPUShaderStage
309
+ typedef :uint, :SDL_GPUShaderFormat
310
+ typedef :int, :SDL_GPUVertexElementFormat
311
+ typedef :int, :SDL_GPUVertexInputRate
312
+ typedef :int, :SDL_GPUFillMode
313
+ typedef :int, :SDL_GPUCullMode
314
+ typedef :int, :SDL_GPUFrontFace
315
+ typedef :int, :SDL_GPUCompareOp
316
+ typedef :int, :SDL_GPUStencilOp
317
+ typedef :int, :SDL_GPUBlendOp
318
+ typedef :int, :SDL_GPUBlendFactor
319
+ typedef :uchar, :SDL_GPUColorComponentFlags
320
+ typedef :int, :SDL_GPUFilter
321
+ typedef :int, :SDL_GPUSamplerMipmapMode
322
+ typedef :int, :SDL_GPUSamplerAddressMode
323
+ typedef :int, :SDL_GPUPresentMode
324
+ typedef :int, :SDL_GPUSwapchainComposition
325
+
326
+ # Struct
327
+
328
+ class GPUViewport < FFI::Struct
329
+ layout(
330
+ :x, :float,
331
+ :y, :float,
332
+ :w, :float,
333
+ :h, :float,
334
+ :min_depth, :float,
335
+ :max_depth, :float,
336
+ )
337
+ end
338
+
339
+ class GPUTextureTransferInfo < FFI::Struct
340
+ layout(
341
+ :transfer_buffer, :pointer,
342
+ :offset, :uint,
343
+ :pixels_per_row, :uint,
344
+ :rows_per_layer, :uint,
345
+ )
346
+ end
347
+
348
+ class GPUTransferBufferLocation < FFI::Struct
349
+ layout(
350
+ :transfer_buffer, :pointer,
351
+ :offset, :uint,
352
+ )
353
+ end
354
+
355
+ class GPUTextureLocation < FFI::Struct
356
+ layout(
357
+ :texture, :pointer,
358
+ :mip_level, :uint,
359
+ :layer, :uint,
360
+ :x, :uint,
361
+ :y, :uint,
362
+ :z, :uint,
363
+ )
364
+ end
365
+
366
+ class GPUTextureRegion < FFI::Struct
367
+ layout(
368
+ :texture, :pointer,
369
+ :mip_level, :uint,
370
+ :layer, :uint,
371
+ :x, :uint,
372
+ :y, :uint,
373
+ :z, :uint,
374
+ :w, :uint,
375
+ :h, :uint,
376
+ :d, :uint,
377
+ )
378
+ end
379
+
380
+ class GPUBlitRegion < FFI::Struct
381
+ layout(
382
+ :texture, :pointer,
383
+ :mip_level, :uint,
384
+ :layer_or_depth_plane, :uint,
385
+ :x, :uint,
386
+ :y, :uint,
387
+ :w, :uint,
388
+ :h, :uint,
389
+ )
390
+ end
391
+
392
+ class GPUBufferLocation < FFI::Struct
393
+ layout(
394
+ :buffer, :pointer,
395
+ :offset, :uint,
396
+ )
397
+ end
398
+
399
+ class GPUBufferRegion < FFI::Struct
400
+ layout(
401
+ :buffer, :pointer,
402
+ :offset, :uint,
403
+ :size, :uint,
404
+ )
405
+ end
406
+
407
+ class GPUIndirectDrawCommand < FFI::Struct
408
+ layout(
409
+ :num_vertices, :uint,
410
+ :num_instances, :uint,
411
+ :first_vertex, :uint,
412
+ :first_instance, :uint,
413
+ )
414
+ end
415
+
416
+ class GPUIndexedIndirectDrawCommand < FFI::Struct
417
+ layout(
418
+ :num_indices, :uint,
419
+ :num_instances, :uint,
420
+ :first_index, :uint,
421
+ :vertex_offset, :int,
422
+ :first_instance, :uint,
423
+ )
424
+ end
425
+
426
+ class GPUIndirectDispatchCommand < FFI::Struct
427
+ layout(
428
+ :groupcount_x, :uint,
429
+ :groupcount_y, :uint,
430
+ :groupcount_z, :uint,
431
+ )
432
+ end
433
+
434
+ class GPUSamplerCreateInfo < FFI::Struct
435
+ layout(
436
+ :min_filter, :int,
437
+ :mag_filter, :int,
438
+ :mipmap_mode, :int,
439
+ :address_mode_u, :int,
440
+ :address_mode_v, :int,
441
+ :address_mode_w, :int,
442
+ :mip_lod_bias, :float,
443
+ :max_anisotropy, :float,
444
+ :compare_op, :int,
445
+ :min_lod, :float,
446
+ :max_lod, :float,
447
+ :enable_anisotropy, :bool,
448
+ :enable_compare, :bool,
449
+ :padding1, :uchar,
450
+ :padding2, :uchar,
451
+ :props, :uint,
452
+ )
453
+ end
454
+
455
+ class GPUVertexBufferDescription < FFI::Struct
456
+ layout(
457
+ :slot, :uint,
458
+ :pitch, :uint,
459
+ :input_rate, :int,
460
+ :instance_step_rate, :uint,
461
+ )
462
+ end
463
+
464
+ class GPUVertexAttribute < FFI::Struct
465
+ layout(
466
+ :location, :uint,
467
+ :buffer_slot, :uint,
468
+ :format, :int,
469
+ :offset, :uint,
470
+ )
471
+ end
472
+
473
+ class GPUVertexInputState < FFI::Struct
474
+ layout(
475
+ :vertex_buffer_descriptions, :pointer,
476
+ :num_vertex_buffers, :uint,
477
+ :vertex_attributes, :pointer,
478
+ :num_vertex_attributes, :uint,
479
+ )
480
+ end
481
+
482
+ class GPUStencilOpState < FFI::Struct
483
+ layout(
484
+ :fail_op, :int,
485
+ :pass_op, :int,
486
+ :depth_fail_op, :int,
487
+ :compare_op, :int,
488
+ )
489
+ end
490
+
491
+ class GPUColorTargetBlendState < FFI::Struct
492
+ layout(
493
+ :src_color_blendfactor, :int,
494
+ :dst_color_blendfactor, :int,
495
+ :color_blend_op, :int,
496
+ :src_alpha_blendfactor, :int,
497
+ :dst_alpha_blendfactor, :int,
498
+ :alpha_blend_op, :int,
499
+ :color_write_mask, :uchar,
500
+ :enable_blend, :bool,
501
+ :enable_color_write_mask, :bool,
502
+ :padding1, :uchar,
503
+ :padding2, :uchar,
504
+ )
505
+ end
506
+
507
+ class GPUShaderCreateInfo < FFI::Struct
508
+ layout(
509
+ :code_size, :ulong_long,
510
+ :code, :pointer,
511
+ :entrypoint, :pointer,
512
+ :format, :uint,
513
+ :stage, :int,
514
+ :num_samplers, :uint,
515
+ :num_storage_textures, :uint,
516
+ :num_storage_buffers, :uint,
517
+ :num_uniform_buffers, :uint,
518
+ :props, :uint,
519
+ )
520
+ end
521
+
522
+ class GPUTextureCreateInfo < FFI::Struct
523
+ layout(
524
+ :type, :int,
525
+ :format, :int,
526
+ :usage, :uint,
527
+ :width, :uint,
528
+ :height, :uint,
529
+ :layer_count_or_depth, :uint,
530
+ :num_levels, :uint,
531
+ :sample_count, :int,
532
+ :props, :uint,
533
+ )
534
+ end
535
+
536
+ class GPUBufferCreateInfo < FFI::Struct
537
+ layout(
538
+ :usage, :uint,
539
+ :size, :uint,
540
+ :props, :uint,
541
+ )
542
+ end
543
+
544
+ class GPUTransferBufferCreateInfo < FFI::Struct
545
+ layout(
546
+ :usage, :int,
547
+ :size, :uint,
548
+ :props, :uint,
549
+ )
550
+ end
551
+
552
+ class GPURasterizerState < FFI::Struct
553
+ layout(
554
+ :fill_mode, :int,
555
+ :cull_mode, :int,
556
+ :front_face, :int,
557
+ :depth_bias_constant_factor, :float,
558
+ :depth_bias_clamp, :float,
559
+ :depth_bias_slope_factor, :float,
560
+ :enable_depth_bias, :bool,
561
+ :enable_depth_clip, :bool,
562
+ :padding1, :uchar,
563
+ :padding2, :uchar,
564
+ )
565
+ end
566
+
567
+ class GPUMultisampleState < FFI::Struct
568
+ layout(
569
+ :sample_count, :int,
570
+ :sample_mask, :uint,
571
+ :enable_mask, :bool,
572
+ :padding1, :uchar,
573
+ :padding2, :uchar,
574
+ :padding3, :uchar,
575
+ )
576
+ end
577
+
578
+ class GPUDepthStencilState < FFI::Struct
579
+ layout(
580
+ :compare_op, :int,
581
+ :back_stencil_state, GPUStencilOpState,
582
+ :front_stencil_state, GPUStencilOpState,
583
+ :compare_mask, :uchar,
584
+ :write_mask, :uchar,
585
+ :enable_depth_test, :bool,
586
+ :enable_depth_write, :bool,
587
+ :enable_stencil_test, :bool,
588
+ :padding1, :uchar,
589
+ :padding2, :uchar,
590
+ :padding3, :uchar,
591
+ )
592
+ end
593
+
594
+ class GPUColorTargetDescription < FFI::Struct
595
+ layout(
596
+ :format, :int,
597
+ :blend_state, GPUColorTargetBlendState,
598
+ )
599
+ end
600
+
601
+ class GPUGraphicsPipelineTargetInfo < FFI::Struct
602
+ layout(
603
+ :color_target_descriptions, :pointer,
604
+ :num_color_targets, :uint,
605
+ :depth_stencil_format, :int,
606
+ :has_depth_stencil_target, :bool,
607
+ :padding1, :uchar,
608
+ :padding2, :uchar,
609
+ :padding3, :uchar,
610
+ )
611
+ end
612
+
613
+ class GPUGraphicsPipelineCreateInfo < FFI::Struct
614
+ layout(
615
+ :vertex_shader, :pointer,
616
+ :fragment_shader, :pointer,
617
+ :vertex_input_state, GPUVertexInputState,
618
+ :primitive_type, :int,
619
+ :rasterizer_state, GPURasterizerState,
620
+ :multisample_state, GPUMultisampleState,
621
+ :depth_stencil_state, GPUDepthStencilState,
622
+ :target_info, GPUGraphicsPipelineTargetInfo,
623
+ :props, :uint,
624
+ )
625
+ end
626
+
627
+ class GPUComputePipelineCreateInfo < FFI::Struct
628
+ layout(
629
+ :code_size, :ulong_long,
630
+ :code, :pointer,
631
+ :entrypoint, :pointer,
632
+ :format, :uint,
633
+ :num_samplers, :uint,
634
+ :num_readonly_storage_textures, :uint,
635
+ :num_readonly_storage_buffers, :uint,
636
+ :num_readwrite_storage_textures, :uint,
637
+ :num_readwrite_storage_buffers, :uint,
638
+ :num_uniform_buffers, :uint,
639
+ :threadcount_x, :uint,
640
+ :threadcount_y, :uint,
641
+ :threadcount_z, :uint,
642
+ :props, :uint,
643
+ )
644
+ end
645
+
646
+ class GPUColorTargetInfo < FFI::Struct
647
+ layout(
648
+ :texture, :pointer,
649
+ :mip_level, :uint,
650
+ :layer_or_depth_plane, :uint,
651
+ :clear_color, FColor,
652
+ :load_op, :int,
653
+ :store_op, :int,
654
+ :resolve_texture, :pointer,
655
+ :resolve_mip_level, :uint,
656
+ :resolve_layer, :uint,
657
+ :cycle, :bool,
658
+ :cycle_resolve_texture, :bool,
659
+ :padding1, :uchar,
660
+ :padding2, :uchar,
661
+ )
662
+ end
663
+
664
+ class GPUDepthStencilTargetInfo < FFI::Struct
665
+ layout(
666
+ :texture, :pointer,
667
+ :clear_depth, :float,
668
+ :load_op, :int,
669
+ :store_op, :int,
670
+ :stencil_load_op, :int,
671
+ :stencil_store_op, :int,
672
+ :cycle, :bool,
673
+ :clear_stencil, :uchar,
674
+ :padding1, :uchar,
675
+ :padding2, :uchar,
676
+ )
677
+ end
678
+
679
+ class GPUBlitInfo < FFI::Struct
680
+ layout(
681
+ :source, GPUBlitRegion,
682
+ :destination, GPUBlitRegion,
683
+ :load_op, :int,
684
+ :clear_color, FColor,
685
+ :flip_mode, :int,
686
+ :filter, :int,
687
+ :cycle, :bool,
688
+ :padding1, :uchar,
689
+ :padding2, :uchar,
690
+ :padding3, :uchar,
691
+ )
692
+ end
693
+
694
+ class GPUBufferBinding < FFI::Struct
695
+ layout(
696
+ :buffer, :pointer,
697
+ :offset, :uint,
698
+ )
699
+ end
700
+
701
+ class GPUTextureSamplerBinding < FFI::Struct
702
+ layout(
703
+ :texture, :pointer,
704
+ :sampler, :pointer,
705
+ )
706
+ end
707
+
708
+ class GPUStorageBufferReadWriteBinding < FFI::Struct
709
+ layout(
710
+ :buffer, :pointer,
711
+ :cycle, :bool,
712
+ :padding1, :uchar,
713
+ :padding2, :uchar,
714
+ :padding3, :uchar,
715
+ )
716
+ end
717
+
718
+ class GPUStorageTextureReadWriteBinding < FFI::Struct
719
+ layout(
720
+ :texture, :pointer,
721
+ :mip_level, :uint,
722
+ :layer, :uint,
723
+ :cycle, :bool,
724
+ :padding1, :uchar,
725
+ :padding2, :uchar,
726
+ :padding3, :uchar,
727
+ )
728
+ end
729
+
730
+
731
+ # Function
732
+
733
+ def self.setup_gpu_symbols(output_error = false)
734
+ entries = [
735
+ [:GPUSupportsShaderFormats, :SDL_GPUSupportsShaderFormats, [:uint, :pointer], :bool],
736
+ [:GPUSupportsProperties, :SDL_GPUSupportsProperties, [:uint], :bool],
737
+ [:CreateGPUDevice, :SDL_CreateGPUDevice, [:uint, :bool, :pointer], :pointer],
738
+ [:CreateGPUDeviceWithProperties, :SDL_CreateGPUDeviceWithProperties, [:uint], :pointer],
739
+ [:DestroyGPUDevice, :SDL_DestroyGPUDevice, [:pointer], :void],
740
+ [:GetNumGPUDrivers, :SDL_GetNumGPUDrivers, [], :int],
741
+ [:GetGPUDriver, :SDL_GetGPUDriver, [:int], :pointer],
742
+ [:GetGPUDeviceDriver, :SDL_GetGPUDeviceDriver, [:pointer], :pointer],
743
+ [:GetGPUShaderFormats, :SDL_GetGPUShaderFormats, [:pointer], :uint],
744
+ [:CreateGPUComputePipeline, :SDL_CreateGPUComputePipeline, [:pointer, :pointer], :pointer],
745
+ [:CreateGPUGraphicsPipeline, :SDL_CreateGPUGraphicsPipeline, [:pointer, :pointer], :pointer],
746
+ [:CreateGPUSampler, :SDL_CreateGPUSampler, [:pointer, :pointer], :pointer],
747
+ [:CreateGPUShader, :SDL_CreateGPUShader, [:pointer, :pointer], :pointer],
748
+ [:CreateGPUTexture, :SDL_CreateGPUTexture, [:pointer, :pointer], :pointer],
749
+ [:CreateGPUBuffer, :SDL_CreateGPUBuffer, [:pointer, :pointer], :pointer],
750
+ [:CreateGPUTransferBuffer, :SDL_CreateGPUTransferBuffer, [:pointer, :pointer], :pointer],
751
+ [:SetGPUBufferName, :SDL_SetGPUBufferName, [:pointer, :pointer, :pointer], :void],
752
+ [:SetGPUTextureName, :SDL_SetGPUTextureName, [:pointer, :pointer, :pointer], :void],
753
+ [:InsertGPUDebugLabel, :SDL_InsertGPUDebugLabel, [:pointer, :pointer], :void],
754
+ [:PushGPUDebugGroup, :SDL_PushGPUDebugGroup, [:pointer, :pointer], :void],
755
+ [:PopGPUDebugGroup, :SDL_PopGPUDebugGroup, [:pointer], :void],
756
+ [:ReleaseGPUTexture, :SDL_ReleaseGPUTexture, [:pointer, :pointer], :void],
757
+ [:ReleaseGPUSampler, :SDL_ReleaseGPUSampler, [:pointer, :pointer], :void],
758
+ [:ReleaseGPUBuffer, :SDL_ReleaseGPUBuffer, [:pointer, :pointer], :void],
759
+ [:ReleaseGPUTransferBuffer, :SDL_ReleaseGPUTransferBuffer, [:pointer, :pointer], :void],
760
+ [:ReleaseGPUComputePipeline, :SDL_ReleaseGPUComputePipeline, [:pointer, :pointer], :void],
761
+ [:ReleaseGPUShader, :SDL_ReleaseGPUShader, [:pointer, :pointer], :void],
762
+ [:ReleaseGPUGraphicsPipeline, :SDL_ReleaseGPUGraphicsPipeline, [:pointer, :pointer], :void],
763
+ [:AcquireGPUCommandBuffer, :SDL_AcquireGPUCommandBuffer, [:pointer], :pointer],
764
+ [:PushGPUVertexUniformData, :SDL_PushGPUVertexUniformData, [:pointer, :uint, :pointer, :uint], :void],
765
+ [:PushGPUFragmentUniformData, :SDL_PushGPUFragmentUniformData, [:pointer, :uint, :pointer, :uint], :void],
766
+ [:PushGPUComputeUniformData, :SDL_PushGPUComputeUniformData, [:pointer, :uint, :pointer, :uint], :void],
767
+ [:BeginGPURenderPass, :SDL_BeginGPURenderPass, [:pointer, :pointer, :uint, :pointer], :pointer],
768
+ [:BindGPUGraphicsPipeline, :SDL_BindGPUGraphicsPipeline, [:pointer, :pointer], :void],
769
+ [:SetGPUViewport, :SDL_SetGPUViewport, [:pointer, :pointer], :void],
770
+ [:SetGPUScissor, :SDL_SetGPUScissor, [:pointer, :pointer], :void],
771
+ [:SetGPUBlendConstants, :SDL_SetGPUBlendConstants, [:pointer, FColor.by_value], :void],
772
+ [:SetGPUStencilReference, :SDL_SetGPUStencilReference, [:pointer, :uchar], :void],
773
+ [:BindGPUVertexBuffers, :SDL_BindGPUVertexBuffers, [:pointer, :uint, :pointer, :uint], :void],
774
+ [:BindGPUIndexBuffer, :SDL_BindGPUIndexBuffer, [:pointer, :pointer, :int], :void],
775
+ [:BindGPUVertexSamplers, :SDL_BindGPUVertexSamplers, [:pointer, :uint, :pointer, :uint], :void],
776
+ [:BindGPUVertexStorageTextures, :SDL_BindGPUVertexStorageTextures, [:pointer, :uint, :pointer, :uint], :void],
777
+ [:BindGPUVertexStorageBuffers, :SDL_BindGPUVertexStorageBuffers, [:pointer, :uint, :pointer, :uint], :void],
778
+ [:BindGPUFragmentSamplers, :SDL_BindGPUFragmentSamplers, [:pointer, :uint, :pointer, :uint], :void],
779
+ [:BindGPUFragmentStorageTextures, :SDL_BindGPUFragmentStorageTextures, [:pointer, :uint, :pointer, :uint], :void],
780
+ [:BindGPUFragmentStorageBuffers, :SDL_BindGPUFragmentStorageBuffers, [:pointer, :uint, :pointer, :uint], :void],
781
+ [:DrawGPUIndexedPrimitives, :SDL_DrawGPUIndexedPrimitives, [:pointer, :uint, :uint, :uint, :int, :uint], :void],
782
+ [:DrawGPUPrimitives, :SDL_DrawGPUPrimitives, [:pointer, :uint, :uint, :uint, :uint], :void],
783
+ [:DrawGPUPrimitivesIndirect, :SDL_DrawGPUPrimitivesIndirect, [:pointer, :pointer, :uint, :uint], :void],
784
+ [:DrawGPUIndexedPrimitivesIndirect, :SDL_DrawGPUIndexedPrimitivesIndirect, [:pointer, :pointer, :uint, :uint], :void],
785
+ [:EndGPURenderPass, :SDL_EndGPURenderPass, [:pointer], :void],
786
+ [:BeginGPUComputePass, :SDL_BeginGPUComputePass, [:pointer, :pointer, :uint, :pointer, :uint], :pointer],
787
+ [:BindGPUComputePipeline, :SDL_BindGPUComputePipeline, [:pointer, :pointer], :void],
788
+ [:BindGPUComputeSamplers, :SDL_BindGPUComputeSamplers, [:pointer, :uint, :pointer, :uint], :void],
789
+ [:BindGPUComputeStorageTextures, :SDL_BindGPUComputeStorageTextures, [:pointer, :uint, :pointer, :uint], :void],
790
+ [:BindGPUComputeStorageBuffers, :SDL_BindGPUComputeStorageBuffers, [:pointer, :uint, :pointer, :uint], :void],
791
+ [:DispatchGPUCompute, :SDL_DispatchGPUCompute, [:pointer, :uint, :uint, :uint], :void],
792
+ [:DispatchGPUComputeIndirect, :SDL_DispatchGPUComputeIndirect, [:pointer, :pointer, :uint], :void],
793
+ [:EndGPUComputePass, :SDL_EndGPUComputePass, [:pointer], :void],
794
+ [:MapGPUTransferBuffer, :SDL_MapGPUTransferBuffer, [:pointer, :pointer, :bool], :pointer],
795
+ [:UnmapGPUTransferBuffer, :SDL_UnmapGPUTransferBuffer, [:pointer, :pointer], :void],
796
+ [:BeginGPUCopyPass, :SDL_BeginGPUCopyPass, [:pointer], :pointer],
797
+ [:UploadToGPUTexture, :SDL_UploadToGPUTexture, [:pointer, :pointer, :pointer, :bool], :void],
798
+ [:UploadToGPUBuffer, :SDL_UploadToGPUBuffer, [:pointer, :pointer, :pointer, :bool], :void],
799
+ [:CopyGPUTextureToTexture, :SDL_CopyGPUTextureToTexture, [:pointer, :pointer, :pointer, :uint, :uint, :uint, :bool], :void],
800
+ [:CopyGPUBufferToBuffer, :SDL_CopyGPUBufferToBuffer, [:pointer, :pointer, :pointer, :uint, :bool], :void],
801
+ [:DownloadFromGPUTexture, :SDL_DownloadFromGPUTexture, [:pointer, :pointer, :pointer], :void],
802
+ [:DownloadFromGPUBuffer, :SDL_DownloadFromGPUBuffer, [:pointer, :pointer, :pointer], :void],
803
+ [:EndGPUCopyPass, :SDL_EndGPUCopyPass, [:pointer], :void],
804
+ [:GenerateMipmapsForGPUTexture, :SDL_GenerateMipmapsForGPUTexture, [:pointer, :pointer], :void],
805
+ [:BlitGPUTexture, :SDL_BlitGPUTexture, [:pointer, :pointer], :void],
806
+ [:WindowSupportsGPUSwapchainComposition, :SDL_WindowSupportsGPUSwapchainComposition, [:pointer, :pointer, :int], :bool],
807
+ [:WindowSupportsGPUPresentMode, :SDL_WindowSupportsGPUPresentMode, [:pointer, :pointer, :int], :bool],
808
+ [:ClaimWindowForGPUDevice, :SDL_ClaimWindowForGPUDevice, [:pointer, :pointer], :bool],
809
+ [:ReleaseWindowFromGPUDevice, :SDL_ReleaseWindowFromGPUDevice, [:pointer, :pointer], :void],
810
+ [:SetGPUSwapchainParameters, :SDL_SetGPUSwapchainParameters, [:pointer, :pointer, :int, :int], :bool],
811
+ [:SetGPUAllowedFramesInFlight, :SDL_SetGPUAllowedFramesInFlight, [:pointer, :uint], :bool],
812
+ [:GetGPUSwapchainTextureFormat, :SDL_GetGPUSwapchainTextureFormat, [:pointer, :pointer], :int],
813
+ [:AcquireGPUSwapchainTexture, :SDL_AcquireGPUSwapchainTexture, [:pointer, :pointer, :pointer, :pointer, :pointer], :bool],
814
+ [:WaitForGPUSwapchain, :SDL_WaitForGPUSwapchain, [:pointer, :pointer], :bool],
815
+ [:WaitAndAcquireGPUSwapchainTexture, :SDL_WaitAndAcquireGPUSwapchainTexture, [:pointer, :pointer, :pointer, :pointer, :pointer], :bool],
816
+ [:SubmitGPUCommandBuffer, :SDL_SubmitGPUCommandBuffer, [:pointer], :bool],
817
+ [:SubmitGPUCommandBufferAndAcquireFence, :SDL_SubmitGPUCommandBufferAndAcquireFence, [:pointer], :pointer],
818
+ [:CancelGPUCommandBuffer, :SDL_CancelGPUCommandBuffer, [:pointer], :bool],
819
+ [:WaitForGPUIdle, :SDL_WaitForGPUIdle, [:pointer], :bool],
820
+ [:WaitForGPUFences, :SDL_WaitForGPUFences, [:pointer, :bool, :pointer, :uint], :bool],
821
+ [:QueryGPUFence, :SDL_QueryGPUFence, [:pointer, :pointer], :bool],
822
+ [:ReleaseGPUFence, :SDL_ReleaseGPUFence, [:pointer, :pointer], :void],
823
+ [:GPUTextureFormatTexelBlockSize, :SDL_GPUTextureFormatTexelBlockSize, [:int], :uint],
824
+ [:GPUTextureSupportsFormat, :SDL_GPUTextureSupportsFormat, [:pointer, :int, :int, :uint], :bool],
825
+ [:GPUTextureSupportsSampleCount, :SDL_GPUTextureSupportsSampleCount, [:pointer, :int, :int], :bool],
826
+ [:CalculateGPUTextureFormatSize, :SDL_CalculateGPUTextureFormatSize, [:int, :uint, :uint, :uint], :uint],
827
+ ]
828
+ entries.each do |entry|
829
+ attach_function entry[0], entry[1], entry[2], entry[3]
830
+ rescue FFI::NotFoundError => e
831
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
832
+ end
833
+ end
834
+
835
+ end
836
+