Oolite on HDR Displays
Moderators: winston, another_commander
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
Continuing the discussion from this post in the alternative binary distribution thread: viewtopic.php?p=301844#p301844
@Commander_X: OK, I will need your help with this. I have prepared a test exe with checkpoints similar to the one I made for phkb, but this time it includes also checkpoints for the old Windows API (pre-24H2) HDR detection, since your VM is Windows 10. The build is here: https://www.filemail.com/d/ukmhodxvnyccxfj
You will have to install the latest test pre-release cf7e686 from github and replace its executable with this. Then run it and post the log. Be alert for errors like "Failed at checkpoint #x".
@Commander_X: OK, I will need your help with this. I have prepared a test exe with checkpoints similar to the one I made for phkb, but this time it includes also checkpoints for the old Windows API (pre-24H2) HDR detection, since your VM is Windows 10. The build is here: https://www.filemail.com/d/ukmhodxvnyccxfj
You will have to install the latest test pre-release cf7e686 from github and replace its executable with this. Then run it and post the log. Be alert for errors like "Failed at checkpoint #x".
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
Attaching here the latest log.another_commander wrote: ↑Sat Jul 26, 2025 8:02 pmContinuing the discussion from this post in the alternative binary distribution thread: viewtopic.php?p=301844#p301844
@Commander_X: OK, I will need your help with this. I have prepared a test exe with checkpoints similar to the one I made for phkb, but this time it includes also checkpoints for the old Windows API (pre-24H2) HDR detection, since your VM is Windows 10. The build is here: https://www.filemail.com/d/ukmhodxvnyccxfj
You will have to install the latest test pre-release cf7e686 from github and replace its executable with this. Then run it and post the log. Be alert for errors like "Failed at checkpoint #x".
Code: Select all
Opening log for Oolite version 1.91 (x86-64 test release) under Windows 10.0.19044.1288 64-bit at 2025-07-27 13:05:52 -0400.
AMD Ryzen 7 5700G with Radeon Graphics 6 processors detected. System RAM: 24575 MB (free: 21527 MB).
Build options: OpenAL, GLSL shaders, new planets, JavaScript console support, OXP verifier, localization tools, debug GraphViz support, JavaScript profiling.
Note that the contents of the log file can be adjusted by editing logcontrol.plist.
13:05:52.014 [process.args]: Startup command: R:\g\oo.xtratst\oolite.app\oolite.exe -hdr
13:05:52.064 [display.initGL]: V-Sync requested.
13:05:52.064 [display.mode.list.native]: Windows native resolution detected: 1920 x 1080
13:05:52.064 [display.initGL]: Trying 16-bpcc, 24-bit depth buffer
13:05:52.370 [gamma.set.failed]: ----- WARNING: Could not set gamma: Gamma ramp manipulation not supported
13:05:52.370 [display.initGL]: Achieved color / depth buffer sizes (bits):
13:05:52.371 [display.initGL]: Red: 16
13:05:52.371 [display.initGL]: Green: 16
13:05:52.372 [display.initGL]: Blue: 16
13:05:52.372 [display.initGL]: Alpha: 16
13:05:52.372 [display.initGL]: Depth Buffer: 24
13:05:52.372 [display.initGL]: Pixel type is float : 1
13:05:52.372 [display.initGL]: Pixel format index: 89
13:05:52.511 [joystick.init]: Number of joysticks detected: 0
13:05:52.511 [rendering.opengl.version]: OpenGL renderer version: 4.6.0 ("4.6.0 NVIDIA 566.03"). Vendor: "NVIDIA Corporation". Renderer: "NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2".
13:05:52.511 [rendering.opengl.extensions]: OpenGL extensions (402):
GL_NV_blend_square, GL_KHR_parallel_shader_compile, GL_ARB_map_buffer_range, GL_ARB_instanced_arrays, GL_ARB_shader_viewport_layer_array, GL_ARB_direct_state_access, GL_NV_memory_attachment, GL_ARB_clear_texture, GL_EXT_texture_compression_rgtc, GL_EXT_post_depth_coverage, GL_NV_texture_compression_vtc, GL_EXT_texture_storage, GL_NV_fragment_program, GL_ARB_query_buffer_object, GL_EXT_texture_shared_exponent, GL_EXT_sparse_texture2, GL_ARB_uniform_buffer_object, GL_EXT_texture_array, GL_ARB_shader_draw_parameters, GL_NV_mesh_shader, GL_ARB_shading_language_include, GL_ARB_separate_shader_objects, GL_NV_fragment_shader_interlock, GL_EXT_packed_pixels, GL_ARB_texture_query_levels, GL_ARB_fragment_layer_viewport, GL_NV_fence, GL_ARB_explicit_uniform_location, GL_ARB_stencil_texturing, GL_NV_conservative_raster, GL_EXT_gpu_program_parameters, GL_EXT_vertex_array, GL_EXT_provoking_vertex, GL_NV_draw_vulkan_image, GL_ARB_texture_view, GL_ARB_ES3_1_compatibility, GL_NV_texgen_reflection, GL_EXT_multi_draw_arrays, GL_NVX_gpu_multicast2, GL_ARB_clear_buffer_object, GL_EXT_texture_object, GL_EXT_packed_float, GL_EXT_texture_filter_anisotropic, GL_ARB_get_program_binary, GL_ARB_half_float_vertex, GL_ARB_program_interface_query, GL_EXT_bindable_uniform, GL_ARB_multi_draw_indirect, GL_NV_texture_multisample, GL_ARB_texture_buffer_object, GL_ARB_gpu_shader_fp64, GL_EXT_blend_minmax, GL_ARB_vertex_attrib_64bit, GL_ARB_texture_query_lod, GL_ARB_compressed_texture_pixel_storage, GL_EXT_texture_integer, GL_ARB_texture_non_power_of_two, GL_EXT_texture_compression_s3tc, GL_ARB_texture_stencil8, GL_KHR_no_error, GL_ARB_texture_mirror_clamp_to_edge, GL_ARB_framebuffer_no_attachments, GL_NV_parameter_buffer_object2, GL_ARB_shading_language_420pack, GL_ARB_sample_locations, GL_NV_texture_rectangle, GL_KHR_robustness, GL_SGIX_shadow, GL_EXT_vertex_array_bgra, GL_EXT_depth_bounds_test, GL_NV_conservative_raster_pre_snap, GL_NV_vertex_array_range2, GL_ARB_shader_texture_image_samples, GL_NV_vertex_program2, GL_ARB_texture_compression_bptc, GL_NV_vertex_program3, GL_EXT_stencil_wrap, GL_EXT_separate_shader_objects, GL_NV_shader_atomic_float, GL_NV_scissor_exclusive, GL_NV_packed_depth_stencil, GL_ARB_texture_gather, GL_ARB_shader_image_size, GL_NV_uniform_buffer_std430_layout, GL_EXT_texture_cube_map, GL_EXT_shader_image_load_formatted, GL_NV_register_combiners2, GL_NV_half_float, GL_ARB_map_buffer_alignment, GL_SUN_slice_accum, GL_ARB_provoking_vertex, GL_NV_shader_thread_shuffle, GL_ARB_tessellation_shader, GL_NV_stereo_view_rendering, GL_EXT_direct_state_access, GL_NVX_multigpu_info, GL_ARB_texture_rg, GL_NV_texture_shader2, GL_NV_texture_shader3, GL_ARB_bindless_texture, GL_SGIX_depth_texture, GL_NVX_linked_gpu_multicast, GL_NV_texture_env_combine4, GL_EXT_polygon_offset_clamp, GL_EXT_draw_range_elements, GL_EXT_draw_buffers2, GL_EXT_texture_filter_minmax, GL_ARB_transform_feedback2, GL_ARB_geometry_shader4, GL_ARB_fragment_coord_conventions, GL_ARB_transform_feedback3, GL_ARB_shader_precision, GL_NV_gpu_program_fp64, GL_NV_blend_equation_advanced_coherent, GL_NV_shader_atomic_counters, GL_ARB_get_texture_sub_image, GL_EXT_blend_color, GL_ARB_vertex_array_object, GL_NV_query_resource, GL_ATI_draw_buffers, GL_ARB_texture_mirrored_repeat, GL_EXT_stencil_two_side, GL_NV_shader_texture_footprint, GL_ARB_timer_query, WGL_EXT_swap_control, GL_NV_parameter_buffer_object, GL_EXT_texture_sRGB_decode, GL_NV_transform_feedback, GL_EXT_timer_query, GL_EXT_texture_edge_clamp, GL_EXT_shader_image_load_store, GL_NV_gpu_program4_1, GL_IBM_rasterpos_clip, GL_NV_framebuffer_multisample_coverage, GL_ARB_base_instance, GL_ARB_texture_float, GL_ARB_imaging, GL_ARB_draw_elements_base_vertex, GL_EXT_texture3D, GL_ARB_cull_distance, GL_EXT_packed_depth_stencil, GL_EXT_compiled_vertex_array, GL_ARB_texture_cube_map, GL_NV_uniform_buffer_unified_memory, GL_NV_primitive_restart, GL_EXT_blend_subtract, GL_EXT_separate_specular_color, GL_S3_s3tc, GL_NV_fragment_program_option, GL_EXTX_framebuffer_mixed_formats, GL_ARB_texture_compression, GL_ARB_gl_spirv, GL_ARB_texture_compression_rgtc, GL_ARB_texture_filter_anisotropic, GL_ARB_ES2_compatibility, GL_NV_shader_subgroup_partitioned, GL_ARB_shader_ballot, GL_NV_gpu_multicast, GL_NV_shader_atomic_float64, GL_NVX_blend_equation_advanced_multi_draw_buffers, GL_ARB_depth_buffer_float, GL_NV_light_max_exponent, GL_ARB_vertex_buffer_object, GL_KHR_blend_equation_advanced, GL_NV_shader_atomic_int64, GL_ARB_shading_language_100, GL_NV_shader_storage_buffer_object, GL_ARB_texture_env_add, GL_ARB_fragment_program, GL_NV_copy_depth_to_color, GL_ARB_sparse_buffer, GL_EXT_import_sync_object, GL_EXT_texture_swizzle, GL_ARB_shadow, GL_NV_conservative_raster_pre_snap_triangles, GL_ARB_texture_filter_minmax, GL_NV_shading_rate_image, GL_NV_copy_image, GL_NVX_progress_fence, GL_NV_clip_space_w_scaling, GL_ARB_shader_texture_lod, GL_ARB_clip_control, GL_NV_conservative_raster_dilate, GL_ARB_texture_multisample, GL_EXT_texture_env_combine, GL_ARB_sync, GL_ATI_texture_mirror_once, GL_ARB_robustness, GL_ARB_compatibility, GL_EXT_texture_compression_dxt1, GL_NV_gpu_program4, GL_NV_gpu_program5, GL_ARB_transform_feedback_overflow_query, GL_NV_vertex_array_range, GL_ARB_multitexture, GL_EXT_transform_feedback2, GL_NV_vertex_program2_option, GL_KHR_shader_subgroup, GL_ARB_buffer_storage, GL_NV_compute_program5, GL_NV_vertex_program1_1, GL_NV_gpu_program5_mem_extended, GL_NV_conservative_raster_underestimation, GL_EXT_shadow_funcs, GL_ARB_occlusion_query, GL_ARB_fragment_program_shadow, GL_NVX_nvenc_interop, GL_NV_vertex_buffer_unified_memory, GL_ARB_texture_barrier, GL_EXT_geometry_shader4, GL_EXT_memory_object_win32, GL_ARB_texture_env_dot3, GL_ARB_seamless_cubemap_per_texture, GL_ARB_multisample, GL_ARB_copy_image, GL_ARB_gpu_shader_int64, GL_ARB_color_buffer_float, GL_EXT_texture_env_add, GL_ARB_ES3_compatibility, GL_ARB_point_parameters, GL_ARB_sampler_objects, GL_ARB_transform_feedback_instanced, GL_ARB_invalidate_subdata, GL_KTX_buffer_region, GL_NV_vertex_attrib_integer_64bit, GL_NV_bindless_multi_draw_indirect, GL_NV_sample_mask_override_coverage, GL_NVX_gpu_memory_info, GL_EXT_framebuffer_object, GL_NV_gpu_shader5, GL_ARB_texture_rgb10_a2ui, GL_NV_shader_atomic_fp16_vector, GL_NV_ES1_1_compatibility, GL_ARB_texture_border_clamp, GL_NV_alpha_to_coverage_dither_control, GL_ARB_shading_language_packing, GL_NV_fragment_shader_barycentric, GL_EXT_bgra, GL_ATI_texture_float, GL_ARB_occlusion_query2, GL_ARB_shader_clock, GL_ARB_texture_env_crossbar, GL_NV_shader_buffer_load, GL_NV_feature_query, GL_NV_depth_clamp, GL_ARB_derivative_control, GL_ARB_conservative_depth, GL_AMD_vertex_shader_layer, GL_EXT_win32_keyed_mutex, GL_AMD_multi_draw_indirect, GL_ARB_shader_atomic_counters, GL_ARB_texture_env_combine, GL_EXT_framebuffer_multisample, GL_NV_occlusion_query, GL_EXT_Cg_shader, GL_NV_texture_barrier, GL_NV_path_rendering, GL_ARB_ES3_2_compatibility, GL_ARB_draw_buffers, GL_SGIS_generate_mipmap, GL_NV_path_rendering_shared_edge, GL_ARB_texture_buffer_object_rgb32, GL_EXT_window_rectangles, GL_NVX_conditional_render, GL_NV_register_combiners, GL_EXT_texture_sRGB_R8, GL_EXT_framebuffer_blit, GL_ARB_vertex_array_bgra, GL_NV_multisample_coverage, GL_EXT_texture_shadow_lod, GL_EXT_fog_coord, GL_ARB_window_pos, GL_NV_fill_rectangle, GL_ARB_half_float_pixel, GL_SGIS_texture_lod, GL_IBM_texture_mirrored_repeat, GL_EXT_texture_lod, GL_EXT_blend_equation_separate, GL_OVR_multiview2, GL_ARB_point_sprite, GL_NV_gpu_program_multiview, GL_ARB_parallel_shader_compile, GL_NV_fragment_program2, GL_ARB_shader_group_vote, GL_ARB_fragment_shader, GL_NV_blend_minmax_factor, GL_ARB_framebuffer_sRGB, GL_EXT_memory_object, GL_ARB_shader_objects, GL_NV_internalformat_sample_query, GL_WIN_swap_hint, GL_ARB_polygon_offset_clamp, GL_EXT_framebuffer_multisample_blit_scaled, GL_ARB_sparse_texture_clamp, GL_ARB_blend_func_extended, GL_ARB_shader_subroutine, GL_NV_pixel_data_range, GL_NV_viewport_swizzle, GL_NV_memory_object_sparse, GL_ARB_sparse_texture, GL_ARB_multi_bind, GL_KHR_debug, GL_EXT_multiview_timer_query, GL_NV_representative_fragment_test, GL_NV_framebuffer_mixed_samples, GL_ARB_transpose_matrix, GL_EXT_texture_compression_latc, GL_ARB_texture_cube_map_array, GL_NV_ES3_1_compatibility, GL_ARB_texture_buffer_range, GL_ARB_robust_buffer_access_behavior, GL_ARB_texture_storage_multisample, GL_EXT_texture_env_dot3, GL_NV_compute_shader_derivatives, GL_ARB_vertex_type_10f_11f_11f_rev, GL_EXT_texture_sRGB, GL_EXT_secondary_color, GL_EXT_point_parameters, GL_ARB_shader_image_load_store, GL_EXT_pixel_buffer_object, GL_ARB_explicit_attrib_location, GL_ARB_internalformat_query2, GL_ARB_seamless_cube_map, GL_ARB_draw_instanced, GL_ARB_draw_buffers_blend, GL_NV_sample_locations, GL_ARB_post_depth_coverage, GL_NV_fragment_coverage_to_color, GL_EXT_draw_instanced, GL_ARB_pipeline_statistics_query, GL_NV_texture_rectangle_compressed, GL_ARB_framebuffer_object, GL_ARB_internalformat_query, GL_OVR_multiview, GL_EXT_texture_mirror_clamp, GL_ARB_texture_rectangle, GL_ARB_gpu_shader5, GL_EXT_gpu_shader4, GL_ARB_compute_shader, GL_AMD_seamless_cubemap_per_texture, GL_NV_fog_distance, GL_EXT_multiview_texture_multisample, GL_ARB_spirv_extensions, GL_ARB_depth_clamp, GL_KHR_robust_buffer_access_behavior, GL_NV_texture_shader, GL_NV_shader_thread_group, GL_NV_float_buffer, GL_ARB_vertex_type_2_10_10_10_rev, GL_KHR_blend_equation_advanced_coherent, GL_AMD_vertex_shader_viewport_index, GL_ARB_shader_storage_buffer_object, GL_NV_conditional_render, GL_ARB_vertex_program, GL_ARB_enhanced_layouts, GL_ARB_compute_variable_group_size, GL_NV_bindless_texture, GL_ARB_draw_indirect, GL_ARB_arrays_of_arrays, GL_NV_multisample_filter_hint, GL_ARB_indirect_parameters, GL_ARB_viewport_array, GL_NV_point_sprite, GL_ARB_texture_storage, GL_NV_geometry_shader4, GL_EXT_semaphore, GL_ARB_texture_swizzle, GL_ARB_sparse_texture2, GL_EXT_texture_lod_bias, GL_EXT_semaphore_win32, GL_EXT_abgr, GL_NV_viewport_array2, GL_ARB_vertex_shader, GL_ARB_vertex_attrib_binding, GL_NV_transform_feedback2, GL_ARB_depth_texture, GL_NV_query_resource_tag, GL_NV_vertex_program, GL_NV_blend_equation_advanced, GL_EXT_framebuffer_sRGB, GL_ARB_shader_atomic_counter_ops, GL_ARB_copy_buffer, GL_NV_depth_buffer_float, GL_EXT_raster_multisample, GL_ARB_pixel_buffer_object, GL_NV_explicit_multisample, GL_EXT_texture_buffer_object, GL_EXT_blend_func_separate, GL_ARB_fragment_shader_interlock, GL_NV_command_list, GL_NV_geometry_shader_passthrough, GL_NV_draw_texture, GL_EXT_vertex_attrib_64bit, GL_NV_timeline_semaphore, GL_EXT_rescale_normal, GL_ARB_sample_shading, GL_ARB_shader_bit_encoding, GL_KHR_context_flush_control, GL_EXT_shader_integer_mix, GL_NV_bindless_multi_draw_indirect_count, GL_ARB_debug_output, GL_ARB_conditional_render_inverted
13:05:52.515 [rendering.opengl.shader.support]: Shaders are supported.
13:05:52.538 [searchPaths.dumpAll]: Resource paths:
Resources
13:05:52.541 [MSAA.setup]: Multisample anti-aliasing not requested.
13:05:52.677 [shipData.load.begin]: Loading ship data.
13:05:53.040 [gameView.isOutputDisplayHDREnabled]: ----- WARNING: Received 0x80070057 while attempting to detect HDR mode using Advanced Color Info 2 API. Retrying detection using legacy API.
13:05:53.040 [unclassified.MyOpenGLView]: Failed at checkpoint #1. monitorDevicePath: \\?\DISPLAY#GSM5B71#4&1991b1ff&1&UID4194565#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}, wcsPrimaryDeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
13:05:53.040 [gameView.isOutputDisplayHDREnabled]: ----- WARNING: Received 0x80070057 while attempting to detect HDR mode using Advanced Color Info 2 API. Retrying detection using legacy API.
13:05:53.040 [unclassified.MyOpenGLView]: Failed at checkpoint #1. monitorDevicePath: \\?\DISPLAY#AUS24A3#4&1991b1ff&1&UID4194560#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}, wcsPrimaryDeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
13:05:53.040 [gameView.isOutputDisplayHDREnabled]: HDR display output requested - checking availability: NO
13:05:58.468 [display.initGL]: Requested a new surface of 1280 x 720, windowed.
13:05:58.498 [display.initGL]: Created a new surface of 1280 x 720, windowed.
13:05:58.521 [startup.complete]: ========== Loading complete in 6.51 seconds. ==========
13:06:04.583 [exit.context]: Exiting: Exit Game selected on start screen.
13:06:04.586 [gameController.exitApp]: .GNUstepDefaults synchronized.
Closing log at 2025-07-27 13:06:04 -0400.
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
Interesting, I think the VM may be doing something bad here... Let's go through what is happening:
First off, as per your dxdiag data your primary monitor is indeed the GSM5B71 with HDR support enabled. Now, this is what Oolite gets back from Windows when requesting the ID of the monitor that Windows sees as primary:
We don't care too much about the entirety of the string, we just focus on the part that reads DISPLAY#GSM5B55. This is wrong. It should read DISPLAY#GSM5B71 and it is the OS that is returning this value so Oolite has no control over it. In your dxdiag file there is no mention of any GSM5B55 anywhere.
When we check for HDR capabilities, we first request the ID of the primary monitor using the EnumDisplayDevices API and then, for every monitor in the system, we compare its ID (as reported by the newer DisplayConfig Windows API) to the primary monitor's one that we requested earlier. We effectively use the ID string from the two methods as a way to bridge their information and combine it. When the primary monitor is found, its properties are queried and the final judgement on HDR support is made by Oolite. Only in this case we fail at comparing ID strings for both monitors. So Oolite does not see a primary one. This is why you are getting the warning message. For reference, the strings returned from the DisplayConfig API are:which contain the correct references to the two monitors present.
I will try to find information about the value returned by Windows as the monitor ID to see if I may have missed something, but I highly doubt it. I am more inclined to think that the VM is getting it messed up somewhere. I would also suggest investigating the possibility of using a different Windows VM, as the one you have installed is a very old Windows 10 version.
First off, as per your dxdiag data your primary monitor is indeed the GSM5B71 with HDR support enabled. Now, this is what Oolite gets back from Windows when requesting the ID of the monitor that Windows sees as primary:
\\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
We don't care too much about the entirety of the string, we just focus on the part that reads DISPLAY#GSM5B55. This is wrong. It should read DISPLAY#GSM5B71 and it is the OS that is returning this value so Oolite has no control over it. In your dxdiag file there is no mention of any GSM5B55 anywhere.
When we check for HDR capabilities, we first request the ID of the primary monitor using the EnumDisplayDevices API and then, for every monitor in the system, we compare its ID (as reported by the newer DisplayConfig Windows API) to the primary monitor's one that we requested earlier. We effectively use the ID string from the two methods as a way to bridge their information and combine it. When the primary monitor is found, its properties are queried and the final judgement on HDR support is made by Oolite. Only in this case we fail at comparing ID strings for both monitors. So Oolite does not see a primary one. This is why you are getting the warning message. For reference, the strings returned from the DisplayConfig API are:
Code: Select all
\\?\DISPLAY#GSM5B71#4&1991b1ff&1&UID4194565#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
\\?\DISPLAY#AUS24A3#4&1991b1ff&1&UID4194560#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
I will try to find information about the value returned by Windows as the monitor ID to see if I may have missed something, but I highly doubt it. I am more inclined to think that the VM is getting it messed up somewhere. I would also suggest investigating the possibility of using a different Windows VM, as the one you have installed is a very old Windows 10 version.
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
I looked through the Device Manager at the monitors registered with WIndows. "GSM5B55" monitor seems to be the disabled monitor (reported as "LG FULL HD") also fed by RTX 2070 SUPER (my third monitor, non-HDR). Incidentally, that's also the (Linux) monitor (which is running through iGPU) where the VM is launched from (active over iGPU in the host OS).
I totally agree with you that this VM, besides hosting an old version of Windows, has its quirks. But anything less than a new version of Slackware is very likely to trigger any "fix it, although ain't really broken" act on my part. Its main purpose is to act for GPU passthrough, and it does that quite well.
I tried to upgrade the VM sometimes back (when I was trying to look into getting rid of these quirks), but that didn't seem to do any good at that time. I'd guess my best bet will be a totally new VM, but as I said, that won't happen too soon.
I totally agree with you that this VM, besides hosting an old version of Windows, has its quirks. But anything less than a new version of Slackware is very likely to trigger any "fix it, although ain't really broken" act on my part. Its main purpose is to act for GPU passthrough, and it does that quite well.
I tried to upgrade the VM sometimes back (when I was trying to look into getting rid of these quirks), but that didn't seem to do any good at that time. I'd guess my best bet will be a totally new VM, but as I said, that won't happen too soon.
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
No worries, but maybe we can still save this. Can you try running this little utility I just found on github and compiled? It will reveal all display adapters and monitors and - here is the good part - the state flags associated with each monitor. It would be interesting to see what exactly it reports for the disabled primary LG Full HD.
Link: https://www.filemail.com/d/urmcpsulrsujkbd
Link: https://www.filemail.com/d/urmcpsulrsujkbd
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
I have one more test build to test if you want. @phkb, you may want to test this one as well as I have changed the detection logic a bit.
I simplified the detection by not caring about the primary device ID at all. Rather than trying to get that and failing when particular VM setups are involved, I am now getting the device ID of the monitor the game window is located when we start up. This should be the primary anyway, but even if it isn't it doesn't matter. We are just getting the ID of the monitor the game is launching on. That is what gets checked against the DisplayConfig API data. If that monitor supports HDR we are good.
Download for the test build: https://www.filemail.com/d/pibivdlijhflnly
I simplified the detection by not caring about the primary device ID at all. Rather than trying to get that and failing when particular VM setups are involved, I am now getting the device ID of the monitor the game window is located when we start up. This should be the primary anyway, but even if it isn't it doesn't matter. We are just getting the ID of the monitor the game is launching on. That is what gets checked against the DisplayConfig API data. If that monitor supports HDR we are good.
Download for the test build: https://www.filemail.com/d/pibivdlijhflnly
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
Nope, it seems the method still detected the disabled monitor. Log's second half for confirmation:
I'm not sure if it's relevant, but I have a free Windows app (ControlMyMonitor) I used some times back to compare with Linux readings on some DDC/CI concerns I had. This app is reporting my two enabled monitors as \\.\DISPLAY1\Monitor1 and \\.\DISPLAY2\Monitor1.
Code: Select all
08:43:35.117 [dataCache.notFound]: No data cache found, starting from scratch.
08:43:35.118 [searchPaths.dumpAll]: Resource paths:
Resources
08:43:35.140 [MSAA.setup]: Multisample anti-aliasing not requested.
08:43:35.356 [shipData.load.begin]: Loading ship data.
08:43:35.994 [unclassified.MyOpenGLView]: We are running on monitor \\.\DISPLAY1
08:43:35.997 [unclassified.MyOpenGLView]: Our monitor's ID is \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
08:43:35.997 [gameView.isOutputDisplayHDREnabled]: ----- WARNING: Received 0x80070057 while attempting to detect HDR mode using Advanced Color Info 2 API. Retrying detection using legacy API.
08:43:35.997 [gameView.isOutputDisplayHDREnabled]: ----- WARNING: Received 0x80070057 while attempting to detect HDR mode using Advanced Color Info 2 API. Retrying detection using legacy API.
08:43:35.997 [gameView.isOutputDisplayHDREnabled]: HDR display output requested - checking availability: NO
08:43:45.786 [display.initGL]: Requested a new surface of 1280 x 720, windowed.
08:43:45.833 [display.initGL]: Created a new surface of 1280 x 720, windowed.
08:43:45.851 [startup.complete]: ========== Loading complete in 11.43 seconds. ==========
08:43:47.941 [exit.context]: Exiting: Exit Game selected on start screen.
08:43:47.944 [gameController.exitApp]: .GNUstepDefaults synchronized.
Closing log at 2025-07-28 08:43:47 -0400.
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
Oh, that is disappointing. Just to be sure, in the VM under Windows settings->Display the GSM is marked as the primary monitor, correct?
I guess we'll have to live with this mis-detection under certain VM setups, I have run out of ideas. If anyone thinks of something else we could try, feel free to provide suggestions.
I guess we'll have to live with this mis-detection under certain VM setups, I have run out of ideas. If anyone thinks of something else we could try, feel free to provide suggestions.
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
Yes, the "GSM5B71" (not the detected "GSM5B55") is the primary monitor. Somehow, though, both Windows Settings and NVidia Control Panel report it as display no. 2. But it's marked as primary in both places.another_commander wrote: ↑Mon Jul 28, 2025 1:05 pmOh, that is disappointing. Just to be sure, in the VM under Windows settings->Display the GSM is marked as the primary monitor, correct?
[...]
A reminder is that "GSM5B71" was the monitorDevicePath (which seems to address the correct device) while "GSM5B55" was the wcsPrimaryDeviceID for both "device paths" detected.
One other thing I noticed, is that although both Windows Settings and NVidia Control Panel show only 2 monitors as available for the graphics card (and I can check for the 2 disabled in Windows Settings/Display/Advanced display settings/Choose display), Windows' hardware manager shows all 4 monitor devices available. In hardware manager there is no disable option for the monitors, only uninstall. All 4 monitors listed are of the Generic PnP Monitor kind, with common driver in "monitor.inf".
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
Can you please send the output of the little utility linked a few posts up? I think it would really help with understanding what is happening.
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
I guess the best outputs related with IDing the monitors are these:another_commander wrote: ↑Mon Jul 28, 2025 1:56 pmCan you please send the output of the little utility linked a few posts up? I think it would really help with understanding what is happening.
Code: Select all
Monitor Device Name: "\\.\DISPLAY1\Monitor1"
Monitor Name: "27GL650F"
Serial Number: ""
Adapter Name: "NVIDIA GeForce RTX 2070 SUPER"
Monitor ID: "MONITOR\GSM5B71\{4d36e96e-e325-11ce-bfc1-08002be10318}\0014"
Short Monitor ID: "GSM5B71"
Monitor Device Name: "\\.\DISPLAY2\Monitor1"
Monitor Name: "MG248"
Serial Number: "J4LMQS035382"
Adapter Name: "NVIDIA GeForce RTX 2070 SUPER"
Monitor ID: "MONITOR\AUS24A3\{4d36e96e-e325-11ce-bfc1-08002be10318}\0015"
Short Monitor ID: "AUS24A3"
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
Thanks but I was actually talking about this one here: https://www.filemail.com/d/urmcpsulrsujkbd
Run it in a cmd window and you can also send the output to a file like
Run it in a cmd window and you can also send the output to a file like
Code: Select all
enumdisp.exe > enumdispResult.txt
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
Sorry, I thought it was about the little utility I mentioned.another_commander wrote: ↑Mon Jul 28, 2025 7:33 pmThanks but I was actually talking about this one here: https://www.filemail.com/d/urmcpsulrsujkbd
Run it in a cmd window and you can also send the output to a file likeCode: Select all
enumdisp.exe > enumdispResult.txt
Here's the output of the one you linked:
Code: Select all
EnumDisplayDevices i: 0
cb: 840
DeviceName: \\.\DISPLAY5
DeviceString: Microsoft Basic Display Adapter
StateFlags: 134217728
DeviceID: PCI\VEN_1234&DEV_1111&SUBSYS_11001AF4&REV_02
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{98750937-E9E3-11EC-9519-806E6F6E6963}\0000
Attached monitor i: 0 of device 0
cb: 840
DeviceName: \\.\DISPLAY5\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#RHT1234#4&27b1e55b&0&UID0#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0000
EnumDisplayDevices i: 1
cb: 840
DeviceName: \\.\DISPLAY1
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 5
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0000
attached to desktop
device primary device
display active
Attached monitor i: 0 of device 1
cb: 840
DeviceName: \\.\DISPLAY1\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
Attached monitor i: 1 of device 1
cb: 840
DeviceName: \\.\DISPLAY1\Monitor1
DeviceString: Generic PnP Monitor
StateFlags: 3
DeviceID: \\?\DISPLAY#GSM5B71#4&1991b1ff&1&UID4194565#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0014
EnumDisplayDevices i: 2
cb: 840
DeviceName: \\.\DISPLAY2
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 1
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0001
attached to desktop
display active
Attached monitor i: 0 of device 2
cb: 840
DeviceName: \\.\DISPLAY2\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
Attached monitor i: 1 of device 2
cb: 840
DeviceName: \\.\DISPLAY2\Monitor1
DeviceString: Generic PnP Monitor
StateFlags: 3
DeviceID: \\?\DISPLAY#AUS24A3#4&1991b1ff&1&UID4194560#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0015
EnumDisplayDevices i: 3
cb: 840
DeviceName: \\.\DISPLAY3
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 0
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0002
Attached monitor i: 0 of device 3
cb: 840
DeviceName: \\.\DISPLAY3\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
EnumDisplayDevices i: 4
cb: 840
DeviceName: \\.\DISPLAY4
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 0
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0003
Attached monitor i: 0 of device 4
cb: 840
DeviceName: \\.\DISPLAY4\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
EnumDisplayMonitors index 0 \\.\DISPLAY1 y: 0 to 1080 x: 0 to 1920
EnumDisplayMonitors index 1 \\.\DISPLAY2 y: 0 to 1080 x: 1920 to 3840
I'm wondering if the StateFlags for displays/monitors reflect somehow their statuses.
-
- Quite Grand Sub-Admiral
- Posts: 6916
- Joined: Wed Feb 28, 2007 7:54 am
Re: Oolite on HDR Displays
Very interesting. Can you please try running this version of the utility? I am testing whether we can distinguish the monitor of interest using its reported stateflags.
Download: https://www.filemail.com/d/zrkqsjnlwwntzkv
Download: https://www.filemail.com/d/zrkqsjnlwwntzkv
-
- ---- E L I T E ----
- Posts: 705
- Joined: Sat Aug 09, 2014 4:16 pm
Re: Oolite on HDR Displays
Here are the new results:another_commander wrote: ↑Tue Jul 29, 2025 5:23 amVery interesting. Can you please try running this version of the utility? I am testing whether we can distinguish the monitor of interest using its reported stateflags.
Download: https://www.filemail.com/d/zrkqsjnlwwntzkv
Code: Select all
EnumDisplayDevices i: 0
cb: 840
DeviceName: \\.\DISPLAY5
DeviceString: Microsoft Basic Display Adapter
StateFlags: 134217728
DeviceID: PCI\VEN_1234&DEV_1111&SUBSYS_11001AF4&REV_02
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{98750937-E9E3-11EC-9519-806E6F6E6963}\0000
Attached monitor i: 0 of device 0
cb: 840
DeviceName: \\.\DISPLAY5\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#RHT1234#4&27b1e55b&0&UID0#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0000
EnumDisplayDevices i: 1
cb: 840
DeviceName: \\.\DISPLAY1
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 5
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0000
attached to desktop
device primary device
display active
Attached monitor i: 0 of device 1
cb: 840
DeviceName: \\.\DISPLAY1\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
device primary monitor
monitor attached to desktop
Attached monitor i: 1 of device 1
cb: 840
DeviceName: \\.\DISPLAY1\Monitor1
DeviceString: Generic PnP Monitor
StateFlags: 3
DeviceID: \\?\DISPLAY#GSM5B71#4&1991b1ff&1&UID4194565#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0014
device primary monitor
monitor attached to desktop
EnumDisplayDevices i: 2
cb: 840
DeviceName: \\.\DISPLAY2
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 1
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0001
attached to desktop
display active
Attached monitor i: 0 of device 2
cb: 840
DeviceName: \\.\DISPLAY2\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
monitor attached to desktop
Attached monitor i: 1 of device 2
cb: 840
DeviceName: \\.\DISPLAY2\Monitor1
DeviceString: Generic PnP Monitor
StateFlags: 3
DeviceID: \\?\DISPLAY#AUS24A3#4&1991b1ff&1&UID4194560#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0015
monitor attached to desktop
EnumDisplayDevices i: 3
cb: 840
DeviceName: \\.\DISPLAY3
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 0
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0002
Attached monitor i: 0 of device 3
cb: 840
DeviceName: \\.\DISPLAY3\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
EnumDisplayDevices i: 4
cb: 840
DeviceName: \\.\DISPLAY4
DeviceString: NVIDIA GeForce RTX 2070 SUPER
StateFlags: 0
DeviceID: PCI\VEN_10DE&DEV_1E84&SUBSYS_87081043&REV_A1
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Video\{09F77703-97E3-11EF-95DE-F072755928E2}\0003
Attached monitor i: 0 of device 4
cb: 840
DeviceName: \\.\DISPLAY4\Monitor0
DeviceString: Generic PnP Monitor
StateFlags: 2
DeviceID: \\?\DISPLAY#GSM5B55#4&1991b1ff&1&UID4194562#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
DeviceKey: \Registry\Machine\System\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\0013
EnumDisplayMonitors index 0 \\.\DISPLAY1 y: 0 to 1080 x: 0 to 1920
EnumDisplayMonitors index 1 \\.\DISPLAY2 y: 0 to 1080 x: 1920 to 3840