[need testing] Krita HDR support on Wayland

I have been looking forward to this day for a long time!

I tried loading a variety of images, including the SquaresSwirls.exr image from the ACES github, but also some of my own scene-referred artwork I had done in Krita over the years, including .kra files, .exr exports of those .kra files, and Rec2100-PQ PNG files prepared from those .exr exports. None of them were able to display properly. It seems the entire “surface” (the canvas and surrounding background) is being clamped to 0.00 - 1.00 range, then the output is being scaled to my HDR brightness. I tested this by pipetting various pixels, and the colors that maxed out my monitor were always around 1.00.

I wonder if I’m experiencing the same issue that heythatsprettygood was experiencing. I do know that a recent update to either KDE Plasma or Chrome broke HDR support by clamping all values to SDR white, even though Youtube would still specify that a video was “HDR”, and Ultra HDR Gainmapped JPGs would still apply their gainmaps. Other programs like MPV, tev (image viewer), and Blender were not bothered by this change.

System Info
Krita

 Version: 6.0.0-prealpha (git d514342)
 Hidpi: true

Qt

  Version (compiled): 6.8.0
  Version (loaded): 6.8.0

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 6.17.7-ba01.fc43.x86_64
  Pretty Productname: Bazzite
  Product Type: bazzite
  Product Version: 43
  Desktop: KDE
  Appimage build: Yes

Locale

  Languages: en_US, en_Latn_US, en
  C locale: en_US.UTF-8
  QLocale current: en
  QLocale system: en
  QTextCodec for locale: UTF-8

OpenGL Info
 
  Qt Platform Name:  "wayland" 
  Vendor:  "AMD" 
  Renderer:  "AMD Radeon RX 6800 XT (radeonsi, navi21, LLVM 21.1.4, DRM 3.64, 6.17.7-ba01.fc43.x86_64)" 
  Driver version:  "4.6 (Core Profile) Mesa 25.2.6" 
  Shading language:  "4.60" 
  Requested format:  QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) 
  Current format:  QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 0, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CoreProfile) 
  GL version: 4.6 
  Supports deprecated functions false 
  Is OpenGL ES: false 
  supportsBufferMapping: true 
  supportsBufferInvalidation: true 
  forceDisableTextureBuffers: false 
  Extensions: 
     GL_AMD_shader_stencil_export 
     GL_ARB_draw_buffers_blend 
     GL_EXT_memory_object_fd 
     GL_ARB_ES2_compatibility 
     GL_ARB_shader_group_vote 
     GL_EXT_EGL_sync 
     GL_EXT_framebuffer_multisample 
     GL_ARB_compressed_texture_pixel_storage 
     GL_EXT_texture_compression_dxt1 
     GL_ARB_spirv_extensions 
     GL_ARB_vertex_array_bgra 
     GL_EXT_shader_clock 
     GL_S3_s3tc 
     GL_ATI_blend_equation_separate 
     GL_EXT_texture_sRGB_RG8 
     GL_IBM_multimode_draw_arrays 
     GL_NV_conditional_render 
     GL_AMD_shader_trinary_minmax 
     GL_ARB_fragment_shader 
     GL_ARB_texture_buffer_object_rgb32 
     GL_EXT_memory_object 
     GL_ARB_shader_stencil_export 
     GL_ARB_texture_filter_anisotropic 
     GL_EXT_texture_filter_minmax 
     GL_ANGLE_texture_compression_dxt3 
     GL_EXT_packed_float 
     GL_EXT_semaphore 
     GL_KHR_blend_equation_advanced 
     GL_ARB_texture_rg 
     GL_MESA_texture_signed_rgba 
     GL_NVX_gpu_memory_info 
     GL_ARB_shader_precision 
     GL_ARB_multi_bind 
     GL_ARB_texture_gather 
     GL_ARB_copy_buffer 
     GL_ARB_sparse_texture_clamp 
     GL_ARB_indirect_parameters 
     GL_ARB_transform_feedback_overflow_query 
     GL_ARB_texture_rgb10_a2ui 
     GL_EXT_framebuffer_multisample_blit_scaled 
     GL_EXT_texture_storage 
     GL_ARB_polygon_offset_clamp 
     GL_ARB_shader_storage_buffer_object 
     GL_EXT_shader_image_load_store 
     GL_NV_texture_barrier 
     GL_KHR_texture_compression_astc_ldr 
     GL_MESA_shader_integer_functions 
     GL_ARB_texture_buffer_range 
     GL_ARB_derivative_control 
     GL_ARB_shader_draw_parameters 
     GL_ARB_half_float_vertex 
     GL_ARB_texture_compression_rgtc 
     GL_ATI_texture_float 
     GL_ARB_seamless_cubemap_per_texture 
     GL_EXT_texture_sRGB_decode 
     GL_EXT_texture_shared_exponent 
     GL_EXT_texture_compression_s3tc 
     GL_ARB_ES3_1_compatibility 
     GL_ARB_vertex_type_10f_11f_11f_rev 
     GL_EXT_vertex_attrib_64bit 
     GL_ARB_clear_buffer_object 
     GL_NV_packed_depth_stencil 
     GL_ARB_shading_language_include 
     GL_ARB_draw_instanced 
     GL_ARB_texture_filter_minmax 
     GL_EXT_texture_shadow_lod 
     GL_EXT_window_rectangles 
     GL_ARB_get_texture_sub_image 
     GL_ARB_separate_shader_objects 
     GL_ARB_draw_buffers 
     GL_ARB_map_buffer_range 
     GL_ARB_texture_rectangle 
     GL_EXT_shader_integer_mix 
     GL_MESA_framebuffer_flip_y 
     GL_NV_alpha_to_coverage_dither_control 
     GL_ARB_enhanced_layouts 
     GL_ARB_shader_image_size 
     GL_EXT_texture_mirror_clamp 
     GL_EXT_packed_depth_stencil 
     GL_KHR_context_flush_control 
     GL_ARB_texture_stencil8 
     GL_ARB_vertex_attrib_binding 
     GL_ARB_timer_query 
     GL_ARB_texture_cube_map_array 
     GL_EXT_blend_equation_separate 
     GL_EXT_texture_filter_anisotropic 
     GL_AMD_texture_texture4 
     GL_ARB_internalformat_query2 
     GL_EXT_texture_swizzle 
     GL_ARB_blend_func_extended 
     GL_NV_copy_image 
     GL_EXT_abgr 
     GL_AMD_draw_buffers_blend 
     GL_AMD_pinned_memory 
     GL_ARB_texture_barrier 
     GL_ARB_vertex_type_2_10_10_10_rev 
     GL_ARB_vertex_array_object 
     GL_ARB_texture_non_power_of_two 
     GL_AMD_vertex_shader_viewport_index 
     GL_ARB_shader_texture_lod 
     GL_AMD_framebuffer_multisample_advanced 
     GL_EXT_provoking_vertex 
     GL_ARB_texture_query_levels 
     GL_ARB_robustness 
     GL_ARB_copy_image 
     GL_ARB_texture_view 
     GL_ARB_color_buffer_float 
     GL_AMD_conservative_depth 
     GL_ARB_multi_draw_indirect 
     GL_ARB_fragment_layer_viewport 
     GL_ARB_half_float_pixel 
     GL_ARB_tessellation_shader 
     GL_EXT_texture_snorm 
     GL_ARB_sync 
     GL_EXT_polygon_offset_clamp 
     GL_AMD_multi_draw_indirect 
     GL_ARB_map_buffer_alignment 
     GL_ARB_texture_query_lod 
     GL_EXT_draw_instanced 
     GL_KHR_parallel_shader_compile 
     GL_ARB_explicit_attrib_location 
     GL_ARB_cull_distance 
     GL_KHR_texture_compression_astc_sliced_3d 
     GL_ARB_clear_texture 
     GL_EXT_framebuffer_blit 
     GL_ARB_gpu_shader5 
     GL_ARB_bindless_texture 
     GL_ANGLE_texture_compression_dxt5 
     GL_ARB_fragment_coord_conventions 
     GL_EXT_timer_query 
     GL_ARB_provoking_vertex 
     GL_AMD_depth_clamp_separate 
     GL_EXT_debug_label 
     GL_ARB_query_buffer_object 
     GL_ARB_parallel_shader_compile 
     GL_AMD_vertex_shader_layer 
     GL_ARB_texture_mirror_clamp_to_edge 
     GL_EXT_EGL_image_storage 
     GL_EXT_depth_bounds_test 
     GL_KHR_debug 
     GL_AMD_gpu_shader_int64 
     GL_ARB_vertex_shader 
     GL_MESA_texture_const_bandwidth 
     GL_NV_shader_atomic_int64 
     GL_EXT_pixel_buffer_object 
     GL_ARB_vertex_attrib_64bit 
     GL_ARB_internalformat_query 
     GL_KHR_robustness 
     GL_ARB_get_program_binary 
     GL_ARB_post_depth_coverage 
     GL_AMD_performance_monitor 
     GL_ARB_shader_subroutine 
     GL_ARB_arrays_of_arrays 
     GL_AMD_query_buffer_object 
     GL_EXT_EGL_image_storage_compression 
     GL_ARB_direct_state_access 
     GL_ARB_transform_feedback2 
     GL_EXT_texture_sRGB_R8 
     GL_ARB_seamless_cube_map 
     GL_INTEL_blackhole_render 
     GL_ARB_shader_clock 
     GL_AMD_seamless_cubemap_per_texture 
     GL_ARB_sparse_texture2 
     GL_ARB_uniform_buffer_object 
     GL_ARB_framebuffer_sRGB 
     GL_ARB_base_instance 
     GL_ATI_texture_mirror_once 
     GL_ARB_draw_indirect 
     GL_ARB_compute_variable_group_size 
     GL_ARB_shader_bit_encoding 
     GL_ARB_sparse_buffer 
     GL_ARB_shader_objects 
     GL_ARB_depth_buffer_float 
     GL_EXT_texture_array 
     GL_NV_compute_shader_derivatives 
     GL_ARB_clip_control 
     GL_KHR_robust_buffer_access_behavior 
     GL_ARB_framebuffer_object 
     GL_EXT_texture_sRGB 
     GL_ARB_pixel_buffer_object 
     GL_EXT_shader_image_load_formatted 
     GL_ARB_shading_language_420pack 
     GL_ARB_explicit_uniform_location 
     GL_ARB_transform_feedback_instanced 
     GL_ARB_shader_atomic_counter_ops 
     GL_ARB_texture_border_clamp 
     GL_OES_EGL_image 
     GL_ARB_draw_elements_base_vertex 
     GL_EXT_vertex_array_bgra 
     GL_ARB_stencil_texturing 
     GL_ARB_texture_storage 
     GL_ARB_shader_viewport_layer_array 
     GL_EXT_draw_buffers2 
     GL_ARB_texture_multisample 
     GL_EXT_framebuffer_object 
     GL_EXT_demote_to_helper_invocation 
     GL_ARB_instanced_arrays 
     GL_ARB_gl_spirv 
     GL_ATI_meminfo 
     GL_ARB_texture_swizzle 
     GL_ARB_texture_compression_bptc 
     GL_ARB_compute_shader 
     GL_EXT_framebuffer_sRGB 
     GL_ARB_gpu_shader_fp64 
     GL_KHR_shader_subgroup 
     GL_ARB_debug_output 
     GL_ARB_texture_buffer_object 
     GL_ARB_shader_ballot 
     GL_MESA_pack_invert 
     GL_ARB_sample_shading 
     GL_ARB_gpu_shader_int64 
     GL_ARB_texture_float 
     GL_ARB_invalidate_subdata 
     GL_ARB_sparse_texture 
     GL_ARB_shader_image_load_store 
     GL_EXT_texture_compression_rgtc 
     GL_ARB_shading_language_packing 
     GL_ARB_depth_clamp 
     GL_ARB_texture_storage_multisample 
     GL_KHR_no_error 
     GL_EXT_texture_integer 
     GL_ARB_conditional_render_inverted 
     GL_ARB_framebuffer_no_attachments 
     GL_ARB_occlusion_query2 
     GL_ARB_program_interface_query 
     GL_ARB_vertex_buffer_object 
     GL_ARB_shader_texture_image_samples 
     GL_ARB_buffer_storage 
     GL_ARB_point_sprite 
     GL_ARB_viewport_array 
     GL_EXT_transform_feedback 
     GL_NV_depth_clamp 
     GL_ARB_sampler_objects 
     GL_ARB_transform_feedback3 
     GL_EXT_shader_samples_identical 
     GL_EXT_semaphore_fd 
     GL_ARB_robust_buffer_access_behavior 
     GL_ARB_ES3_2_compatibility 
     GL_ARB_shader_atomic_counters 
     GL_ARB_ES3_compatibility 
     GL_ARB_pipeline_statistics_query 
     GL_ARB_conservative_depth 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsOpenGLES: true 
  isQtPreferOpenGLES: false 
  Detected renderers: 
    (Supported) AMD Radeon RX 6800 XT (radeonsi, navi21, LLVM 21.1.4, DRM 3.64, 6.17.7-ba01.fc43.x86_64) (4.6 (Core Profile) Mesa 25.2.6) 
    (Supported) AMD Radeon RX 6800 XT (radeonsi, navi21, LLVM 21.1.4, DRM 3.64, 6.17.7-ba01.fc43.x86_64) (OpenGL ES 3.2 Mesa 25.2.6)  

useBufferInvalidation (config option): false


Hardware Information

  GPU Acceleration: auto
  Memory: 31986 Mb
  Number of Cores: 24
  Swap Location: /tmp
  Built for: sse2
  Base instruction set: fma3+avx2
  Supported instruction sets: fma3+avx2 avx2 fma3+avx avx fma3+sse4.2 sse4.2 sse4.1 ssse3 sse3 sse2 

Current Settings

  Current Swap Location: /tmp
  Current Swap Location writable: true
  Undo Enabled: true
  Undo Stack Limit: 200
  Use OpenGL: true
  Use OpenGL Texture Buffer: true
  Disable Vector Optimizations: false
  Disable AVX Optimizations: false
  Canvas State: OPENGL_SUCCESS
  Autosave Interval: 420
  Use Backup Files: true
  Number of Backups Kept: 1
  Backup File Suffix: ~
  Backup Location: Same Folder as the File
  Backup Location writable: false
  Resource Location: /home/josh/.local/share/krita
  Use Win8 Pointer Input: false
  Use RightMiddleTabletButton Workaround: false
  Levels of Detail Enabled: false
  Use Zip64: false


Loaded Python Plugins
	colorspace
	comics_project_management_tools
	documenttools
	exportlayers
	filtermanager
	lastdocumentsdocker
	mutator
	plugin_importer
	quick_settings_docker
	scripter
	tenbrushes
	tenscripts
	workflow_buttons


Display Information
Number of screens: 2
	Screen: 0
		Name: DP-1
		Depth: 32
		Scale: 1
		Physical DPI102.406
		Logical DPI96
		Physical Size: 476, 268
		Position: 2560, 180
		Resolution in pixels: 1920x1080
		Manufacturer: Wacom Tech
		Model: Cintiq 22
		Refresh Rate: 60
		Serial Number: 
	Screen: 1
		Name: DP-3
		Depth: 32
		Scale: 1
		Physical DPI108.888
		Logical DPI96
		Physical Size: 597, 336
		Position: 0, 0
		Resolution in pixels: 2560x1440
		Manufacturer: AOC
		Model: Q27G3XMN
		Refresh Rate: 180.002
		Serial Number: 
Color Management Information
Main Window 
=== 

Native window handle: QWidgetWindow(0x560a971775b0, name="MainWindow#1Window") 

Configured mode: CanvasSurfaceMode(Rec709g22) 
Configured intent: RenderIntent(render_intent_perceptual) supported: true 
Actual intent: RenderIntent(render_intent_perceptual) 

Active surface description: 
  Color Space: 
    Primaries:  NamedPrimaries(primaries_srgb) 
    Transfer Function:  NamedTransferFunction(transfer_function_gamma22) 
    Luminance:  Luminance(minLuminance: 0, maxLuminance: 230, referenceLuminance: 230) 
  Mastering Info: <none> 
 

Selected Profile: Krita Rec. 709 Gamma 2.2 
    primaries: Rec. 709 
    transfer:  Gamma 2.2 

    red:   xyY(x: 0.639999, y: 0.33001, Y: 0.212644) 
    green: xyY(x: 0.300008, y: 0.599998, Y: 0.715162) 
    blue:  xyY(x: 0.150002, y: 0.0599968, Y: 0.0721898) 
    white:  xyY(x: 0.312702, y: 0.328999, Y: 0.999995) 

Compositor preferred surface description: 
  Color Space: 
    Primaries:  NamedPrimaries(primaries_bt2020) 
    Transfer Function:  NamedTransferFunction(transfer_function_gamma22) 
    Luminance:  Luminance(minLuminance: 0, maxLuminance: 1150, referenceLuminance: 230) 
  Mastering Info: 
    Primaries:  
        Red:  xy(x: 0.677734, y: 0.313477) 
        Green:  xy(x: 0.248047, y: 0.688477) 
        Blue:  xy(x: 0.149414, y: 0.057617) 
        White:  xy(x: 0.3127, y: 0.329) 
    Luminance:  MasteringLuminance(minLuminance: 50, maxLuminance: 1150) 
    Max CLL:  "1150" 
    Max FALL:  "1156" 
 

 
Document: "document_0" path: "/home/josh/Pictures/Krita Projects/190 rustbucket/rustbucket.kra" 
=== 

Native window handle: QWidgetWindow(0x560aa7d14ef0, name="KisOpenGLCanvas2ClassWindow") 

(canvas bit depth report) 

Texture Format:  0x8059  ( GL_RGB10_A2 ) 
FBO Buffer Size:  R:  10   G:  10   B:  10   A:  0 
Window Buffer Size:  R:  10   G:  10   B:  10   A:  0 
Global Buffer Size:  R:  10   G:  10   B:  10   A:  2 

(canvas surface color manager)

Configured mode: CanvasSurfaceMode(Preferred) 
Configured intent: RenderIntent(render_intent_perceptual) supported: true 
Actual intent: RenderIntent(render_intent_perceptual) 

Active surface description: 
  Color Space: 
    Primaries:  NamedPrimaries(primaries_bt2020) 
    Transfer Function:  NamedTransferFunction(transfer_function_gamma22) 
    Luminance:  Luminance(minLuminance: 0, maxLuminance: 1150, referenceLuminance: 230) 
  Mastering Info: <none> 
 

Selected Profile: Krita Rec. 2020 Gamma 2.2 
    primaries: Rec. 2020 
    transfer:  Gamma 2.2 

    red:   xyY(x: 0.708012, y: 0.291994, Y: 0.262696) 
    green: xyY(x: 0.169997, y: 0.797003, Y: 0.678002) 
    blue:  xyY(x: 0.130998, y: 0.0459965, Y: 0.0592973) 
    white:  xyY(x: 0.312702, y: 0.328999, Y: 0.999995) 

Compositor preferred surface description: 
  Color Space: 
    Primaries:  NamedPrimaries(primaries_bt2020) 
    Transfer Function:  NamedTransferFunction(transfer_function_gamma22) 
    Luminance:  Luminance(minLuminance: 0, maxLuminance: 1150, referenceLuminance: 230) 
  Mastering Info: 
    Primaries:  
        Red:  xy(x: 0.677734, y: 0.313477) 
        Green:  xy(x: 0.248047, y: 0.688477) 
        Blue:  xy(x: 0.149414, y: 0.057617) 
        White:  xy(x: 0.3127, y: 0.329) 
    Luminance:  MasteringLuminance(minLuminance: 50, maxLuminance: 1150) 
    Max CLL:  "1150" 
    Max FALL:  "1156" 
 

 
Screen: "DP-1" "Wacom Tech" "Cintiq 22" 
=== 

  Color Space: 
    Primaries:  NamedPrimaries(primaries_srgb) 
    Transfer Function:  NamedTransferFunction(transfer_function_gamma22) 
    Luminance:  Luminance(minLuminance: 100, maxLuminance: 200, referenceLuminance: 200) 
  Mastering Info: 
    Primaries:  
        Red:  xy(x: 0.64, y: 0.33) 
        Green:  xy(x: 0.3, y: 0.6) 
        Blue:  xy(x: 0.15, y: 0.06) 
        White:  xy(x: 0.3127, y: 0.329) 
    Luminance:  MasteringLuminance(minLuminance: 100, maxLuminance: 200) 
    Max CLL:  "200" 
    Max FALL:  "200" 
 

Screen: "DP-3" "AOC" "Q27G3XMN" [CURRENT] 
=== 

  Color Space: 
    Primaries:  NamedPrimaries(primaries_bt2020) 
    Transfer Function:  NamedTransferFunction(transfer_function_st2084_pq) 
    Luminance:  Luminance(minLuminance: 50, maxLuminance: 10000, referenceLuminance: 230) 
  Mastering Info: 
    Primaries:  
        Red:  xy(x: 0.677734, y: 0.313477) 
        Green:  xy(x: 0.248047, y: 0.688477) 
        Blue:  xy(x: 0.149414, y: 0.057617) 
        White:  xy(x: 0.3127, y: 0.329) 
    Luminance:  MasteringLuminance(minLuminance: 50, maxLuminance: 1150) 
    Max CLL:  "1150" 
    Max FALL:  "1156" 
 
Color management plugin report 
=== 

Wayland color management plugin report 

Supported Features: 
    feature_icc_v2_v4: no
    feature_parametric: yes
    feature_set_primaries: yes
    feature_set_tf_power: no
    feature_set_luminances: yes
    feature_set_mastering_display_primaries: yes
    feature_extended_target_volume: yes
    feature_windows_scrgb: yes

Supported Render Intents:
    render_intent_perceptual: yes
    render_intent_relative: yes
    render_intent_saturation: no
    render_intent_absolute: yes
    render_intent_relative_bpc: yes

Supported Transfer Functions:
    transfer_function_bt1886: yes
    transfer_function_gamma22: yes
    transfer_function_gamma28: no
    transfer_function_st240: no
    transfer_function_ext_linear: yes
    transfer_function_log_100: no
    transfer_function_log_316: no
    transfer_function_xvycc: no
    transfer_function_srgb: no
    transfer_function_ext_srgb: no
    transfer_function_st2084_pq: yes
    transfer_function_st428: no
    transfer_function_hlg: no

Supported Primaries:
    primaries_srgb: yes
    primaries_pal_m: yes
    primaries_pal: yes
    primaries_ntsc: yes
    primaries_generic_film: yes
    primaries_bt2020: yes
    primaries_cie1931_xyz: yes
    primaries_dci_p3: yes
    primaries_display_p3: yes
    primaries_adobe_rgb: yes
 

Terminal Log
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
/tmp/.mount_krita-jeIBfL/usr/lib/krita-python-libs/krita added to PYTHONPATH
qrc:/TextAlign.qml:269:9: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:275:13
qrc:/TextAlign.qml:252:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:260:17
qrc:/TextAlign.qml:238:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:245:17
qrc:/TextAlign.qml:225:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:233:17
qrc:/TextAlign.qml:269:9: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:275:13
qrc:/TextAlign.qml:252:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:260:17
qrc:/TextAlign.qml:238:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:245:17
qrc:/TextAlign.qml:225:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:233:17
qrc:/TextIndent.qml:102:9: QML RowLayout: Binding loop detected for property "height"
qrc:/TextIndent.qml:102:9: QML RowLayout: Binding loop detected for property "height"
FPS-DEBUG: Frame compression mode: two frames (default)
qt.qpa.wayland: eglSwapBuffers failed with 0x300d, surface: 0x0
The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.6,-0.6 0x0)
    documentOffsetF: QPointF(1,1)
    corrected offset: QPointF(-41,0)

Hi, @Snudl!

Could you please try this AppImage now?

We are facing some kind of weirdness of Nvidia drivers, we do already have one more person on IRC confirming the issue on Nvidia.

In return, I need a console log of this run:

QT_LOGGING_RULES=krita.opengl=true QT_QPA_PLATFORM=wayland krita-*.AppImage
1 Like

Hi, @soandnb!

I have fixed this issue in the second version of the package. Please try the package and instructions from this post above.

Yep, with that build I can access Canvas Graphics Acceleration. I also get Rec 2020 PQ as an option for Canvas surface color space now, though the reported bit depth is still 8-bit.

Terminal log
❯ QT_LOGGING_RULES=krita.opengl=true QT_QPA_PLATFORM=wayland ./krita-6.0.0-prealpha-bd7c81db8e-x86_64.AppImage
krita.opengl: Requesting configuration for QSurfaceFormat::DefaultRenderableType 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Probing format 1 2 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
QEGLPlatformContext: Failed to create context: 3009
krita.opengl: OpenGL context cannot be created
krita.opengl: Failed to probe default openGL format with Compatibility profile enabled. Trying with Compatibility profile unset...
krita.opengl: Requesting configuration for QSurfaceFormat::DefaultRenderableType 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Probing format 1 2 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
QEGLPlatformContext: Failed to create context: 3009
krita.opengl: OpenGL context cannot be created
krita.opengl: Failed again.. Trying DesktopGL with compatibility enabled...
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Probing format 2 0 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "4.6.0 NVIDIA 580.105.08" false
krita.opengl: Already probed: 2
krita.opengl: Result: "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "4.6.0 NVIDIA 580.105.08" true
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Probing 4 from default: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 2 4
krita.opengl: Probing format 4 2 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "OpenGL ES 3.2 NVIDIA 580.105.08" true
krita.opengl: Result: "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "OpenGL ES 3.2 NVIDIA 580.105.08" true
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),10)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),10)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: "Supported renderers: QFlags(0x2|0x4) "
krita.opengl: "Surface format preference list: "
krita.opengl: "* QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: "* QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: "* QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: "* QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: "Probing format... QColorSpace() 2 "
krita.opengl: Probing format 2 0 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
Cannot find EGLConfig, returning null config
QEGLPlatformContext: Failed to create context: 3009
qt.qpa.wayland: Non-blocking swap buffers not supported. Subsurface rendering can be affected. It may also cause the event loop to freeze in some situations
krita.opengl: OpenGL context cannot be created
krita.opengl: "Probing format... QColorSpace() 2 "
krita.opengl: Probing format 2 0 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "4.6.0 NVIDIA 580.105.08" false
krita.opengl: "Found format: QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: Probing format 2 0 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "4.6.0 NVIDIA 580.105.08" false
krita.opengl: OpenGL Info
 
  Qt Platform Name:  "wayland" 
  Vendor:  "NVIDIA Corporation" 
  Renderer:  "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" 
  Driver version:  "4.6.0 NVIDIA 580.105.08" 
  Shading language:  "4.60 NVIDIA" 
  Requested format:  QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) 
  Current format:  QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) 
  GL version: 4.6 
  Supports deprecated functions true 
  Is OpenGL ES: false 
  supportsBufferMapping: true 
  supportsBufferInvalidation: true 
  forceDisableTextureBuffers: false 
  Extensions: 
     GL_ARB_robust_buffer_access_behavior 
     GL_ATI_draw_buffers 
     GL_EXT_EGL_image_storage 
     GL_KHR_robust_buffer_access_behavior 
     GL_ARB_program_interface_query 
     GL_NV_internalformat_sample_query 
     GL_AMD_multi_draw_indirect 
     GL_NV_conservative_raster 
     GL_NV_path_rendering_shared_edge 
     GL_NV_vertex_program2_option 
     GL_EXT_texture_compression_latc 
     GL_KHR_no_error 
     GL_NV_memory_attachment 
     GL_ARB_fragment_coord_conventions 
     GL_ARB_shading_language_packing 
     GL_ARB_texture_stencil8 
     GL_EXT_gpu_shader4 
     GL_ARB_texture_float 
     GL_EXT_framebuffer_blit 
     GL_ARB_fragment_program 
     GL_NV_timeline_semaphore 
     GL_NV_shader_thread_group 
     GL_KHR_blend_equation_advanced 
     GL_EXT_packed_depth_stencil 
     GL_NV_shading_rate_image 
     GL_EXT_texture_mirror_clamp 
     GL_NV_conservative_raster_underestimation 
     GL_NV_mesh_shader 
     GL_ARB_half_float_pixel 
     GL_ARB_separate_shader_objects 
     GL_NV_gpu_multicast 
     GL_NV_conditional_render 
     GL_EXT_separate_specular_color 
     GL_EXT_draw_instanced 
     GL_ARB_map_buffer_alignment 
     GL_NV_parameter_buffer_object 
     GL_NV_texture_shader3 
     GL_NV_texture_dirty_tile_map 
     GL_KHR_parallel_shader_compile 
     GL_NV_gpu_shader5 
     GL_ARB_shading_language_100 
     GL_EXT_texture_shadow_lod 
     GL_KHR_debug 
     GL_OES_EGL_image 
     GL_NV_point_sprite 
     GL_ARB_texture_compression 
     GL_EXT_texture_sRGB_R8 
     GL_EXT_depth_bounds_test 
     GL_EXT_Cg_shader 
     GL_EXT_multiview_timer_query 
     GL_NV_gpu_program4_1 
     GL_EXT_texture_object 
     GL_EXT_window_rectangles 
     GL_ARB_draw_elements_base_vertex 
     GL_NV_texture_env_combine4 
     GL_ARB_point_sprite 
     GL_EXT_texture_cube_map 
     GL_EXT_texture_env_combine 
     GL_ARB_robustness 
     GL_EXT_transform_feedback2 
     GL_ARB_clip_control 
     GL_EXT_stencil_wrap 
     GL_ARB_shader_image_size 
     GL_ARB_texture_query_lod 
     GL_ARB_compute_shader 
     GL_EXT_bgra 
     GL_IBM_texture_mirrored_repeat 
     GL_ARB_texture_mirror_clamp_to_edge 
     GL_ARB_sparse_texture 
     GL_EXT_polygon_offset_clamp 
     GL_ARB_fragment_shader 
     GL_ARB_sample_shading 
     GL_ARB_texture_mirrored_repeat 
     GL_EXT_blend_minmax 
     GL_NV_shader_thread_shuffle 
     GL_EXT_draw_buffers2 
     GL_EXT_import_sync_object 
     GL_EXTX_framebuffer_mixed_formats 
     GL_EXT_packed_float 
     GL_EXT_texture_compression_dxt1 
     GL_NV_gpu_program5_mem_extended 
     GL_NV_texture_shader 
     GL_ARB_ES2_compatibility 
     GL_EXT_blend_func_separate 
     GL_EXT_texture_sRGB_decode 
     GL_NV_blend_equation_advanced 
     GL_EXT_bindable_uniform 
     GL_NV_command_list 
     GL_ARB_texture_compression_rgtc 
     GL_EXT_pixel_buffer_object 
     GL_EXT_shader_image_load_store 
     GL_EXT_texture_env_dot3 
     GL_ARB_shader_storage_buffer_object 
     GL_ARB_bindless_texture 
     GL_NVX_nvenc_interop 
     GL_ARB_internalformat_query2 
     GL_ARB_texture_storage_multisample 
     GL_ARB_vertex_type_2_10_10_10_rev 
     GL_ARB_texture_gather 
     GL_ARB_indirect_parameters 
     GL_ARB_vertex_array_object 
     GL_AMD_vertex_shader_viewport_index 
     GL_ARB_shader_bit_encoding 
     GL_ARB_shader_ballot 
     GL_SGIX_shadow 
     GL_ARB_vertex_shader 
     GL_ARB_internalformat_query 
     GL_NV_shader_atomic_float 
     GL_NV_compute_shader_derivatives 
     GL_ARB_pixel_buffer_object 
     GL_ARB_compute_variable_group_size 
     GL_ARB_multisample 
     GL_ARB_shading_language_include 
     GL_NV_explicit_multisample 
     GL_EXT_texture_compression_s3tc 
     GL_ARB_conditional_render_inverted 
     GL_EXT_semaphore 
     GL_NV_bindless_multi_draw_indirect_count 
     GL_EXT_vertex_attrib_64bit 
     GL_ARB_sparse_buffer 
     GL_NV_fragment_coverage_to_color 
     GL_EXT_geometry_shader4 
     GL_ARB_texture_env_dot3 
     GL_NV_shader_atomic_float64 
     GL_NV_transform_feedback 
     GL_EXT_texture_shared_exponent 
     GL_EXT_blend_color 
     GL_NV_vertex_program 
     GL_ARB_depth_buffer_float 
     GL_NV_light_max_exponent 
     GL_ARB_shader_precision 
     GL_NV_sample_mask_override_coverage 
     GL_EXT_framebuffer_object 
     GL_ARB_texture_env_combine 
     GL_EXT_timer_query 
     GL_NV_fragment_program 
     GL_AMD_seamless_cubemap_per_texture 
     GL_ARB_transpose_matrix 
     GL_EXT_draw_range_elements 
     GL_ARB_get_program_binary 
     GL_NV_shader_storage_buffer_object 
     GL_NV_vertex_program3 
     GL_EXT_abgr 
     GL_ARB_texture_rg 
     GL_SGIS_texture_lod 
     GL_ATI_texture_mirror_once 
     GL_NV_fragment_shader_barycentric 
     GL_ARB_fragment_shader_interlock 
     GL_EXT_blend_equation_separate 
     GL_ARB_spirv_extensions 
     GL_NV_occlusion_query 
     GL_ARB_gl_spirv 
     GL_NV_shader_atomic_counters 
     GL_ARB_transform_feedback_instanced 
     GL_ARB_conservative_depth 
     GL_NV_viewport_array2 
     GL_NV_texgen_reflection 
     GL_EXT_texture_filter_anisotropic 
     GL_NV_conservative_raster_pre_snap_triangles 
     GL_KHR_blend_equation_advanced_coherent 
     GL_ARB_base_instance 
     GL_KTX_buffer_region 
     GL_ARB_vertex_attrib_64bit 
     GL_AMD_vertex_shader_layer 
     GL_ARB_gpu_shader5 
     GL_EXT_texture_compression_rgtc 
     GL_NV_texture_barrier 
     GL_ARB_texture_non_power_of_two 
     GL_KHR_shader_subgroup 
     GL_ARB_explicit_attrib_location 
     GL_ARB_imaging 
     GL_NV_ES1_1_compatibility 
     GL_ARB_shader_texture_lod 
     GL_NV_fragment_program2 
     GL_ARB_parallel_shader_compile 
     GL_EXT_direct_state_access 
     GL_ARB_gpu_shader_fp64 
     GL_ARB_shadow 
     GL_ARB_clear_texture 
     GL_EXT_texture_edge_clamp 
     GL_NV_alpha_to_coverage_dither_control 
     GL_NV_geometry_shader4 
     GL_ARB_framebuffer_no_attachments 
     GL_ARB_shader_draw_parameters 
     GL_EXT_provoking_vertex 
     GL_ARB_geometry_shader4 
     GL_ARB_shader_image_load_store 
     GL_NV_depth_buffer_float 
     GL_ARB_texture_env_crossbar 
     GL_NV_conservative_raster_dilate 
     GL_ARB_texture_border_clamp 
     GL_EXT_secondary_color 
     GL_ARB_stencil_texturing 
     GL_ARB_multitexture 
     GL_ARB_framebuffer_sRGB 
     GL_ARB_texture_query_levels 
     GL_ARB_seamless_cubemap_per_texture 
     GL_ARB_texture_barrier 
     GL_NV_compute_program5 
     GL_NV_draw_texture 
     GL_NV_blend_minmax_factor 
     GL_NV_fragment_shader_interlock 
     GL_EXT_texture_lod 
     GL_EXT_point_parameters 
     GL_ARB_texture_cube_map 
     GL_NV_path_rendering 
     GL_NV_scissor_exclusive 
     GL_ARB_fragment_program_shadow 
     GL_EXT_stencil_two_side 
     GL_NV_sample_locations 
     GL_ARB_viewport_array 
     GL_NV_texture_compression_vtc 
     GL_EXT_compiled_vertex_array 
     GL_NV_vertex_attrib_integer_64bit 
     GL_ARB_texture_swizzle 
     GL_ARB_half_float_vertex 
     GL_ARB_sparse_texture2 
     GL_EXT_multi_draw_arrays 
     GL_ARB_depth_clamp 
     GL_ARB_draw_buffers_blend 
     GL_ATI_texture_float 
     GL_ARB_transform_feedback2 
     GL_EXT_texture_filter_minmax 
     GL_NV_register_combiners 
     GL_ARB_provoking_vertex 
     GL_NV_bindless_texture 
     GL_NVX_blend_equation_advanced_multi_draw_buffers 
     GL_ARB_query_buffer_object 
     GL_ARB_uniform_buffer_object 
     GL_NV_copy_image 
     GL_NV_shader_atomic_int64 
     GL_NV_conservative_raster_pre_snap 
     GL_NVX_progress_fence 
     GL_KHR_context_flush_control 
     GL_NV_copy_depth_to_color 
     GL_NV_gpu_program5 
     GL_NV_framebuffer_mixed_samples 
     GL_ARB_arrays_of_arrays 
     GL_ARB_tessellation_shader 
     GL_EXT_texture_sRGB 
     GL_EXT_framebuffer_multisample 
     GL_NV_shader_subgroup_partitioned 
     GL_ARB_compressed_texture_pixel_storage 
     GL_NV_texture_shader2 
     GL_ARB_ES3_1_compatibility 
     GL_ARB_shader_objects 
     GL_NV_fill_rectangle 
     GL_ARB_copy_buffer 
     GL_NV_vertex_buffer_unified_memory 
     GL_ARB_vertex_array_bgra 
     GL_S3_s3tc 
     GL_NV_multisample_coverage 
     GL_ARB_clear_buffer_object 
     GL_NV_texture_multisample 
     GL_ARB_occlusion_query 
     GL_ARB_texture_rgb10_a2ui 
     GL_ARB_sampler_objects 
     GL_ARB_shader_group_vote 
     GL_EXT_separate_shader_objects 
     GL_NV_fence 
     GL_NV_primitive_restart 
     GL_EXT_semaphore_fd 
     GL_NV_uniform_buffer_std430_layout 
     GL_EXT_raster_multisample 
     GL_ARB_framebuffer_object 
     GL_ARB_gpu_shader_int64 
     GL_EXT_blend_subtract 
     GL_NV_depth_clamp 
     GL_ARB_vertex_attrib_binding 
     GL_NV_uniform_buffer_unified_memory 
     GL_ARB_shader_atomic_counter_ops 
     GL_NV_vertex_program2 
     GL_NV_vertex_program1_1 
     GL_NV_primitive_shading_rate 
     GL_ARB_texture_env_add 
     GL_ARB_shader_texture_image_samples 
     GL_ARB_shader_atomic_counters 
     GL_ARB_shading_language_420pack 
     GL_ARB_texture_cube_map_array 
     GL_ARB_shader_viewport_layer_array 
     GL_ARB_texture_filter_anisotropic 
     GL_ARB_texture_view 
     GL_NV_texture_rectangle 
     GL_NV_memory_object_sparse 
     GL_EXT_packed_pixels 
     GL_NV_bindless_multi_draw_indirect 
     GL_NV_draw_vulkan_image 
     GL_NV_stereo_view_rendering 
     GL_ARB_cull_distance 
     GL_EXT_multiview_texture_multisample 
     GL_NVX_gpu_memory_info 
     GL_ARB_post_depth_coverage 
     GL_EXT_texture_storage 
     GL_ARB_window_pos 
     GL_NV_shader_buffer_load 
     GL_EXT_gpu_program_parameters 
     GL_OVR_multiview 
     GL_NV_multisample_filter_hint 
     GL_NV_viewport_swizzle 
     GL_ARB_ES3_2_compatibility 
     GL_NV_packed_depth_stencil 
     GL_ARB_instanced_arrays 
     GL_ARB_vertex_type_10f_11f_11f_rev 
     GL_NV_gpu_program_multiview 
     GL_EXT_texture_lod_bias 
     GL_SUN_slice_accum 
     GL_EXT_framebuffer_sRGB 
     GL_EXT_texture_integer 
     GL_EXT_vertex_array 
     GL_ARB_sync 
     GL_ARB_shader_clock 
     GL_EXT_sparse_texture2 
     GL_NV_parameter_buffer_object2 
     GL_ARB_invalidate_subdata 
     GL_ARB_ES3_compatibility 
     GL_ARB_copy_image 
     GL_ARB_texture_multisample 
     GL_EXT_framebuffer_multisample_blit_scaled 
     GL_ARB_vertex_buffer_object 
     GL_ARB_blend_func_extended 
     GL_ARB_texture_buffer_range 
     GL_ARB_compatibility 
     GL_ARB_direct_state_access 
     GL_NV_query_resource 
     GL_NV_texture_rectangle_compressed 
     GL_ARB_explicit_uniform_location 
     GL_ARB_polygon_offset_clamp 
     GL_ARB_enhanced_layouts 
     GL_ARB_texture_filter_minmax 
     GL_EXT_rescale_normal 
     GL_ARB_texture_buffer_object 
     GL_ARB_pipeline_statistics_query 
     GL_EXT_memory_object 
     GL_NV_shader_texture_footprint 
     GL_EXT_texture3D 
     GL_ARB_seamless_cube_map 
     GL_NV_geometry_shader_passthrough 
     GL_ARB_occlusion_query2 
     GL_ARB_transform_feedback3 
     GL_ARB_timer_query 
     GL_EXT_texture_swizzle 
     GL_NV_ES3_1_compatibility 
     GL_EXT_texture_buffer_object 
     GL_ARB_fragment_layer_viewport 
     GL_ARB_texture_compression_bptc 
     GL_ARB_color_buffer_float 
     GL_SGIX_depth_texture 
     GL_NV_blend_equation_advanced_coherent 
     GL_NV_blend_square 
     GL_ARB_draw_indirect 
     GL_NVX_conditional_render 
     GL_ARB_texture_rectangle 
     GL_EXT_post_depth_coverage 
     GL_NV_transform_feedback2 
     GL_KHR_robustness 
     GL_EXT_fog_coord 
     GL_ARB_derivative_control 
     GL_NV_fog_distance 
     GL_NV_query_resource_tag 
     GL_NV_fragment_program_option 
     GL_ARB_transform_feedback_overflow_query 
     GL_ARB_draw_instanced 
     GL_ARB_depth_texture 
     GL_ARB_get_texture_sub_image 
     GL_ARB_texture_buffer_object_rgb32 
     GL_EXT_vertex_array_bgra 
     GL_NV_gpu_program4 
     GL_ARB_vertex_program 
     GL_EXT_texture_env_add 
     GL_ARB_buffer_storage 
     GL_NV_half_float 
     GL_NV_clip_space_w_scaling 
     GL_ARB_sample_locations 
     GL_NV_gpu_program_fp64 
     GL_EXT_shadow_funcs 
     GL_ARB_debug_output 
     GL_ARB_map_buffer_range 
     GL_NV_feature_query 
     GL_NV_representative_fragment_test 
     GL_SGIS_generate_mipmap 
     GL_NV_register_combiners2 
     GL_ARB_sparse_texture_clamp 
     GL_NV_robustness_video_memory_purge 
     GL_ARB_point_parameters 
     GL_EXT_memory_object_fd 
     GL_ARB_multi_draw_indirect 
     GL_ARB_multi_bind 
     GL_ARB_texture_storage 
     GL_IBM_rasterpos_clip 
     GL_ARB_draw_buffers 
     GL_EXT_shader_image_load_formatted 
     GL_EXT_texture_array 
     GL_NV_float_buffer 
     GL_OVR_multiview2 
     GL_NV_framebuffer_multisample_coverage 
     GL_NV_shader_atomic_fp16_vector 
     GL_ARB_shader_subroutine 
     GL_EXT_shader_integer_mix 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsOpenGLES: true 
  isQtPreferOpenGLES: false 
  Detected renderers: 
    (Supported) NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 (4.6.0 NVIDIA 580.105.08) 
    (Supported) NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 (OpenGL ES 3.2 NVIDIA 580.105.08)  
NOT COOL: Duplicated action name from xml data:  "object_order_raise"

---

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
/tmp/.mount_krita-HmcCnM/usr/lib/krita-python-libs/krita added to PYTHONPATH
qrc:/TextAlign.qml:269:9: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:275:13
qrc:/TextAlign.qml:252:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:260:17
qrc:/TextAlign.qml:238:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:245:17
qrc:/TextAlign.qml:225:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:233:17
qrc:/TextAlign.qml:269:9: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:275:13
qrc:/TextAlign.qml:252:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:260:17
qrc:/TextAlign.qml:238:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:245:17
qrc:/TextAlign.qml:225:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:233:17
qrc:/TextIndent.qml:102:9: QML RowLayout: Binding loop detected for property "height"
qrc:/TextIndent.qml:102:9: QML RowLayout: Binding loop detected for property "height"
FPS-DEBUG: Frame compression mode: two frames (default)
qt.qpa.wayland: eglSwapBuffers failed with 0x300d, surface: 0x0
FPS-DEBUG: Krita canvas mode is overridden: native surface true true
krita.opengl: WARNING: KisOpenGLCanvas2 was created with a 10-bit surface, while the global surface format is still set to 8-bit. Expect color banding to appear
The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.6,-0.6 0x0)
    documentOffsetF: QPointF(1,1)
krita.opengl: WARNING: HDR mode was activated on surface working in 8-bit mode! Please activate 10-bit mode in Krita's Preferences dialog and restart Krita to avoid color banding!
krita.opengl: QSurfaceFormat::defaultFormat() = QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
krita.general: WARNING: Uncategorized action "krita_filter_edge detection" Dropping...

---

krita.general: === end ===
Failed to fetch display info: "current platform doesn't support fetching display information"

Thanks a lot for the log! It seems like qt does something insane when see nvidia driver :slight_smile: I’ll try to encorporate the fix next week! :slight_smile:

1 Like

About the 8 bit depth: activate canvas acceleration and then restart Krita :slight_smile:

I did restart several times, trying to reset acceleration and choosing OpenGL and OpenGL ES, but it always comes back 8-bit.

This is in kritadisplayrc:

[General]
EnableHiDPI=true
LogUsage=true
OpenGLRenderer=auto
canvasState=OPENGL_SUCCESS
canvasSurfaceBitDepthMode=10bit
rootSurfaceFormat=bt709-g22

This version definitely “getting there” as far as HDR display goes. In my purest, most distilled version of my analysis, Krita is successfully displaying HDR content. But of course, Krita is but one component of an HDR pipeline, and I think KDE Plasma may be interfering with HDR display from Krita in a way that other programs like Blender and TEV avoid.

HDR Artwork, using ACES v1.3 (1000nits), SDR White 230nits, HDR Peak 1150nits

HDR Artwork, Un-tone-mapped (aka Standard), SDR White 230nits, HDR Peak 1150nits

In the ACES Tonemapped image, the scene-data is being limited to 1000 nits via my OCIO selections in both Krita and Blender, but I think an additional tonemap is being applied to Krita by KDE Plasma’s HDR compositor. My default HDR Peak is 1150 nits, but I can increase it up to 2,000 nits and the highlights within the image will become brighter, specifically in Krita (and when it was still working, in Chromium-based browsers) if they’re bright enough in the scene-data.

Before HDR functionality broke on Chromium browsers on Linux a few days ago for me, Chromium used to behave very similarly, but only with “Ultra HDR” Gainmapped JPGs and Gainmapped AVIFS. Native HDR AVIFs, CICP-encoded PNGs, and “native” JPG images injected with a special v4.4 ICC profile would display much brighter highlights, similar to what Blender displays.

I’m largely unaware with how KDE Plasma, Chromium, Blender, and now Krita implement tonemapping, and how the applications interact with the Compositor. I mostly only know what I know based on my own observations and my experience in trying to create viable HDR still-image experiences for the past few years or so. All this to say, that I’m not sure if this is actually a “Krita” issue. But if you have the ability to bypass KDE’s tonemapping, it might be worth considering it so as to give the artist the most control over the tonemapping process, and thus, their window into scene-space. But that might fall under “feature request” territory.

Hi, @Snudl!

I also get Rec 2020 PQ as an option for Canvas surface color space now, though the reported bit depth is still 8-bit.

Could you please go to the Canvas Acceleration settings in Krita and explicitly select openGL ES renderer? Then restart Krita. Does it make the bit depth to become 10-bit? (please attach the console output with this setting enabled)

PS:
There is definitely a bug in my code on detecting 10-bit format, since Krita doesn’t even try to check openGLES API for 10-bit mode. But I wonder if it will actually help with your GPU to enable 10-bit mode…

UPS:
I saw your other message about trying multiple settings. Please attach a console log for the case when you have openGLES selected in the settings as a preferred renderer.

I’m largely unaware with how KDE Plasma, Chromium, Blender, and now Krita implement tonemapping, and how the applications interact with the Compositor. I mostly only know what I know based on my own observations and my experience in trying to create viable HDR still-image experiences for the past few years or so.

Well, I personally don’t know how KWin applies tonemapping yet and whether we can disable that. What I know is that Krita maps Rec2020PQ data passed to the compositor as the following:

“1.0 value in the image space” is mapped to the “reference white” of the compositor and declared as having “80 cd/m2” brightness. The maximum brightness is reported as 10000 cd/m2.

The compositor later takes this data and scales according to the calibration settings in the user settings page. I don’t know what curves compositor applies to them. Though I can ask the developers.

Theoretically, we could also pass “mastering info” to the compositor. It should somehow affect the applied tonemapping curves, but we don’t do that currently, because I don’t know how it is supposed to be used (and how compositor is supposed to use that). If you have some knowledge of that, please share. It would be ideal if you could share your whole “usecase”, i.e. explain how you use this feature and how you expect that to work.

Are you referring to MaxFALL and MaxCLL, perchance? In a finished piece of media, where the pixel values are known, those are supposed to specify to the display the average luminance of an image (FALL standing for Frame-Average Light Level), and the brightest individual pixel of an image (CLL standing for Content Light Level), respectively. What it is supposed to do is tell the display the kind of content it’s receiving, to which the display then tells its internal tonemapper how much tonemapping needs to be applied, and at what point along the luminescence curve to start tonemapping, and if tonemapping needs to be applied at all (in the case of the content being not as bright as the display’s capabilities).

Now, what I do, when encoding my native HDR images and my HDR gainmapped images, is that I just make numbers up for the MaxFALL and MaxCLL numbers. 200 or thereabouts for FALL (which is around the ITU-R BT.2408 specification of 203 nits for “SDR white”), and a number corresponding to the ACES HDR tonemapping algorithm I’m using (usually 1,000) for CLL. And the results usually look pretty good when viewing them on Chromium, in both SDR and HDR, both on my computer (with its AOC Q27G3XMN) and on my phone (an S24).

But again, this is for a completed image/video with known pixel values. I have no idea what to do for HDR that is actively changing. I would default to keeping it static and letting the user choose, as “updating” the values dynamically, assuming it’s possible to do that with the compositor, would invariably lead to unexpected shifts in color and brightness rendering while painting. And that would be bedlam for someone just trying to draw some cool art who isn’t as in-tune with all the funny intricacies of this silly goober format.

My workflow is VERY similar to the Painting in HDR wiki entry. My projects are all “scene-referred”, but I use the ACES display transform to view it in SDR. I then export it to Blender to preview it in HDR and “bake” the ACES transform into the image itself, for publishing to the web. For HDR display, I would likely just switch the display transform to HDR, to see a little bit further into the scene-referred space I am manipulating. Honestly, I’d likely still do most of my work in SDR, but with the occasional peek into HDR to see if things look good on that end.

But I can also envision people who paint “directly” in HDR, using the display-referred 10-bit integer Rec2100-PQ space, much like they do with 8-bit int SDR sRGB. I can’t even begin to envision how they would interact with Krita in HDR, and what would be appropriate settings for them. Would HDR display-painting be the default, like how SDR display-painting is right now for 99.999% of artists?

But, for just me, what would make me and my weird, unconventional workflow happy, would be a way to easily swap between HDR and SDR view, and a way to save images with a particular tonemap to various HDR formats (bonus points for implementing “Ultra HDR” gainmapped JPEGs with their SDR base image and their HDR gainmap).

I was dwelling on this for a bit, and I think this IS the mastering info. So I decided to make an AVIF that uses the same values set to MaxFALL and MaxCLL respectively, and lo and behold:

They’re just about the same

So at least the HDR output is doing what it’s supposed to do with the information given. Granted, they’re not EXACT, but they are very close. But again, with these current defaults, problems arise if you have images less than 10,000 nits, or a monitor less than 10,000 nits, or both. I master my images at 1,000 nits, as that’s both what my monitor can handle and what ACES has available as a display transform. And from what I can tell, most video content is mastered around 1,000 nits. From the looks of it, Blender 5.0 has used this assumption when displaying HDR content in its views.

So I would say it would be wise to at least expose the ability to set MaxFALL and MaxCLL, for the time being.

1 Like

Hi, @soandnb!

I’m a bit busy right now to read your replies in detail. But I have an intention to implement an option for Krita that disables all the tonemapping by the compositor. I’ll make it, but later.

Yeah the canvas is still 8-bit after restarting with OpenGLRenderer=angle. This is the same build from last Friday, in case there is an update.

Terminal log
❯ QT_LOGGING_RULES=true QT_QPA_PLATFORM=wayland ./krita-6.0.0-prealpha-bd7c81db8e-x86_64.AppImage
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
QEGLPlatformContext: Failed to create context: 3009
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
QEGLPlatformContext: Failed to create context: 3009
Cannot find EGLConfig, returning null config
qt.qpa.wayland: Non-blocking swap buffers not supported. Subsurface rendering can be affected. It may also cause the event loop to freeze in some situations
NOT COOL: Duplicated action name from xml data:  "blender_layer_blender"

---

		Could not set current file 0 "preview.png"
Could not open preview.png
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
/tmp/.mount_krita-GmMAOB/usr/lib/krita-python-libs/krita added to PYTHONPATH
qrc:/TextAlign.qml:269:9: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:275:13
qrc:/TextAlign.qml:252:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:260:17
qrc:/TextAlign.qml:238:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:245:17
qrc:/TextAlign.qml:225:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:233:17
qrc:/TextAlign.qml:269:9: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:275:13
qrc:/TextAlign.qml:252:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:260:17
qrc:/TextAlign.qml:238:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:245:17
qrc:/TextAlign.qml:225:13: QML GroupButton: Binding loop detected for property "icon.color":
qrc:/TextAlign.qml:233:17
qrc:/TextIndent.qml:102:9: QML RowLayout: Binding loop detected for property "height"
qrc:/TextIndent.qml:102:9: QML RowLayout: Binding loop detected for property "height"
FPS-DEBUG: Frame compression mode: two frames (default)
qt.qpa.wayland: eglSwapBuffers failed with 0x300d, surface: 0x0

---

krita.general: === end ===
Failed to fetch display info: "current platform doesn't support fetching display information"
FPS-DEBUG: Krita canvas mode is overridden: native surface true true
The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.6,-0.6 0x0)
    documentOffsetF: QPointF(1,1)
This plugin does not support setting window opacity

Yeah, we figured out that the bug is caused by NVidea straight up not having support for 10bit textures in their opengl driver for wayland. You’ll have to activate Zink. We’re still waiting to see if the bug will be fixed or we need to automate/document zink activation somehow.

1 Like

Oh huh, yeah that checks out. I can simply run the Krita build through zink-run and the settings confirm 10-bit canvas works. Gradients in a high bit depth document appear very smooth, a clear difference to the 8-bit banding.

Hi, @Snudl and others!

I think I have now made the final version of the openGL detection patch. Could you please do the last round of testing of this Wayland+HDR patch?

The main question for me is NVIDIA GPUs, which caused issues in the early builds.

Test plan:

  1. Run the AppImage without Zinc:

    QT_LOGGING_RULES=krita.opengl=true QT_QPA_PLATFORM=wayland krita-*.AppImage
    
    • it should start fine
    • openGL mode should be available and enabled
    • when HDR mode is enabled in the system, Krita should show HDR images somewhat correctly
    • without Zinc, Krita may be limited to 8-bit mode, so there might be some banding in HDR images
  2. Run the AppImage with Zinc:slight_smile:

    • it should run fine, openGL should be enabled, 10-bit mode should be available.

Package for Linux: Artifacts · linux-build-qt6-manual (#3812571) · Jobs · Graphics / Krita · GitLab

1 Like

Appears to be working like you described it. Display HDR works in both cases, with native OpenGL the canvas is only 8-bit per channel, with zink-run it’s 10-bit with super smooth gradients. The UI pop-up warning about the 8-bit canvas seems gone too.

OpenGL
❯ QT_LOGGING_RULES=krita.opengl=true QT_QPA_PLATFORM=wayland ./krita-6.0.0-prealpha-67b23c07d2-x86_64.appimage
krita.opengl: Requesting configuration for QSurfaceFormat::DefaultRenderableType 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Probing format 1 2 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
QEGLPlatformContext: Failed to create context: 3009
krita.opengl: OpenGL context cannot be created
krita.opengl: Failed to probe default Qt's openGL format.. Trying DesktopGL with compatibility enabled...
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Probing format 2 0 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "4.6.0 NVIDIA 590.48.01" false
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Probing 4 from default: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 2 4
krita.opengl: Probing format 4 2 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "OpenGL ES 3.2 NVIDIA 590.48.01" true
krita.opengl: Result: "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "OpenGL ES 3.2 NVIDIA 590.48.01" true
krita.opengl: Already probed: 2
krita.opengl: Result: "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "4.6.0 NVIDIA 590.48.01" true
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),10)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),10)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: "Supported renderers: QFlags(0x2|0x4) "
krita.opengl: "Surface format preference list: "
krita.opengl: "* QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: "* QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: "* QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: "* QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: "Probing format... QColorSpace() 4 "
krita.opengl: Probing format 4 2 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
Cannot find EGLConfig, returning null config
qt.qpa.wayland: Non-blocking swap buffers not supported. Subsurface rendering can be affected. It may also cause the event loop to freeze in some situations
krita.opengl: Failed to create an OpenGL context with requested bit depth. Requested: 10 Actual: 0
krita.opengl: "Probing format... QColorSpace() 4 "
krita.opengl: Probing format 4 2 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "OpenGL ES 3.2 NVIDIA 590.48.01" true
krita.opengl: "Found format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: Probing format 4 0 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" "OpenGL ES 3.2 NVIDIA 590.48.01" true
krita.opengl: OpenGL Info
 
  Qt Platform Name:  "wayland" 
  Vendor:  "NVIDIA Corporation" 
  Renderer:  "NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2" 
  Driver version:  "OpenGL ES 3.2 NVIDIA 590.48.01" 
  Shading language:  "OpenGL ES GLSL ES 3.20" 
  Requested format:  QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 
  Current format:  QSurfaceFormat(version 3.2, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 
  GL version: 3.2 
  Supports deprecated functions false 
  Is OpenGL ES: true 
  supportsBufferMapping: true 
  supportsBufferInvalidation: false 
  forceDisableTextureBuffers: false 
  Extensions: 
     GL_EXT_memory_object_fd 
     GL_OES_EGL_image_external_essl3 
     GL_NV_viewport_array 
     GL_EXT_texture_filter_anisotropic 
     GL_NV_blend_equation_advanced 
     GL_NV_representative_fragment_test 
     GL_NV_path_rendering 
     GL_OES_primitive_bounding_box 
     GL_OES_copy_image 
     GL_NV_packed_float_linear 
     GL_NV_texture_dirty_tile_map 
     GL_KHR_texture_compression_astc_ldr 
     GL_OES_depth_texture_cube_map 
     GL_NV_internalformat_sample_query 
     GL_OES_sample_variables 
     GL_OES_shader_io_blocks 
     GL_EXT_read_format_bgra 
     GL_EXT_color_buffer_float 
     GL_EXT_discard_framebuffer 
     GL_NV_conservative_raster_pre_snap_triangles 
     GL_OES_standard_derivatives 
     GL_NV_framebuffer_blit 
     GL_EXT_shadow_samplers 
     GL_EXT_texture_filter_minmax 
     GL_EXT_texture_mirror_clamp_to_edge 
     GL_EXT_gpu_shader5 
     GL_NV_conservative_raster 
     GL_NV_fill_rectangle 
     GL_EXT_tessellation_point_size 
     GL_NV_conditional_render 
     GL_NV_timer_query 
     GL_EXT_tessellation_shader 
     GL_EXT_depth_clamp 
     GL_NV_polygon_mode 
     GL_EXT_texture_format_BGRA8888 
     GL_EXT_texture_buffer 
     GL_OES_depth24 
     GL_EXT_shader_clock 
     GL_NV_texture_array 
     GL_OES_draw_buffers_indexed 
     GL_NV_draw_buffers 
     GL_EXT_geometry_point_size 
     GL_KHR_debug 
     GL_NV_shader_noperspective_interpolation 
     GL_NV_texture_compression_latc 
     GL_OES_texture_border_clamp 
     GL_EXT_buffer_storage 
     GL_NV_fragment_shader_barycentric 
     GL_OES_EGL_sync 
     GL_OES_EGL_image 
     GL_EXT_clear_texture 
     GL_NV_compute_shader_derivatives 
     GL_NVX_blend_equation_advanced_multi_draw_buffers 
     GL_EXT_multiview_texture_multisample 
     GL_EXT_robustness 
     GL_EXT_color_buffer_half_float 
     GL_EXT_copy_image 
     GL_EXT_texture_rg 
     GL_NV_pack_subimage 
     GL_NV_sample_locations 
     GL_OES_draw_elements_base_vertex 
     GL_EXT_shader_group_vote 
     GL_NV_memory_object_sparse 
     GL_NV_read_depth 
     GL_OES_get_program_binary 
     GL_EXT_texture_cube_map_array 
     GL_OES_geometry_point_size 
     GL_EXT_polygon_offset_clamp 
     GL_OES_vertex_array_object 
     GL_NV_texture_border_clamp 
     GL_EXT_conservative_depth 
     GL_EXT_float_blend 
     GL_EXT_texture_norm16 
     GL_NV_viewport_swizzle 
     GL_KHR_parallel_shader_compile 
     GL_OES_texture_float_linear 
     GL_NV_gpu_shader5 
     GL_NV_EGL_stream_consumer_external 
     GL_OES_element_index_uint 
     GL_NV_shading_rate_image 
     GL_OES_texture_storage_multisample_2d_array 
     GL_OES_shader_image_atomic 
     GL_OES_viewport_array 
     GL_EXT_shader_io_blocks 
     GL_OES_gpu_shader5 
     GL_OES_texture_stencil8 
     GL_EXT_draw_elements_base_vertex 
     GL_EXT_blend_minmax 
     GL_EXT_texture_compression_dxt1 
     GL_NV_timeline_semaphore 
     GL_OES_fbo_render_mipmap 
     GL_EXT_semaphore 
     GL_EXT_clip_cull_distance 
     GL_NV_framebuffer_multisample 
     GL_EXT_shader_implicit_conversions 
     GL_OES_compressed_ETC1_RGB8_texture 
     GL_NV_draw_texture 
     GL_OES_surfaceless_context 
     GL_NV_primitive_shading_rate 
     GL_NV_sRGB_formats 
     GL_KHR_blend_equation_advanced 
     GL_OES_texture_npot 
     GL_EXT_base_instance 
     GL_EXT_blend_func_extended 
     GL_NV_read_buffer 
     GL_EXT_draw_buffers_indexed 
     GL_NV_copy_image 
     GL_NV_fbo_color_attachments 
     GL_NV_mesh_shader 
     GL_NV_shadow_samplers_cube 
     GL_NV_memory_attachment 
     GL_NV_blend_equation_advanced_coherent 
     GL_OES_texture_half_float 
     GL_EXT_texture_sRGB_R8 
     GL_EXT_post_depth_coverage 
     GL_EXT_draw_transform_feedback 
     GL_EXT_clip_control 
     GL_EXT_sparse_texture2 
     GL_NV_path_rendering_shared_edge 
     GL_NV_texture_compression_s3tc 
     GL_OES_depth32 
     GL_KHR_no_error 
     GL_NV_copy_buffer 
     GL_NV_texture_compression_s3tc_update 
     GL_OES_EGL_image_external 
     GL_NV_viewport_array2 
     GL_OES_texture_view 
     GL_EXT_raster_multisample 
     GL_EXT_compressed_ETC1_RGB8_sub_texture 
     GL_NV_texture_barrier 
     GL_KHR_texture_compression_astc_hdr 
     GL_OES_packed_depth_stencil 
     GL_OES_rgb8_rgba8 
     GL_NV_clip_space_w_scaling 
     GL_EXT_multiview_timer_query 
     GL_EXT_shader_non_constant_global_initializers 
     GL_NV_sample_mask_override_coverage 
     GL_NV_bgr 
     GL_EXT_sRGB_write_control 
     GL_NV_fragment_shader_interlock 
     GL_NV_shadow_samplers_array 
     GL_NV_scissor_exclusive 
     GL_NV_shader_texture_footprint 
     GL_NV_image_formats 
     GL_OES_mapbuffer 
     GL_EXT_primitive_bounding_box 
     GL_EXT_geometry_shader 
     GL_KHR_robust_buffer_access_behavior 
     GL_OES_texture_half_float_linear 
     GL_EXT_map_buffer_range 
     GL_EXT_separate_shader_objects 
     GL_EXT_semaphore_fd 
     GL_EXT_disjoint_timer_query 
     GL_EXT_texture_query_lod 
     GL_OES_texture_buffer 
     GL_EXT_texture_view 
     GL_EXT_multisampled_render_to_texture2 
     GL_EXT_frag_depth 
     GL_NV_shader_subgroup_partitioned 
     GL_OES_tessellation_shader 
     GL_KHR_texture_compression_astc_sliced_3d 
     GL_EXT_occlusion_query_boolean 
     GL_EXT_sRGB 
     GL_OES_tessellation_point_size 
     GL_EXT_render_snorm 
     GL_NV_geometry_shader_passthrough 
     GL_NV_framebuffer_mixed_samples 
     GL_NV_instanced_arrays 
     GL_NV_bindless_texture 
     GL_KHR_robustness 
     GL_NV_blend_minmax_factor 
     GL_OES_depth_texture 
     GL_EXT_sparse_texture 
     GL_NV_packed_float 
     GL_OES_sample_shading 
     GL_OES_texture_float 
     GL_EXT_texture_border_clamp 
     GL_EXT_texture_shadow_lod 
     GL_EXT_texture_compression_bptc 
     GL_NV_read_depth_stencil 
     GL_OES_shader_multisample_interpolation 
     GL_EXT_texture_storage 
     GL_NV_generate_mipmap_sRGB 
     GL_OVR_multiview2 
     GL_EXT_window_rectangles 
     GL_OVR_multiview 
     GL_EXT_texture_compression_s3tc 
     GL_OES_geometry_shader 
     GL_EXT_debug_label 
     GL_EXT_texture_compression_rgtc 
     GL_KHR_blend_equation_advanced_coherent 
     GL_OES_texture_cube_map_array 
     GL_OES_vertex_half_float 
     GL_EXT_multi_draw_indirect 
     GL_EXT_shader_integer_mix 
     GL_KHR_shader_subgroup 
     GL_EXT_EGL_image_storage 
     GL_EXT_EGL_image_external_wrap_modes 
     GL_KHR_context_flush_control 
     GL_EXT_memory_object 
     GL_NV_explicit_attrib_location 
     GL_NV_pixel_buffer_object 
     GL_EXT_texture_sRGB_decode 
     GL_EXT_unpack_subimage 
     GL_NV_occlusion_query_samples 
     GL_EXT_multisample_compatibility 
     GL_NV_shader_atomic_fp16_vector 
     GL_NV_stereo_view_rendering 
     GL_ANDROID_extension_pack_es31a 
     GL_OVR_multiview_multisampled_render_to_texture 
     GL_EXT_EGL_image_array 
     GL_EXT_multisampled_render_to_texture 
     GL_NV_read_stencil 
     GL_NV_non_square_matrices 
     GL_NV_draw_instanced 
     GL_NV_fragment_coverage_to_color 
     GL_EXT_shader_texture_lod 
     GL_NV_draw_vulkan_image 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsOpenGLES: true 
  isQtPreferOpenGLES: false 
  Detected renderers: 
    (Supported) NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 (OpenGL ES 3.2 NVIDIA 590.48.01) 
    (Supported) NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 (4.6.0 NVIDIA 590.48.01)  
INFO: prefill qrhi surface: 0

---

FPS-DEBUG: Frame compression mode: two frames (default)
qt.qpa.wayland: eglSwapBuffers failed with 0x300d, surface: 0x0
FPS-DEBUG: Krita canvas mode is overridden: native surface true true
krita.opengl: WARNING: KisOpenGLCanvas2 was created with a 10-bit surface, while the global surface format is still set to 8-bit. Expect color banding to appear
The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.1,-0.1 0x0)
    documentOffsetF: QPointF(0.5,0.5)
krita.opengl: WARNING: HDR mode was activated on surface working in 8-bit mode! Please activate 10-bit mode in Krita's Preferences dialog and restart Krita to avoid color banding!
krita.opengl: QSurfaceFormat::defaultFormat() = QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
Zink
❯ QT_LOGGING_RULES=krita.opengl=true QT_QPA_PLATFORM=wayland zink-run ./krita-6.0.0-prealpha-67b23c07d2-x86_64.appimage
krita.opengl: Requesting configuration for QSurfaceFormat::DefaultRenderableType 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Probing format 1 2 QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
This plugin does not support dynamic OpenGL loading!
This plugin does not support dynamic OpenGL loading!
krita.opengl: Probe returned "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" "4.6 (Core Profile) Mesa 25.3.3-arch1.4" false
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Probing 4 from default: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 2 4
krita.opengl: Probing format 4 2 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" "OpenGL ES 3.2 Mesa 25.3.3-arch1.4" true
krita.opengl: Result: "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" "OpenGL ES 3.2 Mesa 25.3.3-arch1.4" true
krita.opengl: Already probed: 2
krita.opengl: Result: "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" "4.6 (Core Profile) Mesa 25.3.3-arch1.4" true
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGLES 2
krita.opengl: Requesting root surface format std::pair(QColorSpace(),10)
krita.opengl: Version selected: 1 std::pair(3,0)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),8)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: Requesting configuration for QSurfaceFormat::OpenGL 0
krita.opengl: Requesting root surface format std::pair(QColorSpace(),10)
krita.opengl: Version selected: 0 std::pair(3,3)
krita.opengl: "Supported renderers: QFlags(0x2|0x4) "
krita.opengl: "Surface format preference list: "
krita.opengl: "* QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: "* QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: "* QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: "* QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile) "
krita.opengl: "    2 "
krita.opengl: "Probing format... QColorSpace() 4 "
krita.opengl: Probing format 4 2 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" "OpenGL ES 3.2 Mesa 25.3.3-arch1.4" true
krita.opengl: "Found format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) "
krita.opengl: "    4 "
krita.opengl: Probing format 4 0 QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
krita.opengl: Probe returned "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" "OpenGL ES 3.2 Mesa 25.3.3-arch1.4" true
krita.opengl: OpenGL Info
 
  Qt Platform Name:  "wayland" 
  Vendor:  "Mesa" 
  Renderer:  "zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY))" 
  Driver version:  "OpenGL ES 3.2 Mesa 25.3.3-arch1.4" 
  Shading language:  "OpenGL ES GLSL ES 3.20" 
  Requested format:  QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 
  Current format:  QSurfaceFormat(version 3.2, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 0, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile) 
  GL version: 3.2 
  Supports deprecated functions false 
  Is OpenGL ES: true 
  supportsBufferMapping: true 
  supportsBufferInvalidation: false 
  forceDisableTextureBuffers: false 
  Extensions: 
     GL_EXT_robustness 
     GL_NV_read_buffer 
     GL_EXT_depth_clamp 
     GL_OES_required_internalformat 
     GL_EXT_discard_framebuffer 
     GL_EXT_draw_buffers_indexed 
     GL_OES_geometry_point_size 
     GL_OES_packed_depth_stencil 
     GL_EXT_texture_cube_map_array 
     GL_KHR_context_flush_control 
     GL_OES_fbo_render_mipmap 
     GL_NV_pixel_buffer_object 
     GL_NV_read_stencil 
     GL_OES_EGL_sync 
     GL_NV_shader_noperspective_interpolation 
     GL_OES_sample_shading 
     GL_OES_tessellation_point_size 
     GL_EXT_gpu_shader5 
     GL_EXT_semaphore 
     GL_OES_texture_3D 
     GL_OES_sample_variables 
     GL_KHR_debug 
     GL_EXT_mesh_shader 
     GL_KHR_texture_compression_astc_sliced_3d 
     GL_EXT_shader_integer_mix 
     GL_EXT_texture_storage_compression 
     GL_APPLE_texture_max_level 
     GL_KHR_texture_compression_astc_ldr 
     GL_KHR_no_error 
     GL_EXT_shader_clock 
     GL_EXT_multisampled_render_to_texture2 
     GL_OES_tessellation_shader 
     GL_EXT_color_buffer_half_float 
     GL_EXT_texture_mirror_clamp_to_edge 
     GL_EXT_sRGB 
     GL_OES_EGL_image 
     GL_EXT_texture_compression_s3tc_srgb 
     GL_EXT_frag_depth 
     GL_EXT_texture_rg 
     GL_EXT_conservative_depth 
     GL_EXT_texture_compression_bptc 
     GL_OES_rgb8_rgba8 
     GL_EXT_clip_cull_distance 
     GL_EXT_draw_elements_base_vertex 
     GL_OES_texture_storage_multisample_2d_array 
     GL_EXT_EGL_image_storage_compression 
     GL_NV_image_formats 
     GL_KHR_robust_buffer_access_behavior 
     GL_EXT_read_format_bgra 
     GL_MESA_framebuffer_flip_y 
     GL_OES_EGL_image_external_essl3 
     GL_NV_sample_locations 
     GL_ANDROID_extension_pack_es31a 
     GL_EXT_texture_filter_anisotropic 
     GL_NV_generate_mipmap_sRGB 
     GL_EXT_shader_io_blocks 
     GL_NV_conditional_render 
     GL_EXT_texture_compression_rgtc 
     GL_EXT_geometry_point_size 
     GL_OES_shader_io_blocks 
     GL_OES_get_program_binary 
     GL_KHR_blend_equation_advanced 
     GL_NV_draw_buffers 
     GL_ANGLE_pack_reverse_row_order 
     GL_OES_depth_texture 
     GL_OES_texture_view 
     GL_EXT_primitive_bounding_box 
     GL_OES_shader_multisample_interpolation 
     GL_OES_texture_cube_map_array 
     GL_EXT_instanced_arrays 
     GL_OES_texture_border_clamp 
     GL_ANGLE_texture_compression_dxt5 
     GL_OES_shader_image_atomic 
     GL_EXT_multi_draw_arrays 
     GL_EXT_texture_border_clamp 
     GL_OES_texture_buffer 
     GL_EXT_sRGB_write_control 
     GL_EXT_buffer_storage 
     GL_EXT_texture_format_BGRA8888 
     GL_OES_standard_derivatives 
     GL_EXT_polygon_offset_clamp 
     GL_EXT_texture_query_lod 
     GL_EXT_tessellation_point_size 
     GL_OES_mapbuffer 
     GL_EXT_color_buffer_float 
     GL_NV_fragment_shader_interlock 
     GL_EXT_copy_image 
     GL_OVR_multiview 
     GL_EXT_clear_texture 
     GL_MESA_sampler_objects 
     GL_EXT_multisampled_render_to_texture 
     GL_KHR_parallel_shader_compile 
     GL_OES_vertex_half_float 
     GL_NV_compute_shader_derivatives 
     GL_EXT_shadow_samplers 
     GL_EXT_geometry_shader 
     GL_EXT_texture_view 
     GL_OVR_multiview2 
     GL_EXT_draw_instanced 
     GL_EXT_memory_object_fd 
     GL_OES_texture_float_linear 
     GL_OES_viewport_array 
     GL_OES_EGL_image_external 
     GL_EXT_occlusion_query_boolean 
     GL_NV_pack_subimage 
     GL_NV_read_depth 
     GL_NV_representative_fragment_test 
     GL_OES_draw_buffers_indexed 
     GL_OES_vertex_array_object 
     GL_EXT_texture_sRGB_R8 
     GL_MESA_shader_integer_functions 
     GL_KHR_shader_subgroup 
     GL_OVR_multiview_multisampled_render_to_texture 
     GL_OES_element_index_uint 
     GL_OES_depth24 
     GL_EXT_multi_draw_indirect 
     GL_OES_primitive_bounding_box 
     GL_EXT_tessellation_shader 
     GL_EXT_texture_storage 
     GL_EXT_base_instance 
     GL_OES_texture_half_float 
     GL_EXT_compressed_ETC1_RGB8_sub_texture 
     GL_EXT_shader_group_vote 
     GL_EXT_semaphore_fd 
     GL_EXT_render_snorm 
     GL_OES_geometry_shader 
     GL_EXT_blend_func_extended 
     GL_EXT_separate_shader_objects 
     GL_EXT_demote_to_helper_invocation 
     GL_EXT_texture_buffer 
     GL_NV_fbo_color_attachments 
     GL_OES_surfaceless_context 
     GL_EXT_clip_control 
     GL_MESA_bgra 
     GL_OES_texture_half_float_linear 
     GL_OES_stencil8 
     GL_OES_texture_float 
     GL_OES_texture_npot 
     GL_OES_texture_stencil8 
     GL_NV_texture_barrier 
     GL_EXT_memory_object 
     GL_EXT_debug_label 
     GL_APPLE_sync 
     GL_OES_draw_elements_base_vertex 
     GL_EXT_texture_sRGB_decode 
     GL_NV_timeline_semaphore 
     GL_EXT_texture_compression_dxt1 
     GL_EXT_map_buffer_range 
     GL_AMD_performance_monitor 
     GL_NV_read_depth_stencil 
     GL_OES_copy_image 
     GL_KHR_robustness 
     GL_OES_depth_texture_cube_map 
     GL_EXT_float_blend 
     GL_OES_compressed_ETC1_RGB8_texture 
     GL_EXT_shader_implicit_conversions 
     GL_EXT_draw_buffers 
     GL_EXT_texture_norm16 
     GL_EXT_texture_type_2_10_10_10_REV 
     GL_ANGLE_texture_compression_dxt3 
     GL_OES_gpu_shader5 
     GL_EXT_blend_minmax 
     GL_EXT_unpack_subimage 
     GL_EXT_EGL_image_storage 
     GL_EXT_texture_compression_s3tc 
     GL_EXT_disjoint_timer_query 

QPA OpenGL Detection Info 
  supportsDesktopGL: true 
  supportsOpenGLES: true 
  isQtPreferOpenGLES: false 
  Detected renderers: 
    (Supported) zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY)) (OpenGL ES 3.2 Mesa 25.3.3-arch1.4) 
    (Supported) zink Vulkan 1.4(NVIDIA GeForce RTX 3060 Ti (NVIDIA_PROPRIETARY)) (4.6 (Core Profile) Mesa 25.3.3-arch1.4)  
INFO: prefill qrhi surface: 0

---

FPS-DEBUG: Frame compression mode: two frames (default)
qt.qpa.wayland: eglSwapBuffers failed with 0x300d, surface: 0x0
FPS-DEBUG: Krita canvas mode is overridden: native surface true true
The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.1,-0.1 0x0)
    documentOffsetF: QPointF(0.5,0.5)
QWidgetRepaintManager: skipped frames: 0 %

Yay! Thanks a lot! :slight_smile:

1 Like

Hi, all!

Thank you very much for the testing! The NVIDIA patch is now merged into master, so HDR should work on Wayland everywhere :slight_smile:

1 Like