Module: WGPU

Defined in:
lib/wgpu.rb,
lib/wgpu/error.rb,
lib/wgpu/window.rb,
lib/wgpu/logging.rb,
lib/wgpu/version.rb,
lib/wgpu/async_task.rb,
lib/wgpu/core/queue.rb,
lib/wgpu/data_types.rb,
lib/wgpu/core/device.rb,
lib/wgpu/core/adapter.rb,
lib/wgpu/core/surface.rb,
lib/wgpu/native/enums.rb,
lib/wgpu/core/instance.rb,
lib/wgpu/native/loader.rb,
lib/wgpu/native/structs.rb,
lib/wgpu/texture_format.rb,
lib/wgpu/native_resource.rb,
lib/wgpu/native/callbacks.rb,
lib/wgpu/native/functions.rb,
lib/wgpu/native/installer.rb,
lib/wgpu/resources/buffer.rb,
lib/wgpu/core/async_waiter.rb,
lib/wgpu/resources/sampler.rb,
lib/wgpu/resources/texture.rb,
lib/wgpu/descriptor_helpers.rb,
lib/wgpu/native/enum_helper.rb,
lib/wgpu/core/canvas_context.rb,
lib/wgpu/native/abi_verifier.rb,
lib/wgpu/native/capabilities.rb,
lib/wgpu/native/distribution.rb,
lib/wgpu/pipeline/bind_group.rb,
lib/wgpu/resources/query_set.rb,
lib/wgpu/commands/render_pass.rb,
lib/wgpu/commands/compute_pass.rb,
lib/wgpu/commands/render_bundle.rb,
lib/wgpu/pipeline/shader_module.rb,
lib/wgpu/resources/texture_view.rb,
lib/wgpu/commands/command_buffer.rb,
lib/wgpu/commands/command_encoder.rb,
lib/wgpu/pipeline/pipeline_layout.rb,
lib/wgpu/pipeline/render_pipeline.rb,
lib/wgpu/pipeline/compute_pipeline.rb,
lib/wgpu/pipeline/bind_group_layout.rb,
lib/wgpu/commands/render_bundle_encoder.rb,
sig/wgpu.rbs

Defined Under Namespace

Modules: AsyncWaiter, CallbackKeepalive, DataTypes, DescriptorHelpers, LeakTracker, Native, NativeResource, TextureFormat, Window Classes: Adapter, AdapterError, AsyncTask, BindGroup, BindGroupLayout, Buffer, BufferError, BufferMappedRange, CanvasContext, CommandBuffer, CommandEncoder, CommandError, CompilationMessage, ComputePass, ComputePipeline, Device, DeviceError, DeviceLostError, Error, GPUError, InitializationError, Instance, InternalError, OutOfMemoryError, PipelineError, PipelineLayout, QuerySet, Queue, RenderBundle, RenderBundleEncoder, RenderBundleError, RenderPass, RenderPipeline, ResourceError, Sampler, ShaderError, ShaderModule, Surface, SurfaceAcquisitionError, SurfaceError, Texture, TextureError, TextureView, TimeoutError, ValidationError

Constant Summary collapse

VERSION =

Returns:

  • (String)
"1.2.1"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.debug_leaksBoolean

Returns the value of attribute debug_leaks.

Returns:

  • (Boolean)


5
6
7
# File 'lib/wgpu/native_resource.rb', line 5

def debug_leaks
  @debug_leaks
end

.log_levelSymbol

Returns the configured wgpu-native log level.

Returns:

  • (Symbol)


6
7
8
# File 'lib/wgpu/logging.rb', line 6

def log_level
  @log_level
end

Class Method Details

.on_log {|level, message, arg0, arg1| ... } ⇒ WGPU

Registers a process-wide wgpu-native log handler.

The native callback is retained by the WGPU module for the rest of the process, or until this method replaces it.

Yields:

Yield Parameters:

  • level (Symbol)

    native log severity

  • message (String)

    UTF-8 log message

  • arg0 (Symbol)
  • arg1 (String)

Yield Returns:

  • (void)

Returns:

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/wgpu/logging.rb', line 28

def on_log(&handler)
  raise ArgumentError, "block is required" unless handler

  ensure_native_logging!
  @log_handler = handler
  @native_log_callback = FFI::Function.new(
    :void,
    [:uint32, Native::StringView.by_value, :pointer]
  ) do |level, message, _userdata|
    text =
      if message[:data] && !message[:data].null? && message[:length].positive?
        message[:data].read_string(message[:length])
      else
        ""
      end
    @log_handler.call(Native::LogLevel[level] || level, text)
  rescue StandardError => e
    warn "WGPU log handler failed: #{e.class}: #{e.message}"
  end
  Native.wgpuSetLogCallback(@native_log_callback, nil)
  self
end