Bug 110480

Summary: vkcube renders too brightly on radv
Product: Mesa Reporter: oschowa
Component: Drivers/Vulkan/radeonAssignee: mesa-dev
Status: RESOLVED NOTABUG QA Contact: mesa-dev
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: radv
amdvlk
nvidia
vkcube radv vs. amdvlk side by side

Description oschowa 2019-04-21 22:26:40 UTC
vkcude renders brighter with radv as compared to amdvlk, amdvlk-pro and nvidia.
This happens with at least Mesa master, 19.0.2 and 18.3.6.
Comment 1 oschowa 2019-04-21 22:27:30 UTC
Created attachment 144055 [details]
radv
Comment 2 oschowa 2019-04-21 22:27:52 UTC
Created attachment 144056 [details]
amdvlk
Comment 3 oschowa 2019-04-21 22:28:55 UTC
Created attachment 144057 [details]
nvidia
Comment 4 Bas Nieuwenhuizen 2019-04-21 23:49:33 UTC
Created attachment 144058 [details]
vkcube radv vs. amdvlk side by side

See the attachment, for me the colors are equal.

Can I ask

1) which vkcube did you use and where did you get it from? I used github.com/krh/vkcube which AFAIU is the upstream. However, I noted that the cube textures are different so it seems you're using something different.

2) What windowing system do you use. Is this X11? Wayland? Xwayland? directly to display? HDR colors?
Comment 5 Alexander Tsoy 2019-04-21 23:52:54 UTC
(In reply to Bas Nieuwenhuizen from comment #4)
> 1) which vkcube did you use and where did you get it from?
It's vkcube from vulkan-tools:
https://github.com/KhronosGroup/Vulkan-Tools
Comment 6 Bas Nieuwenhuizen 2019-04-22 00:02:39 UTC
Okay, looks like there is

https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c

This demo picks the first surface format provided by the driver.

Looking at AMDVLK (with vulkaninfo, under "Presentable Surfaces"):

GPU id       : 0 (Radeon RX Vega)
Surface type : VK_KHR_xcb_surface
Formats:                count = 2
        B8G8R8A8_UNORM
        B8G8R8A8_SRGB

Looking at radv:

GPU id       : 0 (AMD RADV VEGA10 (LLVM 9.0.0))
Surface type : VK_KHR_xcb_surface
Formats:                count = 2
        B8G8R8A8_SRGB
        B8G8R8A8_UNORM


So the first format chosen is just different.

Whether any app should choose _SRGB or _UNORM is more complicated (as UNORM images are typically still interpreted by the windowing system as SRGB, but _SRGB gives you automatic linear->srgb color conversions during rendering. Doing one of those conversion typically makes everything all lighter or all darker)

Closing assuming this is the vkcube you referenced. You'll likely find Intel has the same behavior as radv.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.