wgpu 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +88 -0
  3. data/README.md +44 -5
  4. data/docs/README.md +22 -0
  5. data/docs/api_coverage.md +140 -0
  6. data/docs/async.md +41 -0
  7. data/docs/bind_groups.md +25 -0
  8. data/docs/buffer_data.md +37 -0
  9. data/docs/command_encoding.md +49 -0
  10. data/docs/errors.md +40 -0
  11. data/docs/getting_started_compute.md +62 -0
  12. data/docs/getting_started_rendering.md +62 -0
  13. data/docs/installation.md +94 -0
  14. data/docs/pipeline_descriptors.md +43 -0
  15. data/docs/releasing.md +32 -0
  16. data/docs/resource_lifetime.md +108 -0
  17. data/docs/shaders.md +32 -0
  18. data/docs/texture_readback.md +46 -0
  19. data/docs/troubleshooting.md +53 -0
  20. data/docs/upgrading_wgpu_native.md +37 -0
  21. data/ext/wgpu/extconf.rb +10 -142
  22. data/lib/wgpu/async_task.rb +19 -0
  23. data/lib/wgpu/commands/command_buffer.rb +25 -1
  24. data/lib/wgpu/commands/command_encoder.rb +123 -9
  25. data/lib/wgpu/commands/compute_pass.rb +53 -0
  26. data/lib/wgpu/commands/render_bundle.rb +9 -1
  27. data/lib/wgpu/commands/render_bundle_encoder.rb +65 -4
  28. data/lib/wgpu/commands/render_pass.rb +136 -8
  29. data/lib/wgpu/core/adapter.rb +123 -19
  30. data/lib/wgpu/core/async_waiter.rb +47 -4
  31. data/lib/wgpu/core/canvas_context.rb +32 -2
  32. data/lib/wgpu/core/device.rb +399 -53
  33. data/lib/wgpu/core/instance.rb +28 -4
  34. data/lib/wgpu/core/queue.rb +197 -51
  35. data/lib/wgpu/core/surface.rb +64 -17
  36. data/lib/wgpu/data_types.rb +83 -0
  37. data/lib/wgpu/descriptor_helpers.rb +104 -0
  38. data/lib/wgpu/error.rb +70 -0
  39. data/lib/wgpu/logging.rb +63 -0
  40. data/lib/wgpu/native/abi_verifier.rb +143 -0
  41. data/lib/wgpu/native/callbacks.rb +10 -1
  42. data/lib/wgpu/native/capabilities.rb +32 -2
  43. data/lib/wgpu/native/distribution.rb +176 -0
  44. data/lib/wgpu/native/enum_helper.rb +80 -0
  45. data/lib/wgpu/native/enums.rb +68 -8
  46. data/lib/wgpu/native/fixtures/webgpu-v27.0.4.0-enums.h +848 -0
  47. data/lib/wgpu/native/functions.rb +21 -10
  48. data/lib/wgpu/native/installer.rb +223 -0
  49. data/lib/wgpu/native/loader.rb +61 -21
  50. data/lib/wgpu/native/structs.rb +18 -1
  51. data/lib/wgpu/native_resource.rb +342 -0
  52. data/lib/wgpu/pipeline/bind_group.rb +21 -0
  53. data/lib/wgpu/pipeline/bind_group_layout.rb +108 -41
  54. data/lib/wgpu/pipeline/compute_pipeline.rb +40 -50
  55. data/lib/wgpu/pipeline/pipeline_layout.rb +8 -0
  56. data/lib/wgpu/pipeline/render_pipeline.rb +207 -110
  57. data/lib/wgpu/pipeline/shader_module.rb +95 -28
  58. data/lib/wgpu/resources/buffer.rb +387 -85
  59. data/lib/wgpu/resources/query_set.rb +26 -12
  60. data/lib/wgpu/resources/sampler.rb +43 -20
  61. data/lib/wgpu/resources/texture.rb +89 -48
  62. data/lib/wgpu/resources/texture_view.rb +35 -7
  63. data/lib/wgpu/texture_format.rb +96 -0
  64. data/lib/wgpu/version.rb +1 -1
  65. data/lib/wgpu/window.rb +34 -1
  66. data/lib/wgpu.rb +32 -0
  67. data/sig/wgpu.rbs +460 -0
  68. metadata +33 -16
data/sig/wgpu.rbs ADDED
@@ -0,0 +1,460 @@
1
+ module WGPU
2
+ VERSION: String
3
+
4
+ type enum_value = Symbol | Integer
5
+ type flags = enum_value | Array[Symbol]
6
+ type data = String | Array[Numeric] | untyped
7
+ type extent_3d = Hash[Symbol, Integer] | Array[Integer]
8
+ type texture_copy = Hash[Symbol, untyped]
9
+ type texture_data_layout = Hash[Symbol, Integer]
10
+ type configuration = Hash[Symbol, untyped]
11
+
12
+ def self.log_level: () -> Symbol
13
+ def self.log_level=: (enum_value) -> enum_value
14
+ def self.on_log: () { (Symbol, String) -> void } -> singleton(WGPU)
15
+ def self.debug_leaks: () -> bool
16
+ def self.debug_leaks=: (bool) -> bool
17
+
18
+ class Error < StandardError
19
+ end
20
+
21
+ class InitializationError < Error
22
+ end
23
+
24
+ class AdapterError < Error
25
+ end
26
+
27
+ class DeviceError < Error
28
+ end
29
+
30
+ class BufferError < Error
31
+ end
32
+
33
+ class TextureError < Error
34
+ end
35
+
36
+ class ResourceError < Error
37
+ end
38
+
39
+ class ShaderError < Error
40
+ end
41
+
42
+ class PipelineError < Error
43
+ end
44
+
45
+ class CommandError < Error
46
+ end
47
+
48
+ class SurfaceError < Error
49
+ end
50
+
51
+ class SurfaceAcquisitionError < SurfaceError
52
+ attr_reader status: Symbol
53
+ def initialize: (Symbol status, ?String? message) -> void
54
+ end
55
+
56
+ class RenderBundleError < Error
57
+ end
58
+
59
+ class ValidationError < Error
60
+ end
61
+
62
+ class OutOfMemoryError < Error
63
+ end
64
+
65
+ class InternalError < Error
66
+ end
67
+
68
+ class DeviceLostError < Error
69
+ end
70
+
71
+ class TimeoutError < Error
72
+ end
73
+
74
+ class GPUError
75
+ attr_reader type: Symbol
76
+ attr_reader message: String
77
+
78
+ # Creates a typed GPU error with its native category and diagnostic message.
79
+ def initialize: (Symbol type, String message) -> void
80
+ | (type: Symbol, message: String) -> void
81
+ def self.from_hash: (Hash[Symbol, untyped]? error) -> GPUError?
82
+ def exception_class: () -> singleton(Error)
83
+ def raise!: () -> bot
84
+ def to_h: () -> { type: Symbol, message: String }
85
+ end
86
+
87
+ class CompilationMessage
88
+ attr_reader type: Symbol
89
+ attr_reader message: String
90
+ attr_reader line_num: Integer
91
+ attr_reader line_pos: Integer
92
+ attr_reader line: Integer
93
+ attr_reader column: Integer
94
+ attr_reader offset: Integer
95
+ attr_reader length: Integer
96
+ def to_s: () -> String
97
+ end
98
+
99
+ module NativeResource
100
+ attr_reader label: String?
101
+ def released?: () -> bool
102
+ def use: [A] () { (self) -> A } -> A
103
+ # Releases the native handle and unregisters its leak-tracking entry.
104
+ def release: () -> void
105
+ end
106
+
107
+ class AsyncTask[A]
108
+ def initialize: () { () -> A } -> void
109
+ def wait: (?timeout: Numeric?) -> self
110
+ def value: (?timeout: Numeric?) -> A
111
+ def then: [B] () { (A) -> B } -> AsyncTask[B]
112
+ def complete?: () -> bool
113
+ def pending?: () -> bool
114
+ def error: () -> Exception?
115
+ end
116
+
117
+ module AsyncWaiter
118
+ def self.poll_interval: () -> Float
119
+ def self.poll_interval=: (Numeric) -> Numeric
120
+ end
121
+
122
+ module DataTypes
123
+ def self.pack: (Array[Numeric], ?type: Symbol) -> String
124
+ def self.unpack: (String, ?type: Symbol) -> Array[Numeric]
125
+ def self.byte_size: (Symbol) -> Integer
126
+ def self.to_pointer: (data, ?type: Symbol) -> [untyped, Integer]
127
+ def self.validate_alignment!: (Integer, Integer, name: String) -> Integer
128
+ end
129
+
130
+ module TextureFormat
131
+ COPY_ALIGNMENT: Integer
132
+ def self.block_size: (enum_value, ?aspect: Symbol) -> Integer
133
+ def self.block_dimensions: (enum_value) -> [Integer, Integer]
134
+ def self.bytes_per_row: (Integer, enum_value, ?aspect: Symbol) -> Integer
135
+ def self.aligned_bytes_per_row: (Integer, enum_value, ?aspect: Symbol, ?alignment: Integer) -> Integer
136
+ def self.block_info: (enum_value, ?aspect: Symbol) -> [Integer, Integer, Integer]
137
+ end
138
+
139
+ class Instance
140
+ include NativeResource
141
+ attr_reader handle: untyped
142
+ def initialize: () -> void
143
+ def request_adapter: (?power_preference: enum_value, ?backend: enum_value?, ?feature_level: enum_value, ?force_fallback_adapter: bool, ?compatible_surface: Surface?, ?timeout: Numeric?) -> Adapter
144
+ | (**untyped) -> Adapter
145
+ def request_adapter_async: (?power_preference: enum_value, ?backend: enum_value?, ?feature_level: enum_value, ?force_fallback_adapter: bool, ?compatible_surface: Surface?, ?timeout: Numeric?) -> AsyncTask[Adapter]
146
+ | (**untyped) -> AsyncTask[Adapter]
147
+ def enumerate_adapters: (?backends: flags?) -> Array[Adapter]
148
+ def enumerate_adapters_async: (?backends: flags?) -> AsyncTask[Array[Adapter]]
149
+ def get_canvas_context: (Hash[Symbol, untyped]) -> CanvasContext
150
+ def process_events: () -> void
151
+ end
152
+
153
+ class Adapter
154
+ include NativeResource
155
+ attr_reader handle: untyped
156
+ attr_reader instance: Instance?
157
+ def self.from_handle: (untyped, ?instance: Instance?) -> Adapter
158
+ def self.request: (Instance, ?power_preference: enum_value, ?backend: enum_value?, ?feature_level: enum_value, ?force_fallback_adapter: bool, ?compatible_surface: Surface?, ?timeout: Numeric?) -> Adapter
159
+ | (Instance, **untyped) -> Adapter
160
+ def request_device: (?label: String?, ?required_features: Array[enum_value], ?required_limits: Hash[Symbol, Integer]?, ?timeout: Numeric?) -> Device
161
+ | (**untyped) -> Device
162
+ def request_device_async: (?label: String?, ?required_features: Array[enum_value], ?required_limits: Hash[Symbol, Integer]?, ?timeout: Numeric?) -> AsyncTask[Device]
163
+ | (**untyped) -> AsyncTask[Device]
164
+ def info: () -> Hash[Symbol, untyped]
165
+ def name: () -> String
166
+ def vendor: () -> String
167
+ def backend_type: () -> Symbol
168
+ def adapter_type: () -> Symbol
169
+ def features: () -> Array[Symbol]
170
+ def has_feature?: (Symbol) -> bool
171
+ def limits: () -> Hash[Symbol, Integer]
172
+ def summary: () -> String
173
+ end
174
+
175
+ class Device
176
+ include NativeResource
177
+ attr_reader handle: untyped
178
+ attr_reader queue: Queue
179
+ attr_reader adapter: Adapter?
180
+ def self.request: (Adapter, ?label: String?, ?required_features: Array[enum_value], ?required_limits: Hash[Symbol, Integer]?, ?timeout: Numeric?) -> Device
181
+ | (Adapter, **untyped) -> Device
182
+ def adapter_info: () -> Hash[Symbol, untyped]?
183
+ def create_buffer: (?label: String?, size: Integer, usage: flags, ?mapped_at_creation: bool) -> Buffer
184
+ def create_buffer_with_data: (?label: String?, data: data, usage: flags, ?type: Symbol) -> Buffer
185
+ def create_shader_module: (**untyped) -> ShaderModule
186
+ def create_command_encoder: (?label: String?) -> CommandEncoder
187
+ def create_bind_group_layout: (?label: String?, entries: Array[Hash[Symbol, untyped]]) -> BindGroupLayout
188
+ def create_bind_group: (?label: String?, layout: BindGroupLayout, entries: Array[Hash[Symbol, untyped]]) -> BindGroup
189
+ def create_pipeline_layout: (?label: String?, bind_group_layouts: Array[BindGroupLayout]) -> PipelineLayout
190
+ def create_compute_pipeline: (**untyped) -> ComputePipeline
191
+ def create_compute_pipeline_async: (**untyped) -> AsyncTask[ComputePipeline]
192
+ def create_render_pipeline: (**untyped) -> RenderPipeline
193
+ def create_render_pipeline_async: (**untyped) -> AsyncTask[RenderPipeline]
194
+ def create_texture: (**untyped) -> Texture
195
+ def create_sampler: (**untyped) -> Sampler
196
+ def create_query_set: (?label: String?, type: enum_value, count: Integer) -> QuerySet
197
+ def create_render_bundle_encoder: (**untyped) -> RenderBundleEncoder
198
+ def features: () -> Array[Symbol]
199
+ def has_feature?: (Symbol) -> bool
200
+ def limits: () -> Hash[Symbol, Integer]
201
+ def poll: (?wait: bool) -> Integer
202
+ def push_error_scope: (?enum_value) -> void
203
+ def pop_error_scope: (?timeout: Numeric?) -> Hash[Symbol, untyped]
204
+ def pop_error_scope_async: (?timeout: Numeric?) -> AsyncTask[Hash[Symbol, untyped]]
205
+ def pop_error_scope_typed: (?timeout: Numeric?) -> GPUError?
206
+ def with_error_scope: [A] (?enum_value) { () -> A } -> A
207
+ def on_uncaptured_error: () { (GPUError) -> void } -> self
208
+ def on_device_lost: () { (Symbol, String) -> void } -> self
209
+ def destroy: () -> void
210
+ end
211
+
212
+ class Queue
213
+ include NativeResource
214
+ attr_reader handle: untyped
215
+ def submit: (CommandBuffer | Array[CommandBuffer]) -> void
216
+ def write_buffer: (Buffer, Integer, data, ?data_offset: Integer, ?size: Integer?, ?type: Symbol) -> void
217
+ def write_texture: (**untyped) -> void
218
+ def read_buffer: (Buffer, ?offset: Integer, ?size: Integer?, ?device: Device?, ?staging: Buffer?) -> String
219
+ def read_texture: (source: texture_copy, data_layout: texture_data_layout, size: extent_3d, ?device: Device?, ?staging: Buffer?) -> String
220
+ | (**untyped) -> String
221
+ def on_submitted_work_done: (?device: Device?, ?timeout: Numeric?) -> Symbol
222
+ def on_submitted_work_done_async: (?device: Device?, ?timeout: Numeric?) -> AsyncTask[Symbol]
223
+ end
224
+
225
+ class Buffer
226
+ include NativeResource
227
+ attr_reader handle: untyped
228
+ attr_reader size: Integer
229
+ attr_reader usage: Integer
230
+ def write: (data, ?offset: Integer, ?type: Symbol) -> void
231
+ def mapped_range: (?offset: Integer, ?size: Integer?) -> BufferMappedRange
232
+ def get_mapped_range: (?offset: Integer, ?size: Integer?) -> BufferMappedRange
233
+ def unmap: () -> void
234
+ def map_sync: (enum_value, ?offset: Integer, ?size: Integer?, ?timeout: Numeric?) -> true
235
+ def map_async: (enum_value, ?offset: Integer, ?size: Integer?) -> AsyncTask[true]
236
+ def read_mapped_data: (?offset: Integer, ?size: Integer?) -> String
237
+ def read_mapped: (?offset: Integer, ?size: Integer?, ?type: Symbol?) -> (String | Array[Numeric])
238
+ def write_mapped: (data, ?offset: Integer, ?type: Symbol) -> void
239
+ def read_mapped_floats: (?offset: Integer, ?count: Integer?) -> Array[Float]
240
+ def read_mapped_uint32s: (?offset: Integer, ?count: Integer?) -> Array[Integer]
241
+ def read_mapped_int32s: (?offset: Integer, ?count: Integer?) -> Array[Integer]
242
+ def read_mapped_float64s: (?offset: Integer, ?count: Integer?) -> Array[Float]
243
+ def read_mapped_uint16s: (?offset: Integer, ?count: Integer?) -> Array[Integer]
244
+ def read_mapped_uint8s: (?offset: Integer, ?count: Integer?) -> Array[Integer]
245
+ def read_mapped_values: (?type: Symbol, ?offset: Integer, ?count: Integer?) -> Array[Numeric]
246
+ def map_state: () -> Symbol
247
+ def destroy: () -> void
248
+ end
249
+
250
+ class BufferMappedRange
251
+ def read: (?type: Symbol, ?count: Integer?) -> Array[Numeric]
252
+ def write: (data, ?type: Symbol) -> void
253
+ def read_floats: (?Integer?) -> Array[Float]
254
+ def write_floats: (Array[Numeric]) -> void
255
+ def read_uint32s: (?Integer?) -> Array[Integer]
256
+ def write_uint32s: (Array[Integer]) -> void
257
+ def read_int32s: (?Integer?) -> Array[Integer]
258
+ def write_int32s: (Array[Integer]) -> void
259
+ def read_float64s: (?Integer?) -> Array[Float]
260
+ def write_float64s: (Array[Numeric]) -> void
261
+ def read_uint16s: (?Integer?) -> Array[Integer]
262
+ def write_uint16s: (Array[Integer]) -> void
263
+ def read_uint8s: (?Integer?) -> Array[Integer]
264
+ def write_uint8s: (Array[Integer]) -> void
265
+ def read_bytes: () -> String
266
+ def write_bytes: (String) -> void
267
+ end
268
+
269
+ class Texture
270
+ include NativeResource
271
+ attr_reader handle: untyped
272
+ attr_reader surface_status: Symbol?
273
+ def self.from_handle: (untyped, ?surface_status: Symbol?, ?device: Device?) -> Texture
274
+ def create_view: (**untyped) -> TextureView
275
+ def width: () -> Integer
276
+ def height: () -> Integer
277
+ def depth_or_array_layers: () -> Integer
278
+ def size: () -> Hash[Symbol, Integer]
279
+ def mip_level_count: () -> Integer
280
+ def sample_count: () -> Integer
281
+ def dimension: () -> Symbol
282
+ def format: () -> Symbol
283
+ def usage: () -> Integer
284
+ def destroy: () -> void
285
+ end
286
+
287
+ class TextureView
288
+ include NativeResource
289
+ attr_reader handle: untyped
290
+ attr_reader texture: Texture?
291
+ def self.from_handle: (untyped, ?device: Device?) -> TextureView
292
+ def size: () -> Hash[Symbol, Integer]?
293
+ end
294
+
295
+ class Sampler
296
+ include NativeResource
297
+ attr_reader handle: untyped
298
+ end
299
+
300
+ class QuerySet
301
+ include NativeResource
302
+ attr_reader handle: untyped
303
+ attr_reader count: Integer
304
+ attr_reader type: Symbol
305
+ def destroy: () -> void
306
+ end
307
+
308
+ class ShaderModule
309
+ include NativeResource
310
+ attr_reader handle: untyped
311
+ def get_compilation_info: () -> { status: Symbol, messages: Array[CompilationMessage] }
312
+ def get_compilation_info_async: () -> AsyncTask[Hash[Symbol, untyped]]
313
+ end
314
+
315
+ class BindGroupLayout
316
+ include NativeResource
317
+ attr_reader handle: untyped
318
+ def self.from_handle: (untyped, ?device: Device?) -> BindGroupLayout
319
+ end
320
+
321
+ class BindGroup
322
+ include NativeResource
323
+ attr_reader handle: untyped
324
+ end
325
+
326
+ class PipelineLayout
327
+ include NativeResource
328
+ attr_reader handle: untyped
329
+ end
330
+
331
+ class ComputePipeline
332
+ include NativeResource
333
+ attr_reader handle: untyped
334
+ def get_bind_group_layout: (Integer) -> BindGroupLayout
335
+ end
336
+
337
+ class RenderPipeline
338
+ include NativeResource
339
+ attr_reader handle: untyped
340
+ def get_bind_group_layout: (Integer) -> BindGroupLayout
341
+ end
342
+
343
+ class CommandEncoder
344
+ include NativeResource
345
+ attr_reader handle: untyped
346
+ def begin_compute_pass: (**untyped) -> ComputePass
347
+ | [A] (**untyped) { (ComputePass) -> A } -> A
348
+ def begin_render_pass: (**untyped) -> RenderPass
349
+ | [A] (**untyped) { (RenderPass) -> A } -> A
350
+ def copy_buffer_to_buffer: (**untyped) -> void
351
+ def copy_buffer_to_texture: (**untyped) -> void
352
+ def copy_texture_to_buffer: (**untyped) -> void
353
+ def copy_texture_to_texture: (**untyped) -> void
354
+ def resolve_query_set: (**untyped) -> void
355
+ def clear_buffer: (Buffer, ?offset: Integer, ?size: Integer?) -> void
356
+ def write_timestamp: (QuerySet, Integer) -> void
357
+ def push_debug_group: (String) -> void
358
+ def pop_debug_group: () -> void
359
+ def insert_debug_marker: (String) -> void
360
+ def finish: (?label: String?) -> CommandBuffer
361
+ end
362
+
363
+ class CommandBuffer
364
+ include NativeResource
365
+ attr_reader handle: untyped
366
+ def submitted?: () -> bool
367
+ end
368
+
369
+ class ComputePass
370
+ include NativeResource
371
+ attr_reader handle: untyped
372
+ def set_pipeline: (ComputePipeline) -> void
373
+ def set_bind_group: (Integer, BindGroup, ?dynamic_offsets: Array[Integer]) -> void
374
+ def dispatch_workgroups: (Integer, ?Integer, ?Integer) -> void
375
+ def dispatch_workgroups_indirect: (Buffer, ?offset: Integer) -> void
376
+ def push_debug_group: (String) -> void
377
+ def pop_debug_group: () -> void
378
+ def insert_debug_marker: (String) -> void
379
+ def end_pass: () -> void
380
+ def end: () -> void
381
+ def ended?: () -> bool
382
+ end
383
+
384
+ class RenderPass
385
+ include NativeResource
386
+ attr_reader handle: untyped
387
+ def set_pipeline: (RenderPipeline) -> void
388
+ def set_bind_group: (Integer, BindGroup, ?dynamic_offsets: Array[Integer]) -> void
389
+ def set_vertex_buffer: (Integer, Buffer, ?offset: Integer, ?size: Integer?) -> void
390
+ def set_index_buffer: (Buffer, enum_value, ?offset: Integer, ?size: Integer?) -> void
391
+ def draw: (Integer, ?instance_count: Integer, ?first_vertex: Integer, ?first_instance: Integer) -> void
392
+ def draw_indexed: (Integer, **untyped) -> void
393
+ def set_viewport: (Numeric, Numeric, Numeric, Numeric, ?min_depth: Numeric, ?max_depth: Numeric) -> void
394
+ def set_scissor_rect: (Integer, Integer, Integer, Integer) -> void
395
+ def set_blend_constant: (?r: Numeric, ?g: Numeric, ?b: Numeric, ?a: Numeric) -> void
396
+ def set_stencil_reference: (Integer) -> void
397
+ def draw_indirect: (Buffer, ?offset: Integer) -> void
398
+ def draw_indexed_indirect: (Buffer, ?offset: Integer) -> void
399
+ def execute_bundles: (Array[RenderBundle]) -> void
400
+ def begin_occlusion_query: (Integer) -> void
401
+ def end_occlusion_query: () -> void
402
+ def push_debug_group: (String) -> void
403
+ def pop_debug_group: () -> void
404
+ def insert_debug_marker: (String) -> void
405
+ def end_pass: () -> void
406
+ def end: () -> void
407
+ def ended?: () -> bool
408
+ end
409
+
410
+ class RenderBundleEncoder
411
+ include NativeResource
412
+ attr_reader handle: untyped
413
+ def set_pipeline: (RenderPipeline) -> void
414
+ def set_bind_group: (Integer, BindGroup, ?dynamic_offsets: Array[Integer]?) -> void
415
+ def set_vertex_buffer: (Integer, Buffer, ?offset: Integer, ?size: Integer?) -> void
416
+ def set_index_buffer: (Buffer, ?format: enum_value, ?offset: Integer, ?size: Integer?) -> void
417
+ def draw: (Integer, ?instance_count: Integer, ?first_vertex: Integer, ?first_instance: Integer) -> void
418
+ def draw_indexed: (Integer, ?instance_count: Integer, ?first_index: Integer, ?base_vertex: Integer, ?first_instance: Integer) -> void
419
+ def draw_indirect: (Buffer, ?offset: Integer) -> void
420
+ def draw_indexed_indirect: (Buffer, ?offset: Integer) -> void
421
+ def push_debug_group: (String) -> void
422
+ def pop_debug_group: () -> void
423
+ def insert_debug_marker: (String) -> void
424
+ def finish: (?label: String?) -> RenderBundle
425
+ end
426
+
427
+ class RenderBundle
428
+ include NativeResource
429
+ attr_reader handle: untyped
430
+ end
431
+
432
+ class Surface
433
+ include NativeResource
434
+ attr_reader handle: untyped
435
+ def self.from_metal_layer: (Instance, untyped) -> Surface
436
+ def self.from_windows_hwnd: (Instance, untyped, untyped) -> Surface
437
+ def self.from_xlib_window: (Instance, untyped, Integer) -> Surface
438
+ def self.from_wayland_surface: (Instance, untyped, untyped) -> Surface
439
+ def configure: (**untyped) -> void
440
+ def unconfigure: () -> void
441
+ def current_texture: () -> Texture
442
+ def get_current_texture: () -> Texture
443
+ def present: () -> void
444
+ def get_configuration: () -> configuration?
445
+ def get_preferred_format: (Adapter) -> Symbol
446
+ def capabilities: (Adapter) -> Hash[Symbol, untyped]
447
+ end
448
+
449
+ class CanvasContext
450
+ include NativeResource
451
+ attr_reader physical_size: [Integer, Integer]
452
+ def set_physical_size: (Integer, Integer) -> [Integer, Integer]
453
+ def get_preferred_format: (Adapter) -> Symbol
454
+ def get_configuration: () -> configuration?
455
+ def configure: (**untyped) -> void
456
+ def unconfigure: () -> void
457
+ def get_current_texture: () -> Texture
458
+ def present: () -> void
459
+ end
460
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wgpu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
@@ -37,20 +37,6 @@ dependencies:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '2.3'
40
- - !ruby/object:Gem::Dependency
41
- name: sdl3
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: 1.0.0
47
- type: :runtime
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 1.0.0
54
40
  description: Ruby bindings for the WebGPU API, providing GPU compute and graphics
55
41
  capabilities through the wgpu-native library.
56
42
  email:
@@ -60,9 +46,27 @@ extensions:
60
46
  - ext/wgpu/extconf.rb
61
47
  extra_rdoc_files: []
62
48
  files:
49
+ - CHANGELOG.md
63
50
  - LICENSE-APACHE
64
51
  - LICENSE-MIT
65
52
  - README.md
53
+ - docs/README.md
54
+ - docs/api_coverage.md
55
+ - docs/async.md
56
+ - docs/bind_groups.md
57
+ - docs/buffer_data.md
58
+ - docs/command_encoding.md
59
+ - docs/errors.md
60
+ - docs/getting_started_compute.md
61
+ - docs/getting_started_rendering.md
62
+ - docs/installation.md
63
+ - docs/pipeline_descriptors.md
64
+ - docs/releasing.md
65
+ - docs/resource_lifetime.md
66
+ - docs/shaders.md
67
+ - docs/texture_readback.md
68
+ - docs/troubleshooting.md
69
+ - docs/upgrading_wgpu_native.md
66
70
  - ext/wgpu/Makefile
67
71
  - ext/wgpu/extconf.rb
68
72
  - lib/wgpu.rb
@@ -80,13 +84,22 @@ files:
80
84
  - lib/wgpu/core/instance.rb
81
85
  - lib/wgpu/core/queue.rb
82
86
  - lib/wgpu/core/surface.rb
87
+ - lib/wgpu/data_types.rb
88
+ - lib/wgpu/descriptor_helpers.rb
83
89
  - lib/wgpu/error.rb
90
+ - lib/wgpu/logging.rb
91
+ - lib/wgpu/native/abi_verifier.rb
84
92
  - lib/wgpu/native/callbacks.rb
85
93
  - lib/wgpu/native/capabilities.rb
94
+ - lib/wgpu/native/distribution.rb
95
+ - lib/wgpu/native/enum_helper.rb
86
96
  - lib/wgpu/native/enums.rb
97
+ - lib/wgpu/native/fixtures/webgpu-v27.0.4.0-enums.h
87
98
  - lib/wgpu/native/functions.rb
99
+ - lib/wgpu/native/installer.rb
88
100
  - lib/wgpu/native/loader.rb
89
101
  - lib/wgpu/native/structs.rb
102
+ - lib/wgpu/native_resource.rb
90
103
  - lib/wgpu/pipeline/bind_group.rb
91
104
  - lib/wgpu/pipeline/bind_group_layout.rb
92
105
  - lib/wgpu/pipeline/compute_pipeline.rb
@@ -98,15 +111,19 @@ files:
98
111
  - lib/wgpu/resources/sampler.rb
99
112
  - lib/wgpu/resources/texture.rb
100
113
  - lib/wgpu/resources/texture_view.rb
114
+ - lib/wgpu/texture_format.rb
101
115
  - lib/wgpu/version.rb
102
116
  - lib/wgpu/window.rb
117
+ - sig/wgpu.rbs
103
118
  homepage: https://github.com/ydah/wgpu-ruby
104
119
  licenses:
105
120
  - MIT
106
121
  - Apache-2.0
107
122
  metadata:
108
123
  homepage_uri: https://github.com/ydah/wgpu-ruby
109
- source_code_uri: https://github.com/ydah/wgpu-ruby
124
+ source_code_uri: https://github.com/ydah/wgpu-ruby/tree/main
125
+ changelog_uri: https://github.com/ydah/wgpu-ruby/blob/main/CHANGELOG.md
126
+ documentation_uri: https://www.rubydoc.info/gems/wgpu
110
127
  rdoc_options: []
111
128
  require_paths:
112
129
  - lib