Datoviz demo showing pure white screen
OS: Linux Mint (Using BSP WM if it matters) Error message: None GPU Info:
04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 1638 (rev c4) (prog-if 00 [VGA controller])
Subsystem: Razer USA Ltd. Device 2014
Flags: bus master, fast devsel, latency 0, IRQ 58
Memory at fc10000000 (64-bit, prefetchable) [size=256M]
Memory at fc20000000 (64-bit, prefetchable) [size=2M]
I/O ports at e000 [size=256]
Memory at fc500000 (32-bit, non-prefetchable) [size=512K]
Kernel driver in use: amdgpu
Kernel modules: amdgpu
I'm very interested in using the Datoviz library in an upcoming project. However I am encountering a problem: the render window is showing purely white other than ImGUI windows. I loaded the datoviz library in a pipenv virtual enviornment, and reinstalled GLFW with pipenv install glfw, but the issue persists. The issue is persisting no matter what datoviz code I attempt to run. I have tried both the demo and various examples. There is no error message or information being provided. A screenshot is below; any help would be very greatly appreciated
Output of datoviz.demo()
I'd be curious to know whether the same issue arises if you build Datoviz from source and try using it from C directly by following steps 1 to 10 here (i.e. up to ./manage.sh demo scatter )
What is your hardware specification?
I'll try building it from source right now. This is a stupid question, but what exactly do you mean by hardware specification?
I mean what PC is this, a laptop, a desktop? Which hardware configuration and in particular which GPU?
Something else that could help: install vulkaninfo and post the output here (see https://linuxconfig.org/install-and-test-vulkan-on-linux)
Oh, my bad. I'm on a laptop, using an AMD Ryzen GPU. Currently trying to install the Vulkan SDK to build from source.
Got the same problem here, on an AMD Ryzen KUbuntu 23.10 laptop using vulkan-sdk :
(.pylocal) catseye@pulse-g2:/data/src/viz/datoviz/build$ dpkg -l | grep vulkan
ii libvulkan-dev:amd64 1.3.268.0~rc1-1lunarg22.04-1 amd64 This package contains the Vulkan loader
ii libvulkan1:amd64 1.3.268.0~rc1-1lunarg22.04-1 amd64 This package contains the Vulkan loader
ii lunarg-vulkan-layers 1.3.268.0~rc1-1lunarg22.04-1 amd64 Extra Vulkan development layers from LunarG
ii mesa-vulkan-drivers:amd64 23.2.1-1ubuntu3.1 amd64 Mesa Vulkan graphics drivers
ii vulkan-extensionlayer 1.3.268.0~rc1-1lunarg22.04-1 amd64 Layers providing Vulkan features when native support is unavailable
ii vulkan-headers 1.3.268.0~rc1-1lunarg22.04-1 all Vulkan header files and API registry
ii vulkan-profiles 1.3.268.0~rc1-1lunarg22.04-1 amd64 Collection of tools to leverage Vulkan Profiles
ii vulkan-sdk 1.3.268.0~rc1-1lunarg22.04-1 all Tools and runtime for Vulkan development.The Vulkan
ii vulkan-tools 1.3.268.0~rc2-1lunarg22.04-1 amd64 This project provides Vulkan tools and utilities that can
ii vulkan-utility-libraries 1.3.268.0~rc1-1lunarg22.04-1 amd64 Utility Libraries for various
ii vulkan-utility-libraries-dev 1.3.268.0~rc1-1lunarg22.04-1 amd64 Utility Libraries for various
ii vulkan-validationlayers 1.3.268.0~rc2-1lunarg22.04-1 amd64 Vulkan is an Explicit API, enabling direct control over how GPUs actually
ii vulkancapsviewer 3.32~rc1-1lunarg22.04-1 amd64 Client application to display
it used to work albeit with a datoviz crash once in a while with a previous non-KDE ubuntu and vulkan-sdk binary tarball 1.3.224.
lspci -v:
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne (rev c1) (prog-if 00 [VGA controller])
Subsystem: Tongfang Hongkong Limited Lucienne
Flags: bus master, fast devsel, latency 0, IRQ 46, IOMMU group 13
Memory at d0000000 (64-bit, prefetchable) [size=256M]
Memory at e0000000 (64-bit, prefetchable) [size=2M]
I/O ports at e000 [size=256]
Memory at fcc00000 (32-bit, non-prefetchable) [size=512K]
Capabilities: <access denied>
Kernel driver in use: amdgpu
Kernel modules: amdgpu
(.pylocal) catseye@pulse-g2:/data/src/viz/datoviz/build$ vulkaninfo > vulkaninfo.txt
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 0. Skipping ICD.
datoviz is compiled from source using ./manage build
(.pylocal) catseye@pulse-g2:/data/src/viz/datoviz$ ./manage.sh demo scatter
13:20:29.004 I main.c:0051: running scatter plot demo with 50000 points
13:20:29.262 W vklite_utils.h:0280: validation layer: terminator_CreateInstance: Failed to CreateInstance in ICD 0. Skipping ICD.
13:20:29.400 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-TransitionUndefinedToReadOnly ] | MessageID = 0x9f63e654 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] VkImageMemoryBarrier is being submitted with oldLayout VK_IMAGE_LAYOUT_UNDEFINED and the contents may be discarded, but the newLayout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, which is read only.
13:20:29.400 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-ImageBarrierAccessLayout ] | MessageID = 0x849fcec7 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] image is VkImage 0x9fde6b0000000014[] and accessMask is VK_ACCESS_2_TRANSFER_READ_BIT, but for layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL expected accessMask are VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
13:20:29.404 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-ImageBarrierAccessLayout ] | MessageID = 0x849fcec7 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] image is VkImage 0x9fde6b0000000014[] and accessMask is VK_ACCESS_2_MEMORY_READ_BIT, but for layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL expected accessMask are VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
13:20:29.408 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-TransitionUndefinedToReadOnly ] | MessageID = 0x9f63e654 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] VkImageMemoryBarrier is being submitted with oldLayout VK_IMAGE_LAYOUT_UNDEFINED and the contents may be discarded, but the newLayout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, which is read only.
13:20:29.408 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-ImageBarrierAccessLayout ] | MessageID = 0x849fcec7 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] image is VkImage 0x95a125000000001a[] and accessMask is VK_ACCESS_2_TRANSFER_READ_BIT, but for layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL expected accessMask are VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
13:20:29.409 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-ImageBarrierAccessLayout ] | MessageID = 0x849fcec7 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] image is VkImage 0x95a125000000001a[] and accessMask is VK_ACCESS_2_MEMORY_READ_BIT, but for layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL expected accessMask are VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
13:20:29.424 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-TransitionUndefinedToReadOnly ] | MessageID = 0x9f63e654 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] VkImageMemoryBarrier is being submitted with oldLayout VK_IMAGE_LAYOUT_UNDEFINED and the contents may be discarded, but the newLayout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, which is read only.
13:20:29.424 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-ImageBarrierAccessLayout ] | MessageID = 0x849fcec7 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] image is VkImage 0xab64de0000000020[] and accessMask is VK_ACCESS_2_TRANSFER_READ_BIT, but for layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL expected accessMask are VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
13:20:29.426 W vklite_utils.h:0280: validation layer: Validation Warning: [ UNASSIGNED-BestPractices-ImageBarrierAccessLayout ] | MessageID = 0x849fcec7 | vkCmdPipelineBarrier(): pImageMemoryBarriers[0] image is VkImage 0xab64de0000000020[] and accessMask is VK_ACCESS_2_MEMORY_READ_BIT, but for layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL expected accessMask are VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
shows a white window.
vkcube and vkgears works fine.
N.B.: ./manage demo gui works fine.
The attached log file is the result of running ./manage.sh test > test-log.txt 2>&1
This laptop (not a VM like the author of this issue) seems to have a very low cost GPU.
Since I see two GPU on this laptop, the hardware integrated Ryzen one and the mesa llvmpipe, I've tried to force the use of the hardware one by changing line 16 of demo.c to :
DvzGpu* gpu = dvz_gpu(app, 0);
with no luck.
Oops the authors of this issue is not on a VM, my bad, and otherwise most of the tests displaying something simple to the screen works fine, it's only the scatter and mandelbrot demo showing a blank screen. The email I use for reading the notifications is now read, was at fault before.
Building mesa git from source and lunarg vulkan loader does not fix the issue for the scatter demo but I would need a switch to pass to the tests to select a GPU different than what is selected by dvz_gpu_best() cause now I've 4 GPUs, mesa ubuntu, mesa git, plus its llvmpipe each time.