raphamorim / rio

A hardware-accelerated GPU terminal emulator focusing to run in desktops and browsers.
https://raphamorim.io/rio
MIT License
3.43k stars 108 forks source link

Running Rio forces Windows to switch into HDR mode #205

Closed farcaller closed 1 year ago

farcaller commented 1 year ago

Somewhat hilarious, but when I start rio, windows automatically forces me into HDR mode with no way to turn it off. I know rio can render a whole lot of colors but maybe going full on HDR is a bit excessive (and also burns my eyes 😞).

This is rio 0.0.18. I'm honestly not sure where to even start debugging this, I don't see anything relevant in wgpu.

raphamorim commented 1 year ago

Wow 😯 Very interesting, if you change the power mode to low what happens?

# Performance
#
# Set WGPU rendering performance
# High: Adapter that has the highest performance. This is often a discrete GPU.
# Low: Adapter that uses the least possible power. This is often an integrated GPU.
#
performance = "High"
farcaller commented 1 year ago

Setting it to low makes no difference.

raphamorim commented 1 year ago

i see, will try to reproduce locally, what's your system report (Windows Version and graphic drivers)?

farcaller commented 1 year ago

that's on windows 22H2 with nvidia studio drivers 536.99 (but I tried on game ready 537.13 and there's no difference).

farcaller commented 1 year ago

The display is set to not have HDR enabled, FWIW image

(I'm still confused as to which part of windows graphics API allows to override that switch)

dvtkrlbs commented 1 year ago

I am having the same issue. Even if the HDR setting is set to off as soon as I open Rio it configures the monitor to HDR and only way to disable it to turn off Rio.

raphamorim commented 1 year ago

@dvtkrlbs are you also using windows?

dvtkrlbs commented 1 year ago

Yeah a macbook and a windows desktop @raphamorim . Can do additional debugging if you have some ideas. Will look at the wgpu crate to see if there is anything about HDR mentioned there. There is also extensive logs for wgpu so there might be something useful there. Will post a full debug log in a moment.

raphamorim commented 1 year ago

Cool! that would be awesome @dvtkrlbs . I am still stuck in some work with font ligature and split panel support.

I would suggest start by bumping wgpu to 0.17.0 and giving it a try

dvtkrlbs commented 1 year ago

here is a full debug log for the rio 0.0.18 will do the version bump now

Logs ```rs [ERROR] rio::utils::settings couldn't create config file C:\Users\dvtkrlbs/AppData/Local/rio/config.toml: The system cannot find the path specified. (os error 3) [WARN] rio::utils::watch unable to watch config directory Error { kind: Generic("Input watch path is neither a file nor a directory."), paths: [] } [INFO] wgpu_hal::vulkan::instance Instance version: 0x4030f1 [INFO] wgpu_hal::vulkan::instance Enabling device properties2 [DEBUG] wgpu_hal::gles::egl Client extensions: [ "EGL_EXT_client_extensions", "EGL_EXT_platform_base", "EGL_EXT_platform_device", "EGL_ANGLE_platform_angle", "EGL_ANGLE_platform_angle_d3d", "EGL_ANGLE_device_creation", "EGL_ANGLE_device_creation_d3d11", "EGL_ANGLE_experimental_present_path", "EGL_KHR_client_get_all_proc_addresses", ] [INFO] wgpu_hal::gles::egl Loading X11 library to get the current display [INFO] wgpu_hal::gles::egl EGL_MESA_platform_surfaceless not available. Using default platform [INFO] wgpu_hal::gles::egl Display vendor "Google Inc. (adapter LUID: 0000000000019099)", version (1, 4) [DEBUG] wgpu_hal::gles::egl Display extensions: [ "EGL_EXT_create_context_robustness", "EGL_ANGLE_d3d_share_handle_client_buffer", "EGL_ANGLE_d3d_texture_client_buffer", "EGL_ANGLE_surface_d3d_texture_2d_share_handle", "EGL_ANGLE_query_surface_pointer", "EGL_ANGLE_window_fixed_size", "EGL_ANGLE_keyed_mutex", "EGL_ANGLE_surface_orientation", "EGL_ANGLE_direct_composition", "EGL_NV_post_sub_buffer", "EGL_KHR_create_context", "EGL_EXT_device_query", "EGL_KHR_image", "EGL_KHR_image_base", "EGL_KHR_gl_texture_2D_image", "EGL_KHR_gl_texture_cubemap_image", "EGL_KHR_gl_renderbuffer_image", "EGL_KHR_get_all_proc_addresses", "EGL_KHR_stream", "EGL_KHR_stream_consumer_gltexture", "EGL_NV_stream_consumer_gltexture_yuv", "EGL_ANGLE_flexible_surface_compatibility", "EGL_ANGLE_stream_producer_d3d_texture_nv12", "EGL_ANGLE_create_context_webgl_compatibility", "EGL_CHROMIUM_create_context_bind_generates_resource", "EGL_CHROMIUM_sync_control", "EGL_EXT_pixel_format_float", "EGL_KHR_surfaceless_context", "EGL_ANGLE_display_texture_share_group", "EGL_ANGLE_create_context_client_arrays", "EGL_ANGLE_program_cache_control", "EGL_ANGLE_robust_resource_initialization", ] [WARN] wgpu_hal::gles::egl EGL surface: -srgb [INFO] wgpu_hal::gles::egl Trying native-render [WARN] wgpu_hal::gles::egl No config found! [INFO] wgpu_hal::gles::egl Trying presentation [WARN] wgpu_hal::gles::egl EGL says it can present to the window but not natively [INFO] wgpu_hal::gles::egl EGL context: +robust access EXT [INFO] wgpu_hal::gles::egl EGL context: +surfaceless [INFO] sugarloaf::context selected instance: Instance { context: Context { type: "Native" } } [INFO] sugarloaf::context Available adapters: [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] wgpu_core::instance Adapter Dx12 AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] wgpu_core::instance Adapter Dx12 AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] wgpu_core::instance Adapter Dx12 AdapterInfo { name: "Microsoft Basic Render Driver", vendor: 5140, device: 140, device_type: Cpu, driver: "", driver_info: "", backend: Dx12 } [INFO] wgpu_hal::gles::adapter Vendor: Google Inc. [INFO] wgpu_hal::gles::adapter Renderer: ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0) [INFO] wgpu_hal::gles::adapter Version: OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7) [DEBUG] wgpu_hal::gles::adapter Extensions: { "GL_EXT_sRGB", "GL_EXT_discard_framebuffer", "GL_OES_compressed_ETC1_RGB8_texture", "GL_OES_depth32", "GL_EXT_disjoint_timer_query", "GL_EXT_texture_format_BGRA8888", "GL_EXT_texture_rg", "GL_KHR_robust_buffer_access_behavior", "GL_ANGLE_lossy_etc_decode", "GL_CHROMIUM_sync_query", "GL_OES_get_program_binary", "GL_ANGLE_request_extension", "GL_OES_standard_derivatives", "GL_EXT_unpack_subimage", "GL_EXT_texture_compression_s3tc_srgb", "GL_EXT_read_format_bgra", "GL_EXT_map_buffer_range", "GL_ANGLE_translated_shader_source", "GL_EXT_texture_norm16", "GL_OES_packed_depth_stencil", "GL_OES_texture_half_float_linear", "GL_ANGLE_multiview", "GL_OES_element_index_uint", "GL_CHROMIUM_bind_uniform_location", "GL_CHROMIUM_color_buffer_float_rgba", "GL_EXT_frag_depth", "GL_EXT_blend_minmax", "GL_EXT_debug_marker", "GL_OES_EGL_image_external", "GL_ANGLE_robust_client_memory", "GL_NV_pixel_buffer_object", "GL_OES_texture_npot", "GL_NV_EGL_stream_consumer_external", "GL_EXT_shader_texture_lod", "GL_KHR_debug", "GL_EXT_draw_buffers", "GL_OES_surfaceless_context", "GL_ANGLE_depth_texture", "GL_CHROMIUM_copy_texture", "GL_EXT_robustness", "GL_ANGLE_instanced_arrays", "GL_EXT_color_buffer_half_float", "GL_OES_mapbuffer", "GL_CHROMIUM_copy_compressed_texture", "GL_ANGLE_pack_reverse_row_order", "GL_ANGLE_texture_compression_dxt5", "GL_OES_rgb8_rgba8", "GL_CHROMIUM_color_buffer_float_rgb", "GL_OES_texture_float", "GL_ANGLE_client_arrays", "GL_EXT_texture_storage", "GL_OES_texture_half_float", "GL_NV_fence", "GL_ANGLE_framebuffer_blit", "GL_NV_pack_subimage", "GL_OES_EGL_image_external_essl3", "GL_EXT_color_buffer_float", "GL_ANGLE_framebuffer_multisample", "GL_ANGLE_texture_usage", "GL_CHROMIUM_bind_generates_resource", "GL_OES_EGL_image", "GL_EXT_occlusion_query_boolean", "GL_EXT_texture_compression_dxt1", "GL_OES_texture_float_linear", "GL_EXT_texture_filter_anisotropic", "GL_ANGLE_program_cache_control", "GL_ANGLE_texture_compression_dxt3", "GL_OES_vertex_array_object", } [INFO] wgpu_hal::gles::adapter SL version: OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7) [INFO] wgpu_core::instance Adapter Gl AdapterInfo { name: "ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0)", vendor: 0, device: 0, device_type: Other, driver: "", driver_info: "", backend: Gl } [INFO] sugarloaf::context AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] sugarloaf::context AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] sugarloaf::context AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] sugarloaf::context AdapterInfo { name: "Microsoft Basic Render Driver", vendor: 5140, device: 140, device_type: Cpu, driver: "", driver_info: "", backend: Dx12 } [INFO] sugarloaf::context AdapterInfo { name: "ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0)", vendor: 0, device: 0, device_type: Other, driver: "", driver_info: "", backend: Gl } [INFO] sugarloaf::context initializing the surface [INFO] wgpu_hal::gles::adapter Vendor: Google Inc. [INFO] wgpu_hal::gles::adapter Renderer: ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0) [INFO] wgpu_hal::gles::adapter Version: OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7) [DEBUG] wgpu_hal::gles::adapter Extensions: { "GL_NV_pixel_buffer_object", "GL_OES_rgb8_rgba8", "GL_OES_surfaceless_context", "GL_ANGLE_request_extension", "GL_EXT_texture_format_BGRA8888", "GL_ANGLE_client_arrays", "GL_CHROMIUM_color_buffer_float_rgba", "GL_OES_EGL_image", "GL_OES_packed_depth_stencil", "GL_CHROMIUM_color_buffer_float_rgb", "GL_OES_texture_float", "GL_CHROMIUM_sync_query", "GL_EXT_occlusion_query_boolean", "GL_ANGLE_framebuffer_multisample", "GL_ANGLE_lossy_etc_decode", "GL_EXT_texture_filter_anisotropic", "GL_ANGLE_pack_reverse_row_order", "GL_ANGLE_depth_texture", "GL_EXT_map_buffer_range", "GL_ANGLE_multiview", "GL_EXT_texture_compression_dxt1", "GL_CHROMIUM_copy_compressed_texture", "GL_EXT_texture_storage", "GL_OES_get_program_binary", "GL_EXT_color_buffer_half_float", "GL_NV_pack_subimage", "GL_EXT_unpack_subimage", "GL_KHR_debug", "GL_OES_vertex_array_object", "GL_EXT_read_format_bgra", "GL_CHROMIUM_bind_uniform_location", "GL_EXT_debug_marker", "GL_CHROMIUM_bind_generates_resource", "GL_EXT_frag_depth", "GL_EXT_texture_rg", "GL_KHR_robust_buffer_access_behavior", "GL_EXT_robustness", "GL_OES_texture_float_linear", "GL_EXT_discard_framebuffer", "GL_EXT_disjoint_timer_query", "GL_EXT_texture_compression_s3tc_srgb", "GL_ANGLE_program_cache_control", "GL_OES_mapbuffer", "GL_ANGLE_instanced_arrays", "GL_ANGLE_texture_usage", "GL_OES_element_index_uint", "GL_OES_texture_half_float_linear", "GL_OES_standard_derivatives", "GL_EXT_texture_norm16", "GL_OES_EGL_image_external_essl3", "GL_EXT_draw_buffers", "GL_ANGLE_texture_compression_dxt5", "GL_OES_texture_npot", "GL_EXT_blend_minmax", "GL_OES_depth32", "GL_ANGLE_robust_client_memory", "GL_CHROMIUM_copy_texture", "GL_NV_EGL_stream_consumer_external", "GL_OES_EGL_image_external", "GL_EXT_color_buffer_float", "GL_NV_fence", "GL_OES_texture_half_float", "GL_EXT_sRGB", "GL_ANGLE_framebuffer_blit", "GL_ANGLE_translated_shader_source", "GL_EXT_shader_texture_lod", "GL_OES_compressed_ETC1_RGB8_texture", "GL_ANGLE_texture_compression_dxt3", } [INFO] wgpu_hal::gles::adapter SL version: OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7) [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context Selected adapter: AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context Sugarloaf selected format: Rgba16Float from [Bgra8UnormSrgb, Bgra8Unorm, Rgba16Float] [DEBUG] wgpu_hal::vulkan::adapter Supported extensions: ["VK_KHR_swapchain", "VK_KHR_swapchain_mutable_format", "VK_EXT_robustness2"] [INFO] wgpu_core::device configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device Created buffer Valid((0, 1, Vulkan)) with BufferDescriptor { label: None, size: 64, usage: BufferUsages(COPY_DST | UNIFORM), mapped_at_creation: true } [DEBUG] wgpu_core::device Buffer (0, 1, Vulkan) map state -> Idle [INFO] wgpu_core::device Created texture Valid((0, 1, Vulkan)) with TextureDescriptor { label: Some("text::Cache"), size: Extent3d { width: 256, height: 256, depth_or_array_layers: 1 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: R8Unorm, usage: TextureUsages(COPY_DST | TEXTURE_BINDING), view_formats: [] } [DEBUG] wgpu_core::device Create view for texture (0, 1, Vulkan) filters usages to TextureUses(RESOURCE) [INFO] wgpu_core::device Created buffer Valid((1, 1, Vulkan)) with BufferDescriptor { label: Some("text::Cache upload buffer"), size: 25600, usage: BufferUsages(COPY_SRC | COPY_DST), mapped_at_creation: false } [DEBUG] wgpu_core::device Bind group Valid((0, 1, Vulkan)) [INFO] wgpu_core::device Created buffer Valid((2, 1, Vulkan)) with BufferDescriptor { label: Some("text::Pipeline instances"), size: 2600000, usage: BufferUsages(COPY_DST | VERTEX), mapped_at_creation: false } [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([9]) [DEBUG] naga::front Resolving [2] = LocalVariable([1]) : Value(Pointer { base: [10], space: Function }) [DEBUG] naga::front Resolving [3] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [4] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [5] = Compose { ty: [7], components: [[3], [4]] } : Handle([7]) [DEBUG] naga::front Resolving [6] = LocalVariable([2]) : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [7] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [8] = AccessIndex { base: [7], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [9] = LocalVariable([3]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [10] = AccessIndex { base: [1], index: 2 } : Handle([7]) [DEBUG] naga::front Resolving [11] = AccessIndex { base: [10], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [12] = LocalVariable([4]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [13] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [14] = AccessIndex { base: [13], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [15] = LocalVariable([5]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [16] = AccessIndex { base: [1], index: 2 } : Handle([7]) [DEBUG] naga::front Resolving [17] = AccessIndex { base: [16], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [18] = LocalVariable([6]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [19] = AccessIndex { base: [1], index: 0 } : Handle([5]) [DEBUG] naga::front Resolving [20] = As { expr: [19], kind: Sint, convert: Some(4) } : Value(Scalar { kind: Sint, width: 4 }) [DEBUG] naga::front Resolving [21] = Load { pointer: [9] } : Handle([11]) [DEBUG] naga::front Resolving [22] = Load { pointer: [15] } : Handle([11]) [DEBUG] naga::front Resolving [23] = Compose { ty: [7], components: [[21], [22]] } : Handle([7]) [DEBUG] naga::front Resolving [24] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [25] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [26] = Load { pointer: [12] } : Handle([11]) [DEBUG] naga::front Resolving [27] = Load { pointer: [15] } : Handle([11]) [DEBUG] naga::front Resolving [28] = Compose { ty: [7], components: [[26], [27]] } : Handle([7]) [DEBUG] naga::front Resolving [29] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [30] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [31] = AccessIndex { base: [30], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [32] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [33] = AccessIndex { base: [32], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [34] = Compose { ty: [7], components: [[31], [33]] } : Handle([7]) [DEBUG] naga::front Resolving [35] = Load { pointer: [9] } : Handle([11]) [DEBUG] naga::front Resolving [36] = Load { pointer: [18] } : Handle([11]) [DEBUG] naga::front Resolving [37] = Compose { ty: [7], components: [[35], [36]] } : Handle([7]) [DEBUG] naga::front Resolving [38] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [39] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [40] = AccessIndex { base: [39], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [41] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [42] = AccessIndex { base: [41], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [43] = Compose { ty: [7], components: [[40], [42]] } : Handle([7]) [DEBUG] naga::front Resolving [44] = Load { pointer: [12] } : Handle([11]) [DEBUG] naga::front Resolving [45] = Load { pointer: [18] } : Handle([11]) [DEBUG] naga::front Resolving [46] = Compose { ty: [7], components: [[44], [45]] } : Handle([7]) [DEBUG] naga::front Resolving [47] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [48] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [49] = AccessIndex { base: [2], index: 2 } : Value(Pointer { base: [8], space: Function }) [DEBUG] naga::front Resolving [50] = AccessIndex { base: [1], index: 5 } : Handle([8]) [DEBUG] naga::front Resolving [51] = AccessIndex { base: [2], index: 0 } : Value(Pointer { base: [8], space: Function }) [DEBUG] naga::front Resolving [52] = GlobalVariable([1]) : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [53] = AccessIndex { base: [52], index: 0 } : Value(Pointer { base: [1], space: Uniform }) [DEBUG] naga::front Resolving [54] = Load { pointer: [53] } : Handle([1]) [DEBUG] naga::front Resolving [55] = Load { pointer: [6] } : Handle([7]) [DEBUG] naga::front Resolving [56] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([10]) [DEBUG] naga::front Resolving [2] = GlobalVariable([3]) : Handle([4]) [DEBUG] naga::front Resolving [3] = GlobalVariable([2]) : Handle([3]) [DEBUG] naga::front Resolving [4] = AccessIndex { base: [1], index: 1 } : Handle([7]) [DEBUG] naga::front Resolving [5] = ImageSample { image: [2], sampler: [3], gather: None, coordinate: [4], array_index: None, offset: None, level: Auto, depth_ref: None } : Value(Vector { size: Quad, kind: Float, width: 4 }) [DEBUG] naga::front Resolving [6] = AccessIndex { base: [5], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [7] = LocalVariable([1]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [8] = Load { pointer: [7] } : Handle([11]) [DEBUG] naga::front Resolving [9] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [10] = Binary { op: LessEqual, left: [8], right: [9] } : Value(Scalar { kind: Bool, width: 1 }) [DEBUG] naga::front Resolving [11] = AccessIndex { base: [1], index: 2 } : Handle([8]) [DEBUG] naga::front Resolving [12] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [13] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [14] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [15] = Load { pointer: [7] } : Handle([11]) [DEBUG] naga::valid::interface var GlobalVariable { name: Some("globals"), space: Uniform, binding: Some(ResourceBinding { group: 0, binding: 0 }), ty: [2], init: None } [DEBUG] naga::valid::interface var GlobalVariable { name: Some("font_sampler"), space: Handle, binding: Some(ResourceBinding { group: 0, binding: 1 }), ty: [3], init: None } [DEBUG] naga::valid::interface var GlobalVariable { name: Some("font_tex"), space: Handle, binding: Some(ResourceBinding { group: 0, binding: 2 }), ty: [4], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("out"), ty: [10], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("pos"), ty: [7], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("left"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("right"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("top"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("bottom"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("alpha"), ty: [11], init: None } [INFO] wgpu_core::device Created render pipeline Valid((0, 1, Vulkan)) with RenderPipelineDescriptor { label: None, layout: Some((0, 1, Vulkan)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 1, Vulkan), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 52, step_mode: Instance, attributes: [VertexAttribute { format: Float32x3, offset: 0, shader_location: 0 }, VertexAttribute { format: Float32x2, offset: 12, shader_location: 1 }, VertexAttribute { format: Float32x2, offset: 20, shader_location: 2 }, VertexAttribute { format: Float32x2, offset: 28, shader_location: 3 }, VertexAttribute { format: Float32x4, offset: 36, shader_location: 4 }] }] }, primitive: PrimitiveState { topology: TriangleStrip, strip_index_format: Some(Uint16), front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 1, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 1, Vulkan), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba16Float, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: ColorWrites(RED | GREEN | BLUE | ALPHA) })] }), multiview: None } [DEBUG] wgpu_core::device shader module (0, 1, Vulkan) is dropped [DEBUG] wgpu_core::device pipeline layout (0, 1, Vulkan) is dropped [INFO] wgpu_core::device Created buffer Valid((3, 1, Vulkan)) with BufferDescriptor { label: None, size: 80, usage: BufferUsages(COPY_DST | UNIFORM), mapped_at_creation: false } [INFO] wgpu_core::device Created buffer Valid((4, 1, Vulkan)) with BufferDescriptor { label: Some("Vertex Buffer"), size: 32, usage: BufferUsages(VERTEX), mapped_at_creation: true } [DEBUG] wgpu_core::device Buffer (4, 1, Vulkan) map state -> Idle [INFO] wgpu_core::device Created buffer Valid((5, 1, Vulkan)) with BufferDescriptor { label: Some("Index Buffer"), size: 12, usage: BufferUsages(INDEX), mapped_at_creation: true } [DEBUG] wgpu_core::device Buffer (5, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Bind group Valid((1, 1, Vulkan)) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([6]) [DEBUG] naga::front Resolving [2] = FunctionArgument(1) : Handle([6]) [DEBUG] naga::front Resolving [3] = FunctionArgument(2) : Handle([4]) [DEBUG] naga::front Resolving [4] = FunctionArgument(3) : Handle([6]) [DEBUG] naga::front Resolving [5] = LocalVariable([1]) : Value(Pointer { base: [5], space: Function }) [DEBUG] naga::front Resolving [6] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [7] = AccessIndex { base: [6], index: 1 } : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [8] = Load { pointer: [7] } : Handle([2]) [DEBUG] naga::front Resolving [9] = Binary { op: Multiply, left: [2], right: [8] } : Handle([6]) [DEBUG] naga::front Resolving [10] = LocalVariable([2]) : Value(Pointer { base: [6], space: Function }) [DEBUG] naga::front Resolving [11] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [12] = AccessIndex { base: [11], index: 1 } : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [13] = Load { pointer: [12] } : Handle([2]) [DEBUG] naga::front Resolving [14] = Binary { op: Multiply, left: [4], right: [13] } : Handle([6]) [DEBUG] naga::front Resolving [15] = LocalVariable([3]) : Value(Pointer { base: [6], space: Function }) [DEBUG] naga::front Resolving [16] = AccessIndex { base: [15], index: 0 } : Value(ValuePointer { size: None, kind: Float, width: 4, space: Function }) [DEBUG] naga::front Resolving [17] = Load { pointer: [16] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [18] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [19] = Binary { op: Add, left: [17], right: [18] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [20] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [21] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [22] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [23] = Compose { ty: [4], components: [[19], [20], [21], [22]] } : Handle([4]) [DEBUG] naga::front Resolving [24] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [25] = AccessIndex { base: [15], index: 1 } : Value(ValuePointer { size: None, kind: Float, width: 4, space: Function }) [DEBUG] naga::front Resolving [26] = Load { pointer: [25] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [27] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [28] = Binary { op: Add, left: [26], right: [27] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [29] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [30] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [31] = Compose { ty: [4], components: [[24], [28], [29], [30]] } : Handle([4]) [DEBUG] naga::front Resolving [32] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [33] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [34] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [35] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [36] = Compose { ty: [4], components: [[32], [33], [34], [35]] } : Handle([4]) [DEBUG] naga::front Resolving [37] = Load { pointer: [10] } : Handle([6]) [DEBUG] naga::front Resolving [38] = Constant([3]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [39] = Constant([3]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [40] = Compose { ty: [6], components: [[38], [39]] } : Handle([6]) [DEBUG] naga::front Resolving [41] = Binary { op: Subtract, left: [37], right: [40] } : Handle([6]) [DEBUG] naga::front Resolving [42] = Constant([2]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [43] = Constant([1]) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [44] = Compose { ty: [4], components: [[41], [42], [43]] } : Handle([4]) [DEBUG] naga::front Resolving [45] = Compose { ty: [1], components: [[23], [31], [36], [44]] } : Handle([1]) [DEBUG] naga::front Resolving [46] = LocalVariable([4]) : Value(Pointer { base: [1], space: Function }) [DEBUG] naga::front Resolving [47] = AccessIndex { base: [5], index: 1 } : Value(Pointer { base: [4], space: Function }) [DEBUG] naga::front Resolving [48] = AccessIndex { base: [5], index: 0 } : Value(Pointer { base: [4], space: Function }) [DEBUG] naga::front Resolving [49] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([5]) [DEBUG] naga::valid::interface var GlobalVariable { name: Some("globals"), space: Uniform, binding: Some(ResourceBinding { group: 0, binding: 0 }), ty: [3], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("output"), ty: [5], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("pos"), ty: [6], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("scale"), ty: [6], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("transform"), ty: [1], init: None } [INFO] wgpu_core::device Created render pipeline Valid((1, 1, Vulkan)) with RenderPipelineDescriptor { label: None, layout: Some((1, 1, Vulkan)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 2, Vulkan), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 8, step_mode: Vertex, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 0 }] }, VertexBufferLayout { array_stride: 32, step_mode: Instance, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 1 }, VertexAttribute { format: Float32x4, offset: 8, shader_location: 2 }, VertexAttribute { format: Float32x2, offset: 24, shader_location: 3 }] }] }, primitive: PrimitiveState { topology: TriangleStrip, strip_index_format: Some(Uint16), front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 1, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 2, Vulkan), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba16Float, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: ColorWrites(RED | GREEN | BLUE | ALPHA) })] }), multiview: None } [INFO] wgpu_core::device Created buffer Valid((6, 1, Vulkan)) with BufferDescriptor { label: Some("Instances Buffer"), size: 320000, usage: BufferUsages(COPY_DST | VERTEX), mapped_at_creation: false } [DEBUG] wgpu_core::device shader module (0, 2, Vulkan) is dropped [DEBUG] wgpu_core::device pipeline layout (1, 1, Vulkan) is dropped [DEBUG] wgpu_core::device bind group layout (1, 1, Vulkan) is dropped [INFO] teletypewriter::windows::conpty Using Windows API for pseudoconsole [DEBUG] wgpu_core::device Create view for texture (1, 1, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] sugarloaf::layout expected columns 80 [INFO] sugarloaf::layout recalculating columns due to font width, removing 14 columns [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 1, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device texture view (1, 1, Vulkan) is dropped [INFO] wgpu_core::device configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 2858, height: 1481, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [WARN] wgpu_core::device Requested size 2858x1481 is outside of the supported range: Extent3d { width: 900, height: 600, depth_or_array_layers: 1 }..=Extent3d { width: 900, height: 600, depth_or_array_layers: 1 } [INFO] wgpu_core::device Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] rio::crosswords Crosswords::resize dimensions unchanged [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [2] 'J' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'm' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [osc_dispatch] params=[[48], [99, 58, 92, 119, 105, 110, 100, 111, 119, 115, 92, 115, 121, 115, 116, 101, 109, 51, 50, 92, 119, 105, 110, 100, 111, 119, 115, 112, 111, 119, 101, 114, 115, 104, 101, 108, 108, 92, 118, 49, 46, 48, 92, 112, 111, 119, 101, 114, 115, 104, 101, 108, 108, 46, 101, 120, 101]] bell_terminated=true [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [DEBUG] wgpu_core::device Create view for texture (1, 2, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device Created buffer Valid((7, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 2048, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device Buffer (7, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((1, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 2, Vulkan)) from the device tracker [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [4;1] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [7;1] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device Buffer (7, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device texture view (2, 1, Vulkan) is dropped [DEBUG] wgpu_core::device Create view for texture (1, 3, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device Created buffer Valid((8, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 5824, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((9, 1, Vulkan)) with BufferDescriptor { label: Some("text::Cache upload buffer"), size: 28672, usage: BufferUsages(COPY_SRC | COPY_DST), mapped_at_creation: false } [DEBUG] wgpu_core::device buffer (1, 1, Vulkan) is dropped [INFO] wgpu_core::device Created buffer Valid((10, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 28672, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((11, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 7696, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device Buffer (8, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (10, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (11, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((2, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((1, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((7, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 3, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device Buffer (8, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (10, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (11, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device texture view (1, 2, Vulkan) is dropped [DEBUG] wgpu_core::device Create view for texture (1, 4, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device Created buffer Valid((1, 2, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 6528, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((12, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 5888, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((13, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 5888, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((14, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 5120, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((15, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 5120, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((16, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 5120, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((17, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 4864, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((18, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 4864, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((19, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 4864, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((20, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 4864, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((21, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 3840, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((22, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 3840, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((23, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 3840, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((24, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 3840, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((25, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 3840, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device Created buffer Valid((26, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 8736, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device Buffer (1, 2, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (12, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (13, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (14, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (15, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (16, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (17, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (18, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (19, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (20, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (21, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (22, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (23, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (24, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (25, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device Buffer (26, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((1, 2, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((8, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((10, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((11, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 4, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device Buffer (1, 2, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (12, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (13, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (14, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (15, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (16, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (17, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (18, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (19, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (20, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (21, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (22, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (23, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (24, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (25, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device Buffer (26, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device texture view (2, 2, Vulkan) is dropped ```
dvtkrlbs commented 1 year ago

still the same on wgpu 0.17.0 here is the logs for that it seems to compiling and initializing fine

Logs ```rs warning: `rio-terminal` (bin "rio") generated 4 warnings (run `cargo fix --bin "rio"` to apply 2 suggestions) Finished release [optimized] target(s) in 1m 35s Running `target\release\rio.exe` [WARN] rio::watch unable to watch config directory Error { kind: Generic("Input watch path is neither a file nor a directory."), paths: [] } [INFO] wgpu_hal::vulkan::instance Instance version: 0x4030f1 [INFO] wgpu_hal::vulkan::instance Debug utils not enabled: debug_utils_user_data not passed to Instance::from_raw [INFO] wgpu_hal::vulkan::instance Enabling device properties2 [DEBUG] wgpu_hal::gles::egl Client extensions: [ "EGL_EXT_client_extensions", "EGL_EXT_platform_base", "EGL_EXT_platform_device", "EGL_ANGLE_platform_angle", "EGL_ANGLE_platform_angle_d3d", "EGL_ANGLE_device_creation", "EGL_ANGLE_device_creation_d3d11", "EGL_ANGLE_experimental_present_path", "EGL_KHR_client_get_all_proc_addresses", ] [INFO] wgpu_hal::gles::egl Loading X11 library to get the current display [INFO] wgpu_hal::gles::egl EGL_MESA_platform_surfaceless not available. Using default platform [INFO] wgpu_hal::gles::egl Display vendor "Google Inc. (adapter LUID: 0000000000019099)", version (1, 4) [DEBUG] wgpu_hal::gles::egl Display extensions: [ "EGL_EXT_create_context_robustness", "EGL_ANGLE_d3d_share_handle_client_buffer", "EGL_ANGLE_d3d_texture_client_buffer", "EGL_ANGLE_surface_d3d_texture_2d_share_handle", "EGL_ANGLE_query_surface_pointer", "EGL_ANGLE_window_fixed_size", "EGL_ANGLE_keyed_mutex", "EGL_ANGLE_surface_orientation", "EGL_ANGLE_direct_composition", "EGL_NV_post_sub_buffer", "EGL_KHR_create_context", "EGL_EXT_device_query", "EGL_KHR_image", "EGL_KHR_image_base", "EGL_KHR_gl_texture_2D_image", "EGL_KHR_gl_texture_cubemap_image", "EGL_KHR_gl_renderbuffer_image", "EGL_KHR_get_all_proc_addresses", "EGL_KHR_stream", "EGL_KHR_stream_consumer_gltexture", "EGL_NV_stream_consumer_gltexture_yuv", "EGL_ANGLE_flexible_surface_compatibility", "EGL_ANGLE_stream_producer_d3d_texture_nv12", "EGL_ANGLE_create_context_webgl_compatibility", "EGL_CHROMIUM_create_context_bind_generates_resource", "EGL_CHROMIUM_sync_control", "EGL_EXT_pixel_format_float", "EGL_KHR_surfaceless_context", "EGL_ANGLE_display_texture_share_group", "EGL_ANGLE_create_context_client_arrays", "EGL_ANGLE_program_cache_control", "EGL_ANGLE_robust_resource_initialization", ] [WARN] wgpu_hal::gles::egl EGL surface: -srgb [INFO] wgpu_hal::gles::egl Trying native-render [WARN] wgpu_hal::gles::egl No config found! [INFO] wgpu_hal::gles::egl Trying presentation [WARN] wgpu_hal::gles::egl EGL says it can present to the window but not natively [INFO] wgpu_hal::gles::egl EGL context: +robust access EXT [INFO] wgpu_hal::gles::egl EGL context: +surfaceless [INFO] sugarloaf::context selected instance: Instance { context: Context { type: "Native" } } [INFO] sugarloaf::context Available adapters: [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] wgpu_core::instance Adapter Dx12 AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] wgpu_core::instance Adapter Dx12 AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] wgpu_core::instance Adapter Dx12 AdapterInfo { name: "Microsoft Basic Render Driver", vendor: 5140, device: 140, device_type: Cpu, driver: "", driver_info: "", backend: Dx12 } [INFO] wgpu_hal::gles::adapter Vendor: Google Inc. [INFO] wgpu_hal::gles::adapter Renderer: ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0) [INFO] wgpu_hal::gles::adapter Version: OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7) [DEBUG] wgpu_hal::gles::adapter Extensions: { "GL_CHROMIUM_copy_texture", "GL_ANGLE_texture_compression_dxt3", "GL_EXT_map_buffer_range", "GL_OES_texture_npot", "GL_OES_vertex_array_object", "GL_OES_texture_half_float_linear", "GL_OES_surfaceless_context", "GL_OES_EGL_image_external_essl3", "GL_CHROMIUM_color_buffer_float_rgb", "GL_EXT_unpack_subimage", "GL_CHROMIUM_bind_uniform_location", "GL_EXT_texture_compression_dxt1", "GL_NV_pack_subimage", "GL_ANGLE_robust_client_memory", "GL_EXT_texture_format_BGRA8888", "GL_OES_EGL_image_external", "GL_OES_mapbuffer", "GL_ANGLE_translated_shader_source", "GL_EXT_disjoint_timer_query", "GL_EXT_sRGB", "GL_KHR_debug", "GL_OES_texture_half_float", "GL_EXT_draw_buffers", "GL_EXT_texture_storage", "GL_EXT_color_buffer_float", "GL_ANGLE_client_arrays", "GL_ANGLE_program_cache_control", "GL_CHROMIUM_color_buffer_float_rgba", "GL_CHROMIUM_bind_generates_resource", "GL_ANGLE_depth_texture", "GL_CHROMIUM_copy_compressed_texture", "GL_EXT_occlusion_query_boolean", "GL_ANGLE_lossy_etc_decode", "GL_NV_EGL_stream_consumer_external", "GL_OES_EGL_image", "GL_EXT_color_buffer_half_float", "GL_EXT_debug_marker", "GL_ANGLE_multiview", "GL_OES_compressed_ETC1_RGB8_texture", "GL_EXT_texture_rg", "GL_EXT_texture_norm16", "GL_OES_depth32", "GL_OES_texture_float", "GL_EXT_robustness", "GL_ANGLE_texture_usage", "GL_ANGLE_pack_reverse_row_order", "GL_ANGLE_framebuffer_blit", "GL_CHROMIUM_sync_query", "GL_KHR_robust_buffer_access_behavior", "GL_NV_pixel_buffer_object", "GL_ANGLE_request_extension", "GL_EXT_texture_filter_anisotropic", "GL_EXT_blend_minmax", "GL_NV_fence", "GL_OES_packed_depth_stencil", "GL_EXT_shader_texture_lod", "GL_OES_rgb8_rgba8", "GL_EXT_discard_framebuffer", "GL_EXT_texture_compression_s3tc_srgb", "GL_EXT_frag_depth", "GL_OES_standard_derivatives", "GL_ANGLE_texture_compression_dxt5", "GL_EXT_read_format_bgra", "GL_ANGLE_framebuffer_multisample", "GL_OES_element_index_uint", "GL_OES_get_program_binary", "GL_ANGLE_instanced_arrays", "GL_OES_texture_float_linear", } [INFO] wgpu_hal::gles::adapter SL version: OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7) [INFO] wgpu_core::instance Adapter Gl AdapterInfo { name: "ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0)", vendor: 0, device: 0, device_type: Other, driver: "", driver_info: "", backend: Gl } [INFO] sugarloaf::context AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] sugarloaf::context AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] sugarloaf::context AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Dx12 } [INFO] sugarloaf::context AdapterInfo { name: "Microsoft Basic Render Driver", vendor: 5140, device: 140, device_type: Cpu, driver: "", driver_info: "", backend: Dx12 } [INFO] sugarloaf::context AdapterInfo { name: "ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0)", vendor: 0, device: 0, device_type: Other, driver: "", driver_info: "", backend: Gl } [INFO] sugarloaf::context initializing the surface [INFO] wgpu_hal::gles::adapter Vendor: Google Inc. [INFO] wgpu_hal::gles::adapter Renderer: ANGLE (NVIDIA GeForce RTX 4090 Direct3D11 vs_5_0 ps_5_0) [INFO] wgpu_hal::gles::adapter Version: OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7) [DEBUG] wgpu_hal::gles::adapter Extensions: { "GL_NV_pixel_buffer_object", "GL_OES_get_program_binary", "GL_OES_texture_half_float", "GL_EXT_occlusion_query_boolean", "GL_OES_standard_derivatives", "GL_OES_vertex_array_object", "GL_EXT_texture_format_BGRA8888", "GL_OES_compressed_ETC1_RGB8_texture", "GL_OES_texture_npot", "GL_EXT_color_buffer_float", "GL_ANGLE_robust_client_memory", "GL_ANGLE_multiview", "GL_EXT_draw_buffers", "GL_CHROMIUM_copy_texture", "GL_ANGLE_framebuffer_blit", "GL_EXT_texture_rg", "GL_ANGLE_request_extension", "GL_EXT_frag_depth", "GL_NV_EGL_stream_consumer_external", "GL_NV_pack_subimage", "GL_OES_surfaceless_context", "GL_ANGLE_texture_usage", "GL_EXT_disjoint_timer_query", "GL_OES_depth32", "GL_KHR_robust_buffer_access_behavior", "GL_EXT_texture_storage", "GL_CHROMIUM_bind_generates_resource", "GL_ANGLE_framebuffer_multisample", "GL_EXT_map_buffer_range", "GL_OES_EGL_image_external", "GL_OES_rgb8_rgba8", "GL_EXT_blend_minmax", "GL_EXT_read_format_bgra", "GL_ANGLE_client_arrays", "GL_EXT_discard_framebuffer", "GL_CHROMIUM_color_buffer_float_rgba", "GL_NV_fence", "GL_OES_texture_half_float_linear", "GL_OES_EGL_image_external_essl3", "GL_EXT_texture_norm16", "GL_EXT_shader_texture_lod", "GL_CHROMIUM_copy_compressed_texture", "GL_OES_mapbuffer", "GL_CHROMIUM_sync_query", "GL_ANGLE_program_cache_control", "GL_EXT_robustness", "GL_ANGLE_depth_texture", "GL_ANGLE_instanced_arrays", "GL_EXT_texture_compression_dxt1", "GL_ANGLE_translated_shader_source", "GL_CHROMIUM_color_buffer_float_rgb", "GL_ANGLE_lossy_etc_decode", "GL_OES_packed_depth_stencil", "GL_EXT_unpack_subimage", "GL_OES_texture_float_linear", "GL_EXT_debug_marker", "GL_OES_texture_float", "GL_EXT_color_buffer_half_float", "GL_EXT_sRGB", "GL_OES_EGL_image", "GL_ANGLE_pack_reverse_row_order", "GL_CHROMIUM_bind_uniform_location", "GL_EXT_texture_compression_s3tc_srgb", "GL_OES_element_index_uint", "GL_ANGLE_texture_compression_dxt3", "GL_EXT_texture_filter_anisotropic", "GL_ANGLE_texture_compression_dxt5", "GL_KHR_debug", } [INFO] wgpu_hal::gles::adapter SL version: OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7) [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context Selected adapter: AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context Sugarloaf selected format: Rgba16Float from [Bgra8UnormSrgb, Bgra8Unorm, Rgba16Float] [DEBUG] wgpu_hal::vulkan::adapter Supported extensions: ["VK_KHR_swapchain", "VK_KHR_swapchain_mutable_format", "VK_EXT_robustness2"] [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device::global Created buffer Valid((0, 1, Vulkan)) with BufferDescriptor { label: None, size: 64, usage: BufferUsages(COPY_DST | UNIFORM), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (0, 1, Vulkan) map state -> Idle [INFO] wgpu_core::device::global Created texture Valid((0, 1, Vulkan)) with TextureDescriptor { label: Some("text::Cache"), size: Extent3d { width: 256, height: 256, depth_or_array_layers: 1 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: R8Unorm, usage: TextureUsages(COPY_DST | TEXTURE_BINDING), view_formats: [] } [DEBUG] wgpu_core::device::resource Create view for texture (0, 1, Vulkan) filters usages to TextureUses(RESOURCE) [INFO] wgpu_core::device::global Created buffer Valid((1, 1, Vulkan)) with BufferDescriptor { label: Some("text::Cache upload buffer"), size: 25600, usage: BufferUsages(COPY_SRC | COPY_DST), mapped_at_creation: false } [DEBUG] wgpu_core::device::global Bind group Valid((0, 1, Vulkan)) [INFO] wgpu_core::device::global Created buffer Valid((2, 1, Vulkan)) with BufferDescriptor { label: Some("text::Pipeline instances"), size: 2600000, usage: BufferUsages(COPY_DST | VERTEX), mapped_at_creation: false } [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([9]) [DEBUG] naga::front Resolving [2] = LocalVariable([1]) : Value(Pointer { base: [10], space: Function }) [DEBUG] naga::front Resolving [3] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [4] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [5] = Compose { ty: [7], components: [[3], [4]] } : Handle([7]) [DEBUG] naga::front Resolving [6] = LocalVariable([2]) : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [7] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [8] = AccessIndex { base: [7], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [9] = LocalVariable([3]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [10] = AccessIndex { base: [1], index: 2 } : Handle([7]) [DEBUG] naga::front Resolving [11] = AccessIndex { base: [10], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [12] = LocalVariable([4]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [13] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [14] = AccessIndex { base: [13], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [15] = LocalVariable([5]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [16] = AccessIndex { base: [1], index: 2 } : Handle([7]) [DEBUG] naga::front Resolving [17] = AccessIndex { base: [16], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [18] = LocalVariable([6]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [19] = AccessIndex { base: [1], index: 0 } : Handle([5]) [DEBUG] naga::front Resolving [20] = As { expr: [19], kind: Sint, convert: Some(4) } : Value(Scalar { kind: Sint, width: 4 }) [DEBUG] naga::front Resolving [21] = Load { pointer: [9] } : Handle([11]) [DEBUG] naga::front Resolving [22] = Load { pointer: [15] } : Handle([11]) [DEBUG] naga::front Resolving [23] = Compose { ty: [7], components: [[21], [22]] } : Handle([7]) [DEBUG] naga::front Resolving [24] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [25] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [26] = Load { pointer: [12] } : Handle([11]) [DEBUG] naga::front Resolving [27] = Load { pointer: [15] } : Handle([11]) [DEBUG] naga::front Resolving [28] = Compose { ty: [7], components: [[26], [27]] } : Handle([7]) [DEBUG] naga::front Resolving [29] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [30] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [31] = AccessIndex { base: [30], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [32] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [33] = AccessIndex { base: [32], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [34] = Compose { ty: [7], components: [[31], [33]] } : Handle([7]) [DEBUG] naga::front Resolving [35] = Load { pointer: [9] } : Handle([11]) [DEBUG] naga::front Resolving [36] = Load { pointer: [18] } : Handle([11]) [DEBUG] naga::front Resolving [37] = Compose { ty: [7], components: [[35], [36]] } : Handle([7]) [DEBUG] naga::front Resolving [38] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [39] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [40] = AccessIndex { base: [39], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [41] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [42] = AccessIndex { base: [41], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [43] = Compose { ty: [7], components: [[40], [42]] } : Handle([7]) [DEBUG] naga::front Resolving [44] = Load { pointer: [12] } : Handle([11]) [DEBUG] naga::front Resolving [45] = Load { pointer: [18] } : Handle([11]) [DEBUG] naga::front Resolving [46] = Compose { ty: [7], components: [[44], [45]] } : Handle([7]) [DEBUG] naga::front Resolving [47] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [48] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [49] = AccessIndex { base: [2], index: 2 } : Value(Pointer { base: [8], space: Function }) [DEBUG] naga::front Resolving [50] = AccessIndex { base: [1], index: 5 } : Handle([8]) [DEBUG] naga::front Resolving [51] = AccessIndex { base: [2], index: 0 } : Value(Pointer { base: [8], space: Function }) [DEBUG] naga::front Resolving [52] = GlobalVariable([1]) : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [53] = AccessIndex { base: [52], index: 0 } : Value(Pointer { base: [1], space: Uniform }) [DEBUG] naga::front Resolving [54] = Load { pointer: [53] } : Handle([1]) [DEBUG] naga::front Resolving [55] = Load { pointer: [6] } : Handle([7]) [DEBUG] naga::front Resolving [56] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([10]) [DEBUG] naga::front Resolving [2] = GlobalVariable([3]) : Handle([4]) [DEBUG] naga::front Resolving [3] = GlobalVariable([2]) : Handle([3]) [DEBUG] naga::front Resolving [4] = AccessIndex { base: [1], index: 1 } : Handle([7]) [DEBUG] naga::front Resolving [5] = ImageSample { image: [2], sampler: [3], gather: None, coordinate: [4], array_index: None, offset: None, level: Auto, depth_ref: None } : Value(Vector { size: Quad, kind: Float, width: 4 }) [DEBUG] naga::front Resolving [6] = AccessIndex { base: [5], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [7] = LocalVariable([1]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [8] = Load { pointer: [7] } : Handle([11]) [DEBUG] naga::front Resolving [9] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [10] = Binary { op: LessEqual, left: [8], right: [9] } : Value(Scalar { kind: Bool, width: 1 }) [DEBUG] naga::front Resolving [11] = AccessIndex { base: [1], index: 2 } : Handle([8]) [DEBUG] naga::front Resolving [12] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [13] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [14] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [15] = Load { pointer: [7] } : Handle([11]) [DEBUG] naga::valid::interface var GlobalVariable { name: Some("globals"), space: Uniform, binding: Some(ResourceBinding { group: 0, binding: 0 }), ty: [2], init: None } [DEBUG] naga::valid::interface var GlobalVariable { name: Some("font_sampler"), space: Handle, binding: Some(ResourceBinding { group: 0, binding: 1 }), ty: [3], init: None } [DEBUG] naga::valid::interface var GlobalVariable { name: Some("font_tex"), space: Handle, binding: Some(ResourceBinding { group: 0, binding: 2 }), ty: [4], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("out"), ty: [10], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("pos"), ty: [7], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("left"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("right"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("top"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("bottom"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("alpha"), ty: [11], init: None } [INFO] wgpu_core::device::global Created render pipeline Valid((0, 1, Vulkan)) with RenderPipelineDescriptor { label: None, layout: Some((0, 1, Vulkan)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 1, Vulkan), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 52, step_mode: Instance, attributes: [VertexAttribute { format: Float32x3, offset: 0, shader_location: 0 }, VertexAttribute { format: Float32x2, offset: 12, shader_location: 1 }, VertexAttribute { format: Float32x2, offset: 20, shader_location: 2 }, VertexAttribute { format: Float32x2, offset: 28, shader_location: 3 }, VertexAttribute { format: Float32x4, offset: 36, shader_location: 4 }] }] }, primitive: PrimitiveState { topology: TriangleStrip, strip_index_format: Some(Uint16), front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 1, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 1, Vulkan), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba16Float, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: ColorWrites(RED | GREEN | BLUE | ALPHA) })] }), multiview: None } [DEBUG] wgpu_core::device::global shader module (0, 1, Vulkan) is dropped [DEBUG] wgpu_core::device::global pipeline layout (0, 1, Vulkan) is dropped [INFO] wgpu_core::device::global Created buffer Valid((3, 1, Vulkan)) with BufferDescriptor { label: None, size: 80, usage: BufferUsages(COPY_DST | UNIFORM), mapped_at_creation: false } [INFO] wgpu_core::device::global Created buffer Valid((4, 1, Vulkan)) with BufferDescriptor { label: Some("Vertex Buffer"), size: 32, usage: BufferUsages(VERTEX), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (4, 1, Vulkan) map state -> Idle [INFO] wgpu_core::device::global Created buffer Valid((5, 1, Vulkan)) with BufferDescriptor { label: Some("Index Buffer"), size: 12, usage: BufferUsages(INDEX), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (5, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Bind group Valid((1, 1, Vulkan)) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([6]) [DEBUG] naga::front Resolving [2] = FunctionArgument(1) : Handle([6]) [DEBUG] naga::front Resolving [3] = FunctionArgument(2) : Handle([4]) [DEBUG] naga::front Resolving [4] = FunctionArgument(3) : Handle([6]) [DEBUG] naga::front Resolving [5] = LocalVariable([1]) : Value(Pointer { base: [5], space: Function }) [DEBUG] naga::front Resolving [6] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [7] = AccessIndex { base: [6], index: 1 } : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [8] = Load { pointer: [7] } : Handle([2]) [DEBUG] naga::front Resolving [9] = Binary { op: Multiply, left: [2], right: [8] } : Handle([6]) [DEBUG] naga::front Resolving [10] = LocalVariable([2]) : Value(Pointer { base: [6], space: Function }) [DEBUG] naga::front Resolving [11] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [12] = AccessIndex { base: [11], index: 1 } : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [13] = Load { pointer: [12] } : Handle([2]) [DEBUG] naga::front Resolving [14] = Binary { op: Multiply, left: [4], right: [13] } : Handle([6]) [DEBUG] naga::front Resolving [15] = LocalVariable([3]) : Value(Pointer { base: [6], space: Function }) [DEBUG] naga::front Resolving [16] = AccessIndex { base: [15], index: 0 } : Value(ValuePointer { size: None, kind: Float, width: 4, space: Function }) [DEBUG] naga::front Resolving [17] = Load { pointer: [16] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [18] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [19] = Binary { op: Add, left: [17], right: [18] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [20] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [21] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [22] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [23] = Compose { ty: [4], components: [[19], [20], [21], [22]] } : Handle([4]) [DEBUG] naga::front Resolving [24] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [25] = AccessIndex { base: [15], index: 1 } : Value(ValuePointer { size: None, kind: Float, width: 4, space: Function }) [DEBUG] naga::front Resolving [26] = Load { pointer: [25] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [27] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [28] = Binary { op: Add, left: [26], right: [27] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [29] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [30] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [31] = Compose { ty: [4], components: [[24], [28], [29], [30]] } : Handle([4]) [DEBUG] naga::front Resolving [32] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [33] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [34] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [35] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [36] = Compose { ty: [4], components: [[32], [33], [34], [35]] } : Handle([4]) [DEBUG] naga::front Resolving [37] = Load { pointer: [10] } : Handle([6]) [DEBUG] naga::front Resolving [38] = Literal(F32(0.5)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [39] = Literal(F32(0.5)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [40] = Compose { ty: [6], components: [[38], [39]] } : Handle([6]) [DEBUG] naga::front Resolving [41] = Binary { op: Subtract, left: [37], right: [40] } : Handle([6]) [DEBUG] naga::front Resolving [42] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [43] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [44] = Compose { ty: [4], components: [[41], [42], [43]] } : Handle([4]) [DEBUG] naga::front Resolving [45] = Compose { ty: [1], components: [[23], [31], [36], [44]] } : Handle([1]) [DEBUG] naga::front Resolving [46] = LocalVariable([4]) : Value(Pointer { base: [1], space: Function }) [DEBUG] naga::front Resolving [47] = AccessIndex { base: [5], index: 1 } : Value(Pointer { base: [4], space: Function }) [DEBUG] naga::front Resolving [48] = AccessIndex { base: [5], index: 0 } : Value(Pointer { base: [4], space: Function }) [DEBUG] naga::front Resolving [49] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([5]) [DEBUG] naga::valid::interface var GlobalVariable { name: Some("globals"), space: Uniform, binding: Some(ResourceBinding { group: 0, binding: 0 }), ty: [3], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("output"), ty: [5], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("pos"), ty: [6], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("scale"), ty: [6], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("transform"), ty: [1], init: None } [INFO] wgpu_core::device::global Created render pipeline Valid((1, 1, Vulkan)) with RenderPipelineDescriptor { label: None, layout: Some((1, 1, Vulkan)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 2, Vulkan), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 8, step_mode: Vertex, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 0 }] }, VertexBufferLayout { array_stride: 32, step_mode: Instance, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 1 }, VertexAttribute { format: Float32x4, offset: 8, shader_location: 2 }, VertexAttribute { format: Float32x2, offset: 24, shader_location: 3 }] }] }, primitive: PrimitiveState { topology: TriangleStrip, strip_index_format: Some(Uint16), front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 1, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 2, Vulkan), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba16Float, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: ColorWrites(RED | GREEN | BLUE | ALPHA) })] }), multiview: None } [INFO] wgpu_core::device::global Created buffer Valid((6, 1, Vulkan)) with BufferDescriptor { label: Some("Instances Buffer"), size: 320000, usage: BufferUsages(COPY_DST | VERTEX), mapped_at_creation: false } [DEBUG] wgpu_core::device::global shader module (0, 2, Vulkan) is dropped [DEBUG] wgpu_core::device::global pipeline layout (1, 1, Vulkan) is dropped [DEBUG] wgpu_core::device::global bind group layout (1, 1, Vulkan) is dropped [INFO] teletypewriter::windows::conpty Using Windows API for pseudoconsole [DEBUG] wgpu_core::device::resource Create view for texture (1, 1, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] sugarloaf::layout expected columns 80 [INFO] sugarloaf::layout recalculating columns due to font width, removing 14 columns [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 1, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global texture view (1, 1, Vulkan) is dropped [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 2858, height: 1481, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [WARN] wgpu_core::device::global Requested size 2858x1481 is outside of the supported range: Extent3d { width: 900, height: 600, depth_or_array_layers: 1 }..=Extent3d { width: 900, height: 600, depth_or_array_layers: 1 } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [2] 'J' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'm' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [osc_dispatch] params=[[48], [99, 58, 92, 119, 105, 110, 100, 111, 119, 115, 92, 115, 121, 115, 116, 101, 109, 51, 50, 92, 119, 105, 110, 100, 111, 119, 115, 112, 111, 119, 101, 114, 115, 104, 101, 108, 108, 92, 118, 49, 46, 48, 92, 112, 111, 119, 101, 114, 115, 104, 101, 108, 108, 46, 101, 120, 101]] bell_terminated=true [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [INFO] rio::crosswords Crosswords::resize dimensions unchanged [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [DEBUG] wgpu_core::device::resource Create view for texture (1, 2, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device::global Created buffer Valid((7, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 2048, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((8, 1, Vulkan)) with BufferDescriptor { label: Some("text::Cache upload buffer"), size: 49664, usage: BufferUsages(COPY_SRC | COPY_DST), mapped_at_creation: false } [DEBUG] wgpu_core::device::global buffer (1, 1, Vulkan) is dropped [INFO] wgpu_core::device::global Created buffer Valid((9, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 49664, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((10, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 10972, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (10, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (9, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (7, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((1, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((1, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 2, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global Buffer (10, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (9, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (7, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global texture view (2, 1, Vulkan) is dropped [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [4;1] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [7;1] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [DEBUG] wgpu_core::device::resource Create view for texture (1, 3, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device::global Created buffer Valid((1, 2, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 2048, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((11, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 10972, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (1, 2, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (11, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((2, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((10, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((9, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((7, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 3, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global Buffer (1, 2, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (11, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global texture view (1, 2, Vulkan) is dropped [DEBUG] wgpu_core::device::resource Create view for texture (1, 4, Vulkan) filters usages to TextureUses(COLOR_TARGET) [DEBUG] wgpu_core::device::global Buffer (10, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((1, 2, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((1, 2, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((11, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 4, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global Buffer (10, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global texture view (2, 2, Vulkan) is dropped ```
dvtkrlbs commented 1 year ago

Using WGPU_BACKEND=vulkan still results in the same thing (it defaults to opengl insstead of directx for some reason)

dvtkrlbs commented 1 year ago

Running with WGPU_BACKEND=dx12 panics with the following message

---------------------------
Rio: Runtime Error
---------------------------
panicked at 'Error in Surface::configure: Validation Error

Caused by:
    Invalid surface
', C:\Users\dvtkrlbs\.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.17.0\src\backend\direct.rs:771:18

Press Ctrl-C to Copy
---------------------------
OK   
---------------------------
dvtkrlbs commented 1 year ago

Forcing the internal gpu using the Low performance setting seems to fix the issue here is the log for the vulkan backend set on one thing that might be happening is wgpu setting the color depth to 10bpc on dedicated gpu instead of 8bpc which in some cases forces HDR.

Details ```rs warning: `rio-terminal` (bin "rio") generated 4 warnings (run `cargo fix --bin "rio"` to apply 2 suggestions) Finished release [optimized] target(s) in 0.22s Running `target\release\rio.exe` [INFO] wgpu_hal::vulkan::instance Instance version: 0x4030f1 [INFO] wgpu_hal::vulkan::instance Debug utils not enabled: debug_utils_user_data not passed to Instance::from_raw [INFO] wgpu_hal::vulkan::instance Enabling device properties2 [INFO] sugarloaf::context selected instance: Instance { context: Context { type: "Native" } } [INFO] sugarloaf::context Available adapters: [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] sugarloaf::context AdapterInfo { name: "NVIDIA GeForce RTX 4090", vendor: 4318, device: 9860, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "537.13", backend: Vulkan } [INFO] sugarloaf::context AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] sugarloaf::context initializing the surface [INFO] wgpu_core::instance Adapter Vulkan AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] sugarloaf::context Selected adapter: AdapterInfo { name: "AMD Radeon(TM) Graphics", vendor: 4098, device: 5710, device_type: IntegratedGpu, driver: "AMD proprietary driver", driver_info: "23.7.2 (AMD proprietary shader compiler)", backend: Vulkan } [INFO] sugarloaf::context Sugarloaf selected format: Rgba16Float from [Rgba8UnormSrgb, Bgra8UnormSrgb, Rgba8Unorm, Bgra8Unorm, Rgba16Float] [DEBUG] wgpu_hal::vulkan::adapter Supported extensions: ["VK_KHR_swapchain", "VK_KHR_swapchain_mutable_format", "VK_EXT_robustness2"] [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [INFO] wgpu_core::device::global Created buffer Valid((0, 1, Vulkan)) with BufferDescriptor { label: None, size: 64, usage: BufferUsages(COPY_DST | UNIFORM), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (0, 1, Vulkan) map state -> Idle [INFO] wgpu_core::device::global Created texture Valid((0, 1, Vulkan)) with TextureDescriptor { label: Some("text::Cache"), size: Extent3d { width: 256, height: 256, depth_or_array_layers: 1 }, mip_level_count: 1, sample_count: 1, dimension: D2, format: R8Unorm, usage: TextureUsages(COPY_DST | TEXTURE_BINDING), view_formats: [] } [DEBUG] wgpu_core::device::resource Create view for texture (0, 1, Vulkan) filters usages to TextureUses(RESOURCE) [INFO] wgpu_core::device::global Created buffer Valid((1, 1, Vulkan)) with BufferDescriptor { label: Some("text::Cache upload buffer"), size: 25600, usage: BufferUsages(COPY_SRC | COPY_DST), mapped_at_creation: false } [DEBUG] wgpu_core::device::global Bind group Valid((0, 1, Vulkan)) [INFO] wgpu_core::device::global Created buffer Valid((2, 1, Vulkan)) with BufferDescriptor { label: Some("text::Pipeline instances"), size: 2600000, usage: BufferUsages(COPY_DST | VERTEX), mapped_at_creation: false } [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([9]) [DEBUG] naga::front Resolving [2] = LocalVariable([1]) : Value(Pointer { base: [10], space: Function }) [DEBUG] naga::front Resolving [3] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [4] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [5] = Compose { ty: [7], components: [[3], [4]] } : Handle([7]) [DEBUG] naga::front Resolving [6] = LocalVariable([2]) : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [7] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [8] = AccessIndex { base: [7], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [9] = LocalVariable([3]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [10] = AccessIndex { base: [1], index: 2 } : Handle([7]) [DEBUG] naga::front Resolving [11] = AccessIndex { base: [10], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [12] = LocalVariable([4]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [13] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [14] = AccessIndex { base: [13], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [15] = LocalVariable([5]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [16] = AccessIndex { base: [1], index: 2 } : Handle([7]) [DEBUG] naga::front Resolving [17] = AccessIndex { base: [16], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [18] = LocalVariable([6]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [19] = AccessIndex { base: [1], index: 0 } : Handle([5]) [DEBUG] naga::front Resolving [20] = As { expr: [19], kind: Sint, convert: Some(4) } : Value(Scalar { kind: Sint, width: 4 }) [DEBUG] naga::front Resolving [21] = Load { pointer: [9] } : Handle([11]) [DEBUG] naga::front Resolving [22] = Load { pointer: [15] } : Handle([11]) [DEBUG] naga::front Resolving [23] = Compose { ty: [7], components: [[21], [22]] } : Handle([7]) [DEBUG] naga::front Resolving [24] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [25] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [26] = Load { pointer: [12] } : Handle([11]) [DEBUG] naga::front Resolving [27] = Load { pointer: [15] } : Handle([11]) [DEBUG] naga::front Resolving [28] = Compose { ty: [7], components: [[26], [27]] } : Handle([7]) [DEBUG] naga::front Resolving [29] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [30] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [31] = AccessIndex { base: [30], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [32] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [33] = AccessIndex { base: [32], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [34] = Compose { ty: [7], components: [[31], [33]] } : Handle([7]) [DEBUG] naga::front Resolving [35] = Load { pointer: [9] } : Handle([11]) [DEBUG] naga::front Resolving [36] = Load { pointer: [18] } : Handle([11]) [DEBUG] naga::front Resolving [37] = Compose { ty: [7], components: [[35], [36]] } : Handle([7]) [DEBUG] naga::front Resolving [38] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [39] = AccessIndex { base: [1], index: 3 } : Handle([7]) [DEBUG] naga::front Resolving [40] = AccessIndex { base: [39], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [41] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [42] = AccessIndex { base: [41], index: 1 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [43] = Compose { ty: [7], components: [[40], [42]] } : Handle([7]) [DEBUG] naga::front Resolving [44] = Load { pointer: [12] } : Handle([11]) [DEBUG] naga::front Resolving [45] = Load { pointer: [18] } : Handle([11]) [DEBUG] naga::front Resolving [46] = Compose { ty: [7], components: [[44], [45]] } : Handle([7]) [DEBUG] naga::front Resolving [47] = AccessIndex { base: [2], index: 1 } : Value(Pointer { base: [7], space: Function }) [DEBUG] naga::front Resolving [48] = AccessIndex { base: [1], index: 4 } : Handle([7]) [DEBUG] naga::front Resolving [49] = AccessIndex { base: [2], index: 2 } : Value(Pointer { base: [8], space: Function }) [DEBUG] naga::front Resolving [50] = AccessIndex { base: [1], index: 5 } : Handle([8]) [DEBUG] naga::front Resolving [51] = AccessIndex { base: [2], index: 0 } : Value(Pointer { base: [8], space: Function }) [DEBUG] naga::front Resolving [52] = GlobalVariable([1]) : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [53] = AccessIndex { base: [52], index: 0 } : Value(Pointer { base: [1], space: Uniform }) [DEBUG] naga::front Resolving [54] = Load { pointer: [53] } : Handle([1]) [DEBUG] naga::front Resolving [55] = Load { pointer: [6] } : Handle([7]) [DEBUG] naga::front Resolving [56] = AccessIndex { base: [1], index: 1 } : Handle([6]) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([10]) [DEBUG] naga::front Resolving [2] = GlobalVariable([3]) : Handle([4]) [DEBUG] naga::front Resolving [3] = GlobalVariable([2]) : Handle([3]) [DEBUG] naga::front Resolving [4] = AccessIndex { base: [1], index: 1 } : Handle([7]) [DEBUG] naga::front Resolving [5] = ImageSample { image: [2], sampler: [3], gather: None, coordinate: [4], array_index: None, offset: None, level: Auto, depth_ref: None } : Value(Vector { size: Quad, kind: Float, width: 4 }) [DEBUG] naga::front Resolving [6] = AccessIndex { base: [5], index: 0 } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [7] = LocalVariable([1]) : Value(Pointer { base: [11], space: Function }) [DEBUG] naga::front Resolving [8] = Load { pointer: [7] } : Handle([11]) [DEBUG] naga::front Resolving [9] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [10] = Binary { op: LessEqual, left: [8], right: [9] } : Value(Scalar { kind: Bool, width: 1 }) [DEBUG] naga::front Resolving [11] = AccessIndex { base: [1], index: 2 } : Handle([8]) [DEBUG] naga::front Resolving [12] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [13] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [14] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [15] = Load { pointer: [7] } : Handle([11]) [DEBUG] naga::valid::interface var GlobalVariable { name: Some("globals"), space: Uniform, binding: Some(ResourceBinding { group: 0, binding: 0 }), ty: [2], init: None } [DEBUG] naga::valid::interface var GlobalVariable { name: Some("font_sampler"), space: Handle, binding: Some(ResourceBinding { group: 0, binding: 1 }), ty: [3], init: None } [DEBUG] naga::valid::interface var GlobalVariable { name: Some("font_tex"), space: Handle, binding: Some(ResourceBinding { group: 0, binding: 2 }), ty: [4], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("out"), ty: [10], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("pos"), ty: [7], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("left"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("right"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("top"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("bottom"), ty: [11], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("alpha"), ty: [11], init: None } [INFO] wgpu_core::device::global Created render pipeline Valid((0, 1, Vulkan)) with RenderPipelineDescriptor { label: None, layout: Some((0, 1, Vulkan)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 1, Vulkan), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 52, step_mode: Instance, attributes: [VertexAttribute { format: Float32x3, offset: 0, shader_location: 0 }, VertexAttribute { format: Float32x2, offset: 12, shader_location: 1 }, VertexAttribute { format: Float32x2, offset: 20, shader_location: 2 }, VertexAttribute { format: Float32x2, offset: 28, shader_location: 3 }, VertexAttribute { format: Float32x4, offset: 36, shader_location: 4 }] }] }, primitive: PrimitiveState { topology: TriangleStrip, strip_index_format: Some(Uint16), front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 1, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 1, Vulkan), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba16Float, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: ColorWrites(RED | GREEN | BLUE | ALPHA) })] }), multiview: None } [DEBUG] wgpu_core::device::global shader module (0, 1, Vulkan) is dropped [DEBUG] wgpu_core::device::global pipeline layout (0, 1, Vulkan) is dropped [INFO] wgpu_core::device::global Created buffer Valid((3, 1, Vulkan)) with BufferDescriptor { label: None, size: 80, usage: BufferUsages(COPY_DST | UNIFORM), mapped_at_creation: false } [INFO] wgpu_core::device::global Created buffer Valid((4, 1, Vulkan)) with BufferDescriptor { label: Some("Vertex Buffer"), size: 32, usage: BufferUsages(VERTEX), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (4, 1, Vulkan) map state -> Idle [INFO] wgpu_core::device::global Created buffer Valid((5, 1, Vulkan)) with BufferDescriptor { label: Some("Index Buffer"), size: 12, usage: BufferUsages(INDEX), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (5, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Bind group Valid((1, 1, Vulkan)) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([6]) [DEBUG] naga::front Resolving [2] = FunctionArgument(1) : Handle([6]) [DEBUG] naga::front Resolving [3] = FunctionArgument(2) : Handle([4]) [DEBUG] naga::front Resolving [4] = FunctionArgument(3) : Handle([6]) [DEBUG] naga::front Resolving [5] = LocalVariable([1]) : Value(Pointer { base: [5], space: Function }) [DEBUG] naga::front Resolving [6] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [7] = AccessIndex { base: [6], index: 1 } : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [8] = Load { pointer: [7] } : Handle([2]) [DEBUG] naga::front Resolving [9] = Binary { op: Multiply, left: [2], right: [8] } : Handle([6]) [DEBUG] naga::front Resolving [10] = LocalVariable([2]) : Value(Pointer { base: [6], space: Function }) [DEBUG] naga::front Resolving [11] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [12] = AccessIndex { base: [11], index: 1 } : Value(Pointer { base: [2], space: Uniform }) [DEBUG] naga::front Resolving [13] = Load { pointer: [12] } : Handle([2]) [DEBUG] naga::front Resolving [14] = Binary { op: Multiply, left: [4], right: [13] } : Handle([6]) [DEBUG] naga::front Resolving [15] = LocalVariable([3]) : Value(Pointer { base: [6], space: Function }) [DEBUG] naga::front Resolving [16] = AccessIndex { base: [15], index: 0 } : Value(ValuePointer { size: None, kind: Float, width: 4, space: Function }) [DEBUG] naga::front Resolving [17] = Load { pointer: [16] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [18] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [19] = Binary { op: Add, left: [17], right: [18] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [20] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [21] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [22] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [23] = Compose { ty: [4], components: [[19], [20], [21], [22]] } : Handle([4]) [DEBUG] naga::front Resolving [24] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [25] = AccessIndex { base: [15], index: 1 } : Value(ValuePointer { size: None, kind: Float, width: 4, space: Function }) [DEBUG] naga::front Resolving [26] = Load { pointer: [25] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [27] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [28] = Binary { op: Add, left: [26], right: [27] } : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [29] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [30] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [31] = Compose { ty: [4], components: [[24], [28], [29], [30]] } : Handle([4]) [DEBUG] naga::front Resolving [32] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [33] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [34] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [35] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [36] = Compose { ty: [4], components: [[32], [33], [34], [35]] } : Handle([4]) [DEBUG] naga::front Resolving [37] = Load { pointer: [10] } : Handle([6]) [DEBUG] naga::front Resolving [38] = Literal(F32(0.5)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [39] = Literal(F32(0.5)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [40] = Compose { ty: [6], components: [[38], [39]] } : Handle([6]) [DEBUG] naga::front Resolving [41] = Binary { op: Subtract, left: [37], right: [40] } : Handle([6]) [DEBUG] naga::front Resolving [42] = Literal(F32(0.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [43] = Literal(F32(1.0)) : Value(Scalar { kind: Float, width: 4 }) [DEBUG] naga::front Resolving [44] = Compose { ty: [4], components: [[41], [42], [43]] } : Handle([4]) [DEBUG] naga::front Resolving [45] = Compose { ty: [1], components: [[23], [31], [36], [44]] } : Handle([1]) [DEBUG] naga::front Resolving [46] = LocalVariable([4]) : Value(Pointer { base: [1], space: Function }) [DEBUG] naga::front Resolving [47] = AccessIndex { base: [5], index: 1 } : Value(Pointer { base: [4], space: Function }) [DEBUG] naga::front Resolving [48] = AccessIndex { base: [5], index: 0 } : Value(Pointer { base: [4], space: Function }) [DEBUG] naga::front Resolving [49] = GlobalVariable([1]) : Value(Pointer { base: [3], space: Uniform }) [DEBUG] naga::front Resolving [1] = FunctionArgument(0) : Handle([5]) [DEBUG] naga::valid::interface var GlobalVariable { name: Some("globals"), space: Uniform, binding: Some(ResourceBinding { group: 0, binding: 0 }), ty: [3], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("output"), ty: [5], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("pos"), ty: [6], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("scale"), ty: [6], init: None } [DEBUG] naga::valid::function var LocalVariable { name: Some("transform"), ty: [1], init: None } [INFO] wgpu_core::device::global Created render pipeline Valid((1, 1, Vulkan)) with RenderPipelineDescriptor { label: None, layout: Some((1, 1, Vulkan)), vertex: VertexState { stage: ProgrammableStageDescriptor { module: (0, 2, Vulkan), entry_point: "vs_main" }, buffers: [VertexBufferLayout { array_stride: 8, step_mode: Vertex, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 0 }] }, VertexBufferLayout { array_stride: 32, step_mode: Instance, attributes: [VertexAttribute { format: Float32x2, offset: 0, shader_location: 1 }, VertexAttribute { format: Float32x4, offset: 8, shader_location: 2 }, VertexAttribute { format: Float32x2, offset: 24, shader_location: 3 }] }] }, primitive: PrimitiveState { topology: TriangleStrip, strip_index_format: Some(Uint16), front_face: Cw, cull_mode: None, unclipped_depth: false, polygon_mode: Fill, conservative: false }, depth_stencil: None, multisample: MultisampleState { count: 1, mask: 18446744073709551615, alpha_to_coverage_enabled: false }, fragment: Some(FragmentState { stage: ProgrammableStageDescriptor { module: (0, 2, Vulkan), entry_point: "fs_main" }, targets: [Some(ColorTargetState { format: Rgba16Float, blend: Some(BlendState { color: BlendComponent { src_factor: SrcAlpha, dst_factor: OneMinusSrcAlpha, operation: Add }, alpha: BlendComponent { src_factor: One, dst_factor: OneMinusSrcAlpha, operation: Add } }), write_mask: ColorWrites(RED | GREEN | BLUE | ALPHA) })] }), multiview: None } [INFO] wgpu_core::device::global Created buffer Valid((6, 1, Vulkan)) with BufferDescriptor { label: Some("Instances Buffer"), size: 320000, usage: BufferUsages(COPY_DST | VERTEX), mapped_at_creation: false } [DEBUG] wgpu_core::device::global shader module (0, 2, Vulkan) is dropped [DEBUG] wgpu_core::device::global pipeline layout (1, 1, Vulkan) is dropped [DEBUG] wgpu_core::device::global bind group layout (1, 1, Vulkan) is dropped [INFO] teletypewriter::windows::conpty Using Windows API for pseudoconsole [DEBUG] wgpu_core::device::resource Create view for texture (1, 1, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] sugarloaf::layout expected columns 80 [INFO] sugarloaf::layout recalculating columns due to font width, removing 14 columns [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 1, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global texture view (1, 1, Vulkan) is dropped [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 2858, height: 1481, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [WARN] wgpu_core::device::global Requested size 2858x1481 is outside of the supported range: Extent3d { width: 900, height: 600, depth_or_array_layers: 1 }..=Extent3d { width: 900, height: 600, depth_or_array_layers: 1 } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [2] 'J' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'm' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [osc_dispatch] params=[[48], [99, 58, 92, 119, 105, 110, 100, 111, 119, 115, 92, 115, 121, 115, 116, 101, 109, 51, 50, 92, 119, 105, 110, 100, 111, 119, 115, 112, 111, 119, 101, 114, 115, 104, 101, 108, 108, 92, 118, 49, 46, 48, 92, 112, 111, 119, 101, 114, 115, 104, 101, 108, 108, 46, 101, 120, 101]] bell_terminated=true [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [4;1] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [7;1] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [6;16] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [INFO] wgpu_core::device::global configuring surface with SurfaceConfiguration { usage: TextureUsages(RENDER_ATTACHMENT), format: Rgba16Float, width: 900, height: 600, present_mode: AutoVsync, alpha_mode: Auto, view_formats: [] } [INFO] wgpu_core::device::global Automatically choosing presentation mode by rule AutoVsync. Chose Fifo [INFO] wgpu_core::device::global Automatically choosing alpha mode by rule Auto. Chose Opaque [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [7;16] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [INFO] rio::crosswords Crosswords::resize dimensions unchanged [DEBUG] wgpu_core::device::resource Create view for texture (1, 2, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device::global Created buffer Valid((7, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 2048, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((8, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 6304, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((9, 1, Vulkan)) with BufferDescriptor { label: Some("text::Cache upload buffer"), size: 32512, usage: BufferUsages(COPY_SRC | COPY_DST), mapped_at_creation: false } [DEBUG] wgpu_core::device::global buffer (1, 1, Vulkan) is dropped [INFO] wgpu_core::device::global Created buffer Valid((10, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 32512, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((11, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 8372, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (11, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (8, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (10, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (7, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((1, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((1, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 2, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global Buffer (11, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (8, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (10, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (7, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global texture view (2, 1, Vulkan) is dropped [DEBUG] rio::performer::handler [csi_dispatch] [25] 'l' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [0] 'K' [DEBUG] rio::performer::handler [csi_dispatch] [7;16] 'H' [DEBUG] rio::performer::handler [csi_dispatch] [25] 'h' [DEBUG] wgpu_core::device::resource Create view for texture (1, 3, Vulkan) filters usages to TextureUses(COLOR_TARGET) [INFO] wgpu_core::device::global Created buffer Valid((1, 2, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 6304, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [INFO] wgpu_core::device::global Created buffer Valid((12, 1, Vulkan)) with BufferDescriptor { label: Some("(wgpu internal) StagingBelt staging buffer"), size: 8372, usage: BufferUsages(MAP_WRITE | COPY_SRC), mapped_at_creation: true } [DEBUG] wgpu_core::device::global Buffer (1, 2, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::global Buffer (12, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((2, 1, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((11, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((8, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((10, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((7, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 3, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global Buffer (1, 2, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global Buffer (12, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global texture view (1, 2, Vulkan) is dropped [DEBUG] wgpu_core::device::resource Create view for texture (1, 4, Vulkan) filters usages to TextureUses(COLOR_TARGET) [DEBUG] wgpu_core::device::global Buffer (11, 1, Vulkan) map state -> Idle [DEBUG] wgpu_core::device::life Texture view Valid((1, 2, Vulkan)) will be destroyed [DEBUG] wgpu_core::device::life Buffer Valid((1, 2, Vulkan)) map state -> Active [DEBUG] wgpu_core::device::life Buffer Valid((12, 1, Vulkan)) map state -> Active [DEBUG] wgpu_core::present Removing swapchain texture Valid((1, 4, Vulkan)) from the device tracker [DEBUG] wgpu_core::present Presented. End of Frame [DEBUG] wgpu_core::device::global Buffer (11, 1, Vulkan) map state -> Waiting [DEBUG] wgpu_core::device::global texture view (2, 2, Vulkan) is dropped ```
dvtkrlbs commented 1 year ago

I found the culprit for the issue the forced HDR comes from the selected TextureFormat on my machine filtered_formats here returns [Bgra8UnormSrgb, Bgra8Unorm, Rgba16Float]. I than queries the surface capability formats (ub tgus case same as the filtered_formats) and selects the first one. However since the filtrered_formats is not empty it selects the last one from that array which is an Rgba16Float which probably causes the driver to set HDR. I think for now we can just filter out Rgba16Float (I did that locally and it works) in the future maybe HDR can be set as an option or even better maybe we can query the system settings and only allow Rgba16Float if the user already enables HDR. @raphamorim. Creating a PR now for the filter.

dvtkrlbs commented 1 year ago

Interestingly enough when I put the performance mode to low it still picks Rgba16Float but in this case the HDR does not get turned on.

dvtkrlbs commented 1 year ago

I talked to a friend of mine who dealt with gpu a lot he said

Oh hmm... well its a little poorly defined in webgpu itself
Only recently the working copy got predefinedColorSpace setting for CanvasConfiguration
Hopefully we get it on next wgpu release, it lets you define output format of either sRGB or DCI-P3
Before PredefinedColorSpace lands on wgpu though I wouldnt use anything else than the *Srgb formats for your canvas
Otherwise the colors you get out is "who knows
Use Rgba8UnormSrgb or Bgra8UnormSrgb as your surface format
the color space is undefined
For most 8 bit formats thats practically Srgb but its a wild west when it comes to float textures
raphamorim commented 1 year ago

Great input on it @dvtkrlbs! I've left just one small comment in PR.

Oh hmm... well its a little poorly defined in webgpu itself Only recently the working copy got predefinedColorSpace setting for CanvasConfiguration Hopefully we get it on next wgpu release, it lets you define output format of either sRGB or DCI-P3 Before PredefinedColorSpace lands on wgpu though I wouldnt use anything else than the *Srgb formats for your canvas Otherwise the colors you get out is "who knows Use Rgba8UnormSrgb or Bgra8UnormSrgb as your surface format the color space is undefined For most 8 bit formats thats practically Srgb but its a wild west when it comes to float textures

Honestly I imagined was something like that because I often use Rgba16Float with metal.

@farcaller could you check if the PR fix for it you as well?

farcaller commented 11 months ago

@raphamorim sorry for getting back to this so late but yes, I checked it and it works as intended; thanks so much!