Question about the Vulkan capable emulators

Talking about OS and emulation core development
Post Reply
User avatar
odroid
Site Admin
Posts: 38033
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1999 times
Been thanked: 1206 times
Contact:

Question about the Vulkan capable emulators

Post by odroid »

We are trying to add the Vulkan API in to the Mali-G31 GPU driver by helping from Rockchip people.
But we don't know well which emulators(or cores) can utilized the Vulkan feature.

As far as I know, the PPSSPP and Dolphin emulators have an option to choose the Vulkan as a rendering backend.
Is there any other emulators can support the Vulkan backend?
These users thanked the author odroid for the post (total 2):
AreaScout (Sat Jan 23, 2021 6:45 am) • shanti (Mon Jan 25, 2021 3:46 am)

User avatar
meveric
Posts: 11612
Joined: Mon Feb 25, 2013 2:41 pm
languages_spoken: german, english
ODROIDs: X2, U2, U3, XU-Lite, XU3, XU3-Lite, C1, XU4, C2, C1+, XU4Q, HC1, N1, Go, H2 (N4100), N2, H2 (J4105), GoA, C4, GoA v1.1, H2+, HC4, GoS
Has thanked: 71 times
Been thanked: 514 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by meveric »

retroarch can use vulkan as a backend as well, so all emulators running through retroarch should be able to run via vulkan as well.
Donate to support my work on the ODROID GameStation Turbo Image for U2/U3 XU3/XU4 X2 X C1 as well as many other releases.
Check out the Games and Emulators section to find some of my work or check the files in my repository to find the software i build for ODROIDs.
If you want to add my repository to your image read my HOWTO integrate my repo into your image.

Shoesy
Posts: 93
Joined: Sat Jul 18, 2020 1:26 am
languages_spoken: english
ODROIDs: Odroid Go Advance
Has thanked: 9 times
Been thanked: 8 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by Shoesy »

Well this is exciting news :D

kavag
Posts: 11
Joined: Mon Feb 17, 2020 1:56 am
languages_spoken: english
ODROIDs: go advance
Has thanked: 5 times
Been thanked: 1 time
Contact:

Re: Question about the Vulkan capable emulators.

Post by kavag »

Duckstation supports Vulkan.

crashoverride
Posts: 5407
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 465 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by crashoverride »

The flycast (Dreamcast) libretro core should also support Vulkan:
https://github.com/libretro/flycast/tre ... end/vulkan

User avatar
odroid
Site Admin
Posts: 38033
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1999 times
Been thanked: 1206 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by odroid »

Thank you for the answers. There are many reasons why we have to keep trying that. ;)

BTW, is there any simple way to check any actual functionality and performance of the Vulkan?
Is there glmark2-es2-drm or similar one including the Vulkan backend?

crashoverride
Posts: 5407
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 465 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by crashoverride »

There is vkmark. It is similar to glmark2.
https://github.com/vkmark/vkmark
These users thanked the author crashoverride for the post (total 2):
odroid (Mon Jan 25, 2021 11:25 am) • joy (Mon Jan 25, 2021 11:21 pm)

macromorgan
Posts: 116
Joined: Mon Dec 30, 2019 10:35 am
languages_spoken: english
ODROIDs: Odroid-GO
Has thanked: 6 times
Been thanked: 45 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by macromorgan »

While you're talking with Rockchip, can you find out if they have a 5.4 (or maybe even a 5.10) kernel in one of their BSPs?

User avatar
odroid
Site Admin
Posts: 38033
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English, Korean
ODROIDs: ODROID
Has thanked: 1999 times
Been thanked: 1206 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by odroid »

They have no firm plan to update the kernel version in the Linux BSP.

Slaminger
Posts: 292
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 25 times
Been thanked: 78 times
Contact:

Re: Question about the Vulkan capable emulators.

Post by Slaminger »

Retroarch, PPSSPP, Duckstation, some builds of moonlight, dolphin, MAME has a bgfx vulkan back end.

darkclone
Posts: 1
Joined: Thu Jan 28, 2021 7:42 am
languages_spoken: english
Has thanked: 1 time
Been thanked: 0
Contact:

Re: Question about the Vulkan capable emulators.

Post by darkclone »

Ordered an OGS yesterday, excited to see development on a vulkan driver for the unit!
Would love tinkering with a project of mine running on vulkan on an arm device.

joy
Posts: 1584
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: .
Has thanked: 179 times
Been thanked: 210 times

Re: Question about the Vulkan capable emulators.

Post by joy »

Hi all,
We added patches to support Vulkan API on RK3326.
Please refer to this wiki page.
https://wiki.odroid.com/odroid_go_advan ... _on_rk3326

[ Apply Patches ]

Code: Select all

release_r13p0_20200103 version
1. Kernel Patch
Kernel patch of bifrost_for_linux is uploaded in HK Github.

Code: Select all

drivers/gpu/arm/bifrost_for_linux
https://github.com/hardkernel/linux/com ... ba2a0bfa49

2. libmali Patch
And you need to replace libmali.so a.k.a libmali-bifrost-g31-rxp0-gbm.so with the new so file.

Code: Select all

$ wget https://dn.odroid.com/RK3326/ODROID-GO-Advance/rk3326_r13p0_gbm_with_vulkan_and_cl.zip
$ unzip rk3326_r13p0_gbm_with_vulkan_and_cl.zip
$ ls
libmali.so_rk3326_gbm_arm32_r13p0_with_vulkan_and_cl  libmali.so_rk3326_gbm_arm64_r13p0_with_vulkan_and_cl

Code: Select all

$ sudo rm /usr/local/lib/aarch64-linux-gnu/libmali-bifrost-g31-rxp0-gbm.so
$ sudo cp libmali.so_rk3326_gbm_arm64_r13p0_with_vulkan_and_cl  /usr/local/lib/aarch64-linux-gnu/libmali-bifrost-g31-rxp0-gbm.so
 
$ sudo rm /usr/local/lib/arm-linux-gnueabihf/libmali-bifrost-g31-rxp0-gbm.so
$ sudo cp libmali.so_rk3326_gbm_arm32_r13p0_with_vulkan_and_cl  /usr/local/lib/arm-linux-gnueabihf/libmali-bifrost-g31-rxp0-gbm.so
We've confirmed vulkaninfo output, but so far there is no further progress to run vkmark or other benchmark for Vulkan.
We hope many users who are interested in this task join here
and check how related emulators' performance improves with Vulkan. :)
These users thanked the author joy for the post (total 2):
AreaScout (Wed Feb 03, 2021 6:04 pm) • notime2d8 (Wed Feb 03, 2021 9:47 pm)

AreaScout
Posts: 1718
Joined: Sun Jul 07, 2013 3:05 am
languages_spoken: german, english
ODROIDs: X2, U3, XU3, C2, HiFi Shield, XU4, XU4Q,
N1, Go, VU5A, Show2, CloudShell2,
H2, N2, VU7A, VuShell, Go2, C4
Has thanked: 103 times
Been thanked: 317 times
Contact:

Re: Question about the Vulkan capable emulators

Post by AreaScout »

    This is world premier for Hardkernel !! This are the first vulkan binary blobs for Linux, never ever in history we had one, but now -> hurray !!

    Looking forward to test it :)

    RG

    AreaScout
    Posts: 1718
    Joined: Sun Jul 07, 2013 3:05 am
    languages_spoken: german, english
    ODROIDs: X2, U3, XU3, C2, HiFi Shield, XU4, XU4Q,
    N1, Go, VU5A, Show2, CloudShell2,
    H2, N2, VU7A, VuShell, Go2, C4
    Has thanked: 103 times
    Been thanked: 317 times
    Contact:

    Re: Question about the Vulkan capable emulators

    Post by AreaScout »

      @joy

      It doesn't work with current SDL2 and SDL2 test suite

      Code: Select all

      ./testvulkan --info all
      Rga built version:1.04 2134dde+2021-01-04 21:35:13
      INFO: Built-in video drivers: x11, KMSDRM, dummy
      INFO: Couldn't initialize video driver: No available video device
      
      Also I can't get GLESx to work, so SDL2 upstream is either broken or has different problem, I have to test further

      edit: Another question is, did you add the display rotation inside the blob for the vulkan part ? I don't know how to add this with vulkan KMSDRM backend

      edit2: I did the test with latest 2.0.14 (devel) SDL2 which has KMSDRM vulkan backend since December last year

      RG

      Shoesy
      Posts: 93
      Joined: Sat Jul 18, 2020 1:26 am
      languages_spoken: english
      ODROIDs: Odroid Go Advance
      Has thanked: 9 times
      Been thanked: 8 times
      Contact:

      Re: Question about the Vulkan capable emulators

      Post by Shoesy »

      Congrats Odroid team!

      valadaa48
      Posts: 288
      Joined: Mon Feb 17, 2020 1:35 pm
      languages_spoken: english
      ODROIDs: odroid go advance
      Has thanked: 40 times
      Been thanked: 96 times
      Contact:

      Re: Question about the Vulkan capable emulators

      Post by valadaa48 »

      @joy thanks for releasing this!

      I hastily set this up and noticed the following:

      1. glcore in retroarch displays rainbow textures, gl looks OK though
      2. vulkaninfo at least in void linux crashes:

      Code: Select all

      Program received signal SIGSEGV, Segmentation fault.
      0x0000000000000000 in ?? ()
      (gdb) bt
      #0  0x0000000000000000 in ?? () <--- blob driver I think
      #1  0x00000055555b550c in GetVectorInit<VkLayerProperties, VkResult (*&)(unsigned int*, VkLayerProperties*)> (func_name=func_name@entry=0x55555c4c18 "vkEnumerateInstanceLayerProperties", 
          f=@0x7fffffe560: 0x0, init=...) at ../../vulkaninfo/vulkaninfo.h:247
      #2  0x00000055555b75c8 in GetVector<VkLayerProperties, VkResult (*&)(unsigned int*, VkLayerProperties*)> (f=@0x7fffffe560: 0x0, func_name=0x55555c4c18 "vkEnumerateInstanceLayerProperties")
          at ../../vulkaninfo/vulkaninfo.h:259
      #3  AppInstance::AppGetInstanceExtensions (this=0x7fffffe550) at ../../vulkaninfo/vulkaninfo.h:694
      #4  AppInstance::AppInstance (this=0x7fffffe550) at ../../vulkaninfo/vulkaninfo.h:644
      #5  0x00000055555586bc in main (argc=1, argv=0x7ffffff588) at ../../vulkaninfo/vulkaninfo.cpp:931
      
      I only had a few mins to try this out so it could be something on my side. But posting just in case anyone has the same issue or gets any further.

      EDIT: I assume this works in kms/drm and doesn't need us to be in an X11/Wayland context?

      AreaScout
      Posts: 1718
      Joined: Sun Jul 07, 2013 3:05 am
      languages_spoken: german, english
      ODROIDs: X2, U3, XU3, C2, HiFi Shield, XU4, XU4Q,
      N1, Go, VU5A, Show2, CloudShell2,
      H2, N2, VU7A, VuShell, Go2, C4
      Has thanked: 103 times
      Been thanked: 317 times
      Contact:

      Re: Question about the Vulkan capable emulators

      Post by AreaScout »

        Ok I can confirm now two occurrences with latest SDL2:

        https://github.com/bminor/SDL/search?q= ... AVE_LIBDRM

        SDL_KMSDRM_HAVE_LIBDRM and SDL_KMSDRM_HAVE_GBM are not defined anywhere and so this if clause has to be set to if (1) to make KMSDRM backend work -> this is a BUG in current SDL2

        So, if KMSDRM backend is working we have vulkan support for it since December 2020, BUT !! If I start testvulkan tool, I get this:

        Code: Select all

        odroid@goadvance:~/SDL2_up/test$ ./testvulkan
        Rga built version:1.04 2134dde+2021-01-04 21:35:13
        INFO: Couldn't create window: Installed Vulkan doesn't implement the VK_KHR_surface extension 
        
        So in order to have vulkan support under SDL2 we need the VK_KHR_surface extension to be supported by the driver, PPSSPP is using SDL2 and so we must have this extension, maybe there is a workaround for it but I do not know one

        edit: We also need the VK_KHR_displayextension supported by the new binary blob

        edit2: As suspected PPSSPP reports the same problem

        Code: Select all

        odroid@goadvance:~/ppsspp/build$ ./PPSSPPSDL
        Rga built version:1.04 2134dde+2021-01-04 21:35:13
        VulkanMayBeAvailable: Device allowed ('SDL:Linux')
        VulkanMayBeAvailable: Library loaded ('libvulkan.so')
        VulkanMayBeAvailable: Enumerating instance extensions
        VulkanMayBeAvailable: Instance extension count: 4
        VulkanMaybeAvailable: Instance extension found: VK_KHR_get_physical_device_properties2 (00000001)
        VulkanMaybeAvailable: Instance extension found: VK_KHR_external_fence_capabilities (00000001)
        VulkanMaybeAvailable: Instance extension found: VK_KHR_external_semaphore_capabilities (00000001)
        VulkanMaybeAvailable: Instance extension found: VK_KHR_external_memory_capabilities (00000001)
        Surface extension not found
        DEBUG: Vulkan is not available, not using Vulkan.
        Info: We compiled against SDL version 2.0.15 and we are linking against SDL version 2.0.15. :)
        51:33:840 Core/Config.cpp:542 I[G3D]: Longest display side: -1 pixels. Choosing scale 1
        51:33:869 Core/Config.cpp:1306 I[LOADER]: Loading controller config: /home/odroid/.config/ppsspp/PSP/SYSTEM/controls.ini
        51:33:879 Core/Config.cpp:1339 I[LOADER]: Config loaded: '/home/odroid/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
        51:33:945 Core/Config.cpp:1420 I[LOADER]: Config saved (got storage permission): '/home/odroid/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
        51:33:947 Core/Config.cpp:1433 I[LOADER]: Controller config saved: /home/odroid/.config/ppsspp/PSP/SYSTEM/controls.ini
        Pixels: 854 x 480
        Virtual pixels: 854 x 480
        51:34:148 OpenGL/GLFeatures.cpp:194 I[G3D]: GPU Vendor : ARM ; renderer: Mali-G31 version str: OpenGL ES 3.2 v1.r13p0-01rel0.8747d14aec16ec21ac2b2da252c4ec5f ; GLSL version str: OpenGL ES GLSL ES 3.20
        51:34:149 OpenGL/GLFeatures.cpp:305 I[G3D]: OpenGL ES 3.1 support detected!
        
        RG and have fun

        User avatar
        odroid
        Site Admin
        Posts: 38033
        Joined: Fri Feb 22, 2013 11:14 pm
        languages_spoken: English, Korean
        ODROIDs: ODROID
        Has thanked: 1999 times
        Been thanked: 1206 times
        Contact:

        Re: Question about the Vulkan capable emulators

        Post by odroid »

        Thank you for the investigation.
        The number of extensions seems to be quite smaller than our expectation. :( We will check availability of VK_KHR_surface and VK_KHR_display extensions.

        Code: Select all

        Device Extensions: count = 15
        -----------------------------
                VK_KHR_16bit_storage                : extension revision 1
                VK_KHR_dedicated_allocation         : extension revision 3
                VK_KHR_descriptor_update_template   : extension revision 1
                VK_KHR_external_fence               : extension revision 1
                VK_KHR_external_fence_fd            : extension revision 1
                VK_KHR_external_memory              : extension revision 1
                VK_KHR_external_semaphore           : extension revision 1
                VK_KHR_external_semaphore_fd        : extension revision 1
                VK_KHR_get_memory_requirements2     : extension revision 1
                VK_KHR_image_format_list            : extension revision 1
                VK_KHR_maintenance1                 : extension revision 2
                VK_KHR_maintenance2                 : extension revision 1
                VK_KHR_shader_draw_parameters       : extension revision 1
                VK_KHR_storage_buffer_storage_class : extension revision 1
                VK_KHR_variable_pointers            : extension revision 1

        joy
        Posts: 1584
        Joined: Fri Oct 02, 2015 1:44 pm
        languages_spoken: english
        ODROIDs: .
        Has thanked: 179 times
        Been thanked: 210 times

        Re: Question about the Vulkan capable emulators

        Post by joy »

        AreaScout wrote:
        Wed Feb 03, 2021 9:19 pm
        edit: Another question is, did you add the display rotation inside the blob for the vulkan part ? I don't know how to add this with vulkan KMSDRM backend
        @AreaScout,
        No. I just got the patches, (1) kernel bifrost_for_linux (2) libmali, from rockchip
        and didn't modify anything because the library files were delivered to us as 'so' binary type.
        AreaScout wrote:
        Thu Feb 04, 2021 12:40 am
        So in order to have vulkan support under SDL2 we need the VK_KHR_surface extension to be supported by the driver, PPSSPP is using SDL2 and so we must have this extension, maybe there is a workaround for it but I do not know one

        edit: We also need the VK_KHR_displayextension supported by the new binary blob
        Is it new libmali library which should support VK_KHR_displayextension?
        If so, I need to ask the things to Rockchip.

        Is there any other reference that we can refer to normal operation for Vulkan,
        or you've implemented it with the SDL2 without those errors?

        Sorry for my ambiguous question. I don't have much knowledge about Vulkan and related backend.

        joy
        Posts: 1584
        Joined: Fri Oct 02, 2015 1:44 pm
        languages_spoken: english
        ODROIDs: .
        Has thanked: 179 times
        Been thanked: 210 times

        Re: Question about the Vulkan capable emulators

        Post by joy »

        About the missing extensions of VK_KHR_surface and VK_KHR_display,
        we've checked the available extensions on Buildroot to check if this issue is related to Ubuntu library, header or symlink environment,
        and found the extensions are shown on Buildroot even though the libmali so file for Buildroot is same with Ubuntu's one.

        So, it seems we need to figure out which point is missing to load VK_KHR_surface/display normally on Ubuntu.

        Here is the list of Vulkan extension on Buildroot from Vulkaninfo.

        Code: Select all

        Vulkan Instance Version: 1.2.165
        
        
        Instance Extensions: count = 19
        ===============================
                VK_EXT_debug_report                    : extension revision 9
                VK_EXT_debug_utils                     : extension revision 2
                VK_EXT_direct_mode_display             : extension revision 1
                VK_EXT_display_surface_counter         : extension revision 1
                VK_EXT_headless_surface                : extension revision 1
                VK_EXT_swapchain_colorspace            : extension revision 4
                VK_EXT_validation_features             : extension revision 4
                VK_EXT_validation_flags                : extension revision 2
                VK_KHR_device_group_creation           : extension revision 1
                VK_KHR_display                         : extension revision 23
                VK_KHR_external_fence_capabilities     : extension revision 1
                VK_KHR_external_memory_capabilities    : extension revision 1
                VK_KHR_external_semaphore_capabilities : extension revision 1
                VK_KHR_get_display_properties2         : extension revision 1
                VK_KHR_get_physical_device_properties2 : extension revision 2
                VK_KHR_get_surface_capabilities2       : extension revision 1
                VK_KHR_surface                         : extension revision 25
                VK_KHR_surface_protected_capabilities  : extension revision 1
                VK_NV_external_memory_capabilities     : extension revision 1
        
        
        On the other hand, just 4 extensions are shown on Ubuntu from Vulkaninfo.

        Code: Select all

        Instance Extensions: count = 4
        ==============================
                VK_KHR_external_fence_capabilities     : extension revision 1
                VK_KHR_external_memory_capabilities    : extension revision 1
                VK_KHR_external_semaphore_capabilities : extension revision 1
                VK_KHR_get_physical_device_properties2 : extension revision 1
        
        Full output of Vulkaninfo on Buildroot.

        Code: Select all

        [root@rk3326_64:/]# vulkaninfo 
        ==========
        VULKANINFO
        ==========
        
        Vulkan Instance Version: 1.2.165
        
        
        Instance Extensions: count = 19
        ===============================
                VK_EXT_debug_report                    : extension revision 9
                VK_EXT_debug_utils                     : extension revision 2
                VK_EXT_direct_mode_display             : extension revision 1
                VK_EXT_display_surface_counter         : extension revision 1
                VK_EXT_headless_surface                : extension revision 1
                VK_EXT_swapchain_colorspace            : extension revision 4
                VK_EXT_validation_features             : extension revision 4
                VK_EXT_validation_flags                : extension revision 2
                VK_KHR_device_group_creation           : extension revision 1
                VK_KHR_display                         : extension revision 23
                VK_KHR_external_fence_capabilities     : extension revision 1
                VK_KHR_external_memory_capabilities    : extension revision 1
                VK_KHR_external_semaphore_capabilities : extension revision 1
                VK_KHR_get_display_properties2         : extension revision 1
                VK_KHR_get_physical_device_properties2 : extension revision 2
                VK_KHR_get_surface_capabilities2       : extension revision 1
                VK_KHR_surface                         : extension revision 25
                VK_KHR_surface_protected_capabilities  : extension revision 1
                VK_NV_external_memory_capabilities     : extension revision 1
        
        Layers: count = 0
        =================
        Groups:
        =======
                No Device Groups Found
        
        Device Properties and Extensions:
        =================================
        GPU0:
        VkPhysicalDeviceProperties:
        ---------------------------
                apiVersion     = 4198400 (1.1.0)
                driverVersion  = 1 (0x0001)
                vendorID       = 0xba5eba11
                deviceID       = 0xf005ba11
                deviceType     = PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
                deviceName     = Vulkan Mock Device
        
        VkPhysicalDeviceLimits:
        -----------------------
                maxImageDimension1D                             = 4096
                maxImageDimension2D                             = 4096
                maxImageDimension3D                             = 256
                maxImageDimensionCube                           = 4096
                maxImageArrayLayers                             = 256
                maxTexelBufferElements                          = 65536
                maxUniformBufferRange                           = 16384
                maxStorageBufferRange                           = 134217728
                maxPushConstantsSize                            = 128
                maxMemoryAllocationCount                        = 4096
                maxSamplerAllocationCount                       = 4000
                bufferImageGranularity                          = 0x00000001
                sparseAddressSpaceSize                          = 0x80000000
                maxBoundDescriptorSets                          = 4
                maxPerStageDescriptorSamplers                   = 16
                maxPerStageDescriptorUniformBuffers             = 12
                maxPerStageDescriptorStorageBuffers             = 4
                maxPerStageDescriptorSampledImages              = 16
                maxPerStageDescriptorStorageImages              = 4
                maxPerStageDescriptorInputAttachments           = 4
                maxPerStageResources                            = 128
                maxDescriptorSetSamplers                        = 96
                maxDescriptorSetUniformBuffers                  = 72
                maxDescriptorSetUniformBuffersDynamic           = 8
                maxDescriptorSetStorageBuffers                  = 24
                maxDescriptorSetStorageBuffersDynamic           = 4
                maxDescriptorSetSampledImages                   = 96
                maxDescriptorSetStorageImages                   = 24
                maxDescriptorSetInputAttachments                = 4
                maxVertexInputAttributes                        = 16
                maxVertexInputBindings                          = 16
                maxVertexInputAttributeOffset                   = 2047
                maxVertexInputBindingStride                     = 2048
                maxVertexOutputComponents                       = 64
                maxTessellationGenerationLevel                  = 64
                maxTessellationPatchSize                        = 32
                maxTessellationControlPerVertexInputComponents  = 64
                maxTessellationControlPerVertexOutputComponents = 64
                maxTessellationControlPerPatchOutputComponents  = 120
                maxTessellationControlTotalOutputComponents     = 2048
                maxTessellationEvaluationInputComponents        = 64
                maxTessellationEvaluationOutputComponents       = 64
                maxGeometryShaderInvocations                    = 32
                maxGeometryInputComponents                      = 64
                maxGeometryOutputComponents                     = 64
                maxGeometryOutputVertices                       = 256
                maxGeometryTotalOutputComponents                = 1024
                maxFragmentInputComponents                      = 64
                maxFragmentOutputAttachments                    = 4
                maxFragmentDualSrcAttachments                   = 1
                maxFragmentCombinedOutputResources              = 4
                maxComputeSharedMemorySize                      = 16384
                maxComputeWorkGroupCount: count = 3
                        65535
                        65535
                        65535
                maxComputeWorkGroupInvocations                  = 128
                maxComputeWorkGroupSize: count = 3
                        128
                        128
                        64
                subPixelPrecisionBits                           = 4
                subTexelPrecisionBits                           = 4
                mipmapPrecisionBits                             = 4
                maxDrawIndexedIndexValue                        = 4294967295
                maxDrawIndirectCount                            = 65535
                maxSamplerLodBias                               = 2
                maxSamplerAnisotropy                            = 16
                maxViewports                                    = 16
                maxViewportDimensions: count = 2
                        4096
                        4096
                viewportBoundsRange: count = 2
                        -8192
                        8191
                viewportSubPixelBits                            = 0
                minMemoryMapAlignment                           = 64
                minTexelBufferOffsetAlignment                   = 0x00000010
                minUniformBufferOffsetAlignment                 = 0x00000010
                minStorageBufferOffsetAlignment                 = 0x00000010
                minTexelOffset                                  = -8
                maxTexelOffset                                  = 7
                minTexelGatherOffset                            = -8
                maxTexelGatherOffset                            = 7
                minInterpolationOffset                          = 0
                maxInterpolationOffset                          = 0.5
                subPixelInterpolationOffsetBits                 = 4
                maxFramebufferWidth                             = 4096
                maxFramebufferHeight                            = 4096
                maxFramebufferLayers                            = 256
                framebufferColorSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                framebufferDepthSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                framebufferStencilSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                framebufferNoAttachmentsSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                maxColorAttachments                             = 4
                sampledImageColorSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                sampledImageIntegerSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                sampledImageDepthSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                sampledImageStencilSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                storageImageSampleCounts: count = 7
                        SAMPLE_COUNT_1_BIT
                        SAMPLE_COUNT_2_BIT
                        SAMPLE_COUNT_4_BIT
                        SAMPLE_COUNT_8_BIT
                        SAMPLE_COUNT_16_BIT
                        SAMPLE_COUNT_32_BIT
                        SAMPLE_COUNT_64_BIT
                maxSampleMaskWords                              = 1
                timestampComputeAndGraphics                     = true
                timestampPeriod                                 = 1
                maxClipDistances                                = 8
                maxCullDistances                                = 8
                maxCombinedClipAndCullDistances                 = 8
                discreteQueuePriorities                         = 2
                pointSizeRange: count = 2
                        1
                        64
                lineWidthRange: count = 2
                        1
                        8
                pointSizeGranularity                            = 1
                lineWidthGranularity                            = 1
                strictLines                                     = true
                standardSampleLocations                         = true
                optimalBufferCopyOffsetAlignment                = 0x00000001
                optimalBufferCopyRowPitchAlignment              = 0x00000001
                nonCoherentAtomSize                             = 0x00000100
        
        VkPhysicalDeviceSparseProperties:
        ---------------------------------
                residencyStandard2DBlockShape            = true
                residencyStandard2DMultisampleBlockShape = true
                residencyStandard3DBlockShape            = true
                residencyAlignedMipSize                  = true
                residencyNonResidentStrict               = true
        
        VkPhysicalDeviceAccelerationStructurePropertiesKHR:
        ---------------------------------------------------
                maxGeometryCount                                           = 0
                maxInstanceCount                                           = 0
                maxPrimitiveCount                                          = 0
                maxPerStageDescriptorAccelerationStructures                = 0
                maxPerStageDescriptorUpdateAfterBindAccelerationStructures = 0
                maxDescriptorSetAccelerationStructures                     = 0
                maxDescriptorSetUpdateAfterBindAccelerationStructures      = 0
                minAccelerationStructureScratchOffsetAlignment             = 0
        
        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT:
        ----------------------------------------------------
                advancedBlendMaxColorAttachments      = 0
                advancedBlendIndependentBlend         = false
                advancedBlendNonPremultipliedSrcColor = false
                advancedBlendNonPremultipliedDstColor = false
                advancedBlendCorrelatedOverlap        = false
                advancedBlendAllOperations            = false
        
        VkPhysicalDeviceConservativeRasterizationPropertiesEXT:
        -------------------------------------------------------
                primitiveOverestimationSize                 = 0
                maxExtraPrimitiveOverestimationSize         = 0
                extraPrimitiveOverestimationSizeGranularity = 0
                primitiveUnderestimation                    = false
                conservativePointAndLineRasterization       = false
                degenerateTrianglesRasterized               = false
                degenerateLinesRasterized                   = false
                fullyCoveredFragmentShaderInputVariable     = false
                conservativeRasterizationPostDepthCoverage  = false
        
        VkPhysicalDeviceCustomBorderColorPropertiesEXT:
        -----------------------------------------------
                maxCustomBorderColorSamplers = 0
        
        VkPhysicalDeviceDepthStencilResolvePropertiesKHR:
        -------------------------------------------------
                supportedDepthResolveModes: count = 1
                        RESOLVE_MODE_SAMPLE_ZERO_BIT
                supportedStencilResolveModes: count = 1
                        RESOLVE_MODE_SAMPLE_ZERO_BIT
                independentResolveNone = false
                independentResolve     = false
        
        VkPhysicalDeviceDescriptorIndexingPropertiesEXT:
        ------------------------------------------------
                maxUpdateAfterBindDescriptorsInAllPools              = 500000
                shaderUniformBufferArrayNonUniformIndexingNative     = false
                shaderSampledImageArrayNonUniformIndexingNative      = false
                shaderStorageBufferArrayNonUniformIndexingNative     = false
                shaderStorageImageArrayNonUniformIndexingNative      = false
                shaderInputAttachmentArrayNonUniformIndexingNative   = false
                robustBufferAccessUpdateAfterBind                    = true
                quadDivergentImplicitLod                             = true
                maxPerStageDescriptorUpdateAfterBindSamplers         = 500000
                maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 500000
                maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 500000
                maxPerStageDescriptorUpdateAfterBindSampledImages    = 500000
                maxPerStageDescriptorUpdateAfterBindStorageImages    = 500000
                maxPerStageDescriptorUpdateAfterBindInputAttachments = 500000
                maxPerStageUpdateAfterBindResources                  = 500000
                maxDescriptorSetUpdateAfterBindSamplers              = 500000
                maxDescriptorSetUpdateAfterBindUniformBuffers        = 96
                maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 8
                maxDescriptorSetUpdateAfterBindStorageBuffers        = 500000
                maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 4
                maxDescriptorSetUpdateAfterBindSampledImages         = 500000
                maxDescriptorSetUpdateAfterBindStorageImages         = 500000
                maxDescriptorSetUpdateAfterBindInputAttachments      = 500000
        
        VkPhysicalDeviceDiscardRectanglePropertiesEXT:
        ----------------------------------------------
                maxDiscardRectangles = 0
        
        VkPhysicalDeviceDriverPropertiesKHR:
        ------------------------------------
                driverID           = UNKNOWN_VkDriverId
                driverName         = 
                driverInfo         = 
                conformanceVersion = 0.0.0.0
        
        VkPhysicalDeviceExternalMemoryHostPropertiesEXT:
        ------------------------------------------------
                minImportedHostPointerAlignment = 0x00000000
        
        VkPhysicalDeviceFloatControlsPropertiesKHR:
        -------------------------------------------
                denormBehaviorIndependence            = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
                roundingModeIndependence              = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
                shaderSignedZeroInfNanPreserveFloat16 = false
                shaderSignedZeroInfNanPreserveFloat32 = false
                shaderSignedZeroInfNanPreserveFloat64 = false
                shaderDenormPreserveFloat16           = false
                shaderDenormPreserveFloat32           = false
                shaderDenormPreserveFloat64           = false
                shaderDenormFlushToZeroFloat16        = false
                shaderDenormFlushToZeroFloat32        = false
                shaderDenormFlushToZeroFloat64        = false
                shaderRoundingModeRTEFloat16          = false
                shaderRoundingModeRTEFloat32          = false
                shaderRoundingModeRTEFloat64          = false
                shaderRoundingModeRTZFloat16          = false
                shaderRoundingModeRTZFloat32          = false
                shaderRoundingModeRTZFloat64          = false
        
        VkPhysicalDeviceFragmentDensityMap2PropertiesEXT:
        -------------------------------------------------
                subsampledLoads                           = false
                subsampledCoarseReconstructionEarlyAccess = false
                maxSubsampledArrayLayers                  = 0
                maxDescriptorSetSubsampledSamplers        = 0
        
        VkPhysicalDeviceFragmentDensityMapPropertiesEXT:
        ------------------------------------------------
                minFragmentDensityTexelSize:
                        width  = 0
                        height = 0
                maxFragmentDensityTexelSize:
                        width  = 0
                        height = 0
                fragmentDensityInvocations = false
        
        VkPhysicalDeviceFragmentShadingRatePropertiesKHR:
        -------------------------------------------------
                minFragmentShadingRateAttachmentTexelSize:
                        width  = 0
                        height = 0
                maxFragmentShadingRateAttachmentTexelSize:
                        width  = 0
                        height = 0
                maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 0
                primitiveFragmentShadingRateWithMultipleViewports    = false
                layeredShadingRateAttachments                        = false
                fragmentShadingRateNonTrivialCombinerOps             = false
                maxFragmentSize:
                        width  = 0
                        height = 0
                maxFragmentSizeAspectRatio                           = 0
                maxFragmentShadingRateCoverageSamples                = 0
                maxFragmentShadingRateRasterizationSamples           = None
                fragmentShadingRateWithShaderDepthStencilWrites      = false
                fragmentShadingRateWithSampleMask                    = false
                fragmentShadingRateWithShaderSampleMask              = false
                fragmentShadingRateWithConservativeRasterization     = false
                fragmentShadingRateWithFragmentShaderInterlock       = false
                fragmentShadingRateWithCustomSampleLocations         = false
                fragmentShadingRateStrictMultiplyCombiner            = false
        
        VkPhysicalDeviceIDProperties:
        -----------------------------
                deviceUUID      = 00000000-0000-0000-0000-000000000000
                driverUUID      = 00000000-0000-0000-0000-000000000000
                deviceNodeMask  = 0
                deviceLUIDValid = false
        
        VkPhysicalDeviceInlineUniformBlockPropertiesEXT:
        ------------------------------------------------
                maxInlineUniformBlockSize                               = 0
                maxPerStageDescriptorInlineUniformBlocks                = 0
                maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 0
                maxDescriptorSetInlineUniformBlocks                     = 0
                maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 0
        
        VkPhysicalDeviceLineRasterizationPropertiesEXT:
        -----------------------------------------------
                lineSubPixelPrecisionBits = 0
        
        VkPhysicalDeviceMaintenance3Properties:
        ---------------------------------------
                maxPerSetDescriptors    = 0
                maxMemoryAllocationSize = 0x00000000
        
        VkPhysicalDeviceMultiviewProperties:
        ------------------------------------
                maxMultiviewViewCount     = 0
                maxMultiviewInstanceIndex = 0
        
        VkPhysicalDevicePCIBusInfoPropertiesEXT:
        ----------------------------------------
                pciDomain   = 0
                pciBus      = 0
                pciDevice   = 0
                pciFunction = 0
        
        VkPhysicalDevicePerformanceQueryPropertiesKHR:
        ----------------------------------------------
                allowCommandBufferQueryCopies = false
        
        VkPhysicalDevicePointClippingProperties:
        ----------------------------------------
                pointClippingBehavior = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
        
        VkPhysicalDeviceProtectedMemoryProperties:
        ------------------------------------------
                protectedNoFault = false
        
        VkPhysicalDevicePushDescriptorPropertiesKHR:
        --------------------------------------------
                maxPushDescriptors = 256
        
        VkPhysicalDeviceRayTracingPipelinePropertiesKHR:
        ------------------------------------------------
                shaderGroupHandleSize              = 0
                maxRayRecursionDepth               = 0
                maxShaderGroupStride               = 0
                shaderGroupBaseAlignment           = 0
                shaderGroupHandleCaptureReplaySize = 0
                maxRayDispatchInvocationCount      = 0
                shaderGroupHandleAlignment         = 0
                maxRayHitAttributeSize             = 0
        
        VkPhysicalDeviceRobustness2PropertiesEXT:
        -----------------------------------------
                robustStorageBufferAccessSizeAlignment = 0x00000000
                robustUniformBufferAccessSizeAlignment = 0x00000000
        
        VkPhysicalDeviceSampleLocationsPropertiesEXT:
        ---------------------------------------------
                sampleLocationSampleCounts: count = 0
                        None
                maxSampleLocationGridSize:
                        width  = 0
                        height = 0
                sampleLocationCoordinateRange: count = 2
                        0
                        0
                sampleLocationSubPixelBits       = 0
                variableSampleLocations          = false
        
        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT:
        -------------------------------------------------
                filterMinmaxSingleComponentFormats = false
                filterMinmaxImageComponentMapping  = false
        
        VkPhysicalDeviceSubgroupProperties:
        -----------------------------------
                subgroupSize              = 0
                supportedStages: count = 0
                        None
                supportedOperations: count = 0
                        None
                quadOperationsInAllStages = false
        
        VkPhysicalDeviceSubgroupSizeControlPropertiesEXT:
        -------------------------------------------------
                minSubgroupSize              = 0
                maxSubgroupSize              = 0
                maxComputeWorkgroupSubgroups = 0
                requiredSubgroupSizeStages: count = 0
                        None
        
        VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT:
        --------------------------------------------------
                storageTexelBufferOffsetAlignmentBytes       = 0x00000000
                storageTexelBufferOffsetSingleTexelAlignment = false
                uniformTexelBufferOffsetAlignmentBytes       = 0x00000000
                uniformTexelBufferOffsetSingleTexelAlignment = false
        
        VkPhysicalDeviceTimelineSemaphorePropertiesKHR:
        -----------------------------------------------
                maxTimelineSemaphoreValueDifference = 0
        
        VkPhysicalDeviceTransformFeedbackPropertiesEXT:
        -----------------------------------------------
                maxTransformFeedbackStreams                = 0
                maxTransformFeedbackBuffers                = 0
                maxTransformFeedbackBufferSize             = 0x00000000
                maxTransformFeedbackStreamDataSize         = 0
                maxTransformFeedbackBufferDataSize         = 0
                maxTransformFeedbackBufferDataStride       = 0
                transformFeedbackQueries                   = false
                transformFeedbackStreamsLinesTriangles     = false
                transformFeedbackRasterizationStreamSelect = false
                transformFeedbackDraw                      = false
        
        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
        ----------------------------------------------------
                maxVertexAttribDivisor = 0
        
        
        Device Extensions: count = 187
        ------------------------------
                VK_AMD_buffer_marker                               : extension revision 1
                VK_AMD_device_coherent_memory                      : extension revision 1
                VK_AMD_display_native_hdr                          : extension revision 1
                VK_AMD_draw_indirect_count                         : extension revision 2
                VK_AMD_gcn_shader                                  : extension revision 1
                VK_AMD_gpu_shader_half_float                       : extension revision 2
                VK_AMD_gpu_shader_int16                            : extension revision 2
                VK_AMD_memory_overallocation_behavior              : extension revision 1
                VK_AMD_mixed_attachment_samples                    : extension revision 1
                VK_AMD_negative_viewport_height                    : extension revision 1
                VK_AMD_pipeline_compiler_control                   : extension revision 1
                VK_AMD_rasterization_order                         : extension revision 1
                VK_AMD_shader_ballot                               : extension revision 1
                VK_AMD_shader_core_properties                      : extension revision 2
                VK_AMD_shader_core_properties2                     : extension revision 1
                VK_AMD_shader_explicit_vertex_parameter            : extension revision 1
                VK_AMD_shader_fragment_mask                        : extension revision 1
                VK_AMD_shader_image_load_store_lod                 : extension revision 1
                VK_AMD_shader_info                                 : extension revision 1
                VK_AMD_shader_trinary_minmax                       : extension revision 1
                VK_AMD_texture_gather_bias_lod                     : extension revision 1
                VK_ANDROID_external_memory_android_hardware_buffer : extension revision 3
                VK_EXT_4444_formats                                : extension revision 1
                VK_EXT_astc_decode_mode                            : extension revision 1
                VK_EXT_blend_operation_advanced                    : extension revision 2
                VK_EXT_buffer_device_address                       : extension revision 2
                VK_EXT_calibrated_timestamps                       : extension revision 1
                VK_EXT_conditional_rendering                       : extension revision 2
                VK_EXT_conservative_rasterization                  : extension revision 1
                VK_EXT_custom_border_color                         : extension revision 12
                VK_EXT_debug_marker                                : extension revision 4
                VK_EXT_depth_clip_enable                           : extension revision 1
                VK_EXT_depth_range_unrestricted                    : extension revision 1
                VK_EXT_descriptor_indexing                         : extension revision 2
                VK_EXT_device_memory_report                        : extension revision 1
                VK_EXT_discard_rectangles                          : extension revision 1
                VK_EXT_display_control                             : extension revision 1
                VK_EXT_extended_dynamic_state                      : extension revision 1
                VK_EXT_external_memory_dma_buf                     : extension revision 1
                VK_EXT_external_memory_host                        : extension revision 1
                VK_EXT_filter_cubic                                : extension revision 3
                VK_EXT_fragment_density_map                        : extension revision 1
                VK_EXT_fragment_density_map2                       : extension revision 1
                VK_EXT_fragment_shader_interlock                   : extension revision 1
                VK_EXT_full_screen_exclusive                       : extension revision 4
                VK_EXT_global_priority                             : extension revision 2
                VK_EXT_hdr_metadata                                : extension revision 2
                VK_EXT_host_query_reset                            : extension revision 1
                VK_EXT_image_drm_format_modifier                   : extension revision 1
                VK_EXT_image_robustness                            : extension revision 1
                VK_EXT_index_type_uint8                            : extension revision 1
                VK_EXT_inline_uniform_block                        : extension revision 1
                VK_EXT_line_rasterization                          : extension revision 1
                VK_EXT_memory_budget                               : extension revision 1
                VK_EXT_memory_priority                             : extension revision 1
                VK_EXT_pci_bus_info                                : extension revision 2
                VK_EXT_pipeline_creation_cache_control             : extension revision 3
                VK_EXT_pipeline_creation_feedback                  : extension revision 1
                VK_EXT_post_depth_coverage                         : extension revision 1
                VK_EXT_private_data                                : extension revision 1
                VK_EXT_queue_family_foreign                        : extension revision 1
                VK_EXT_robustness2                                 : extension revision 1
                VK_EXT_sample_locations                            : extension revision 1
                VK_EXT_sampler_filter_minmax                       : extension revision 2
                VK_EXT_scalar_block_layout                         : extension revision 1
                VK_EXT_separate_stencil_usage                      : extension revision 1
                VK_EXT_shader_atomic_float                         : extension revision 1
                VK_EXT_shader_demote_to_helper_invocation          : extension revision 1
                VK_EXT_shader_image_atomic_int64                   : extension revision 1
                VK_EXT_shader_stencil_export                       : extension revision 1
                VK_EXT_shader_subgroup_ballot                      : extension revision 1
                VK_EXT_shader_subgroup_vote                        : extension revision 1
                VK_EXT_shader_viewport_index_layer                 : extension revision 1
                VK_EXT_subgroup_size_control                       : extension revision 2
                VK_EXT_texel_buffer_alignment                      : extension revision 1
                VK_EXT_texture_compression_astc_hdr                : extension revision 1
                VK_EXT_tooling_info                                : extension revision 1
                VK_EXT_transform_feedback                          : extension revision 1
                VK_EXT_vertex_attribute_divisor                    : extension revision 3
                VK_EXT_ycbcr_image_arrays                          : extension revision 1
                VK_GGP_frame_token                                 : extension revision 1
                VK_GOOGLE_decorate_string                          : extension revision 1
                VK_GOOGLE_display_timing                           : extension revision 1
                VK_GOOGLE_hlsl_functionality1                      : extension revision 1
                VK_GOOGLE_user_type                                : extension revision 1
                VK_IMG_filter_cubic                                : extension revision 1
                VK_IMG_format_pvrtc                                : extension revision 1
                VK_INTEL_performance_query                         : extension revision 2
                VK_INTEL_shader_integer_functions2                 : extension revision 1
                VK_KHR_16bit_storage                               : extension revision 1
                VK_KHR_8bit_storage                                : extension revision 1
                VK_KHR_acceleration_structure                      : extension revision 11
                VK_KHR_bind_memory2                                : extension revision 1
                VK_KHR_buffer_device_address                       : extension revision 1
                VK_KHR_copy_commands2                              : extension revision 1
                VK_KHR_create_renderpass2                          : extension revision 1
                VK_KHR_dedicated_allocation                        : extension revision 3
                VK_KHR_deferred_host_operations                    : extension revision 4
                VK_KHR_depth_stencil_resolve                       : extension revision 1
                VK_KHR_descriptor_update_template                  : extension revision 1
                VK_KHR_device_group                                : extension revision 4
                VK_KHR_display_swapchain                           : extension revision 10
                VK_KHR_draw_indirect_count                         : extension revision 1
                VK_KHR_driver_properties                           : extension revision 1
                VK_KHR_external_fence                              : extension revision 1
                VK_KHR_external_fence_fd                           : extension revision 1
                VK_KHR_external_fence_win32                        : extension revision 1
                VK_KHR_external_memory                             : extension revision 1
                VK_KHR_external_memory_fd                          : extension revision 1
                VK_KHR_external_memory_win32                       : extension revision 1
                VK_KHR_external_semaphore                          : extension revision 1
                VK_KHR_external_semaphore_fd                       : extension revision 1
                VK_KHR_external_semaphore_win32                    : extension revision 1
                VK_KHR_fragment_shading_rate                       : extension revision 1
                VK_KHR_get_memory_requirements2                    : extension revision 1
                VK_KHR_image_format_list                           : extension revision 1
                VK_KHR_imageless_framebuffer                       : extension revision 1
                VK_KHR_incremental_present                         : extension revision 1
                VK_KHR_maintenance1                                : extension revision 2
                VK_KHR_maintenance2                                : extension revision 1
                VK_KHR_maintenance3                                : extension revision 1
                VK_KHR_multiview                                   : extension revision 1
                VK_KHR_performance_query                           : extension revision 1
                VK_KHR_pipeline_executable_properties              : extension revision 1
                VK_KHR_pipeline_library                            : extension revision 1
                VK_KHR_push_descriptor                             : extension revision 2
                VK_KHR_ray_query                                   : extension revision 1
                VK_KHR_ray_tracing_pipeline                        : extension revision 1
                VK_KHR_relaxed_block_layout                        : extension revision 1
                VK_KHR_sampler_mirror_clamp_to_edge                : extension revision 3
                VK_KHR_sampler_ycbcr_conversion                    : extension revision 14
                VK_KHR_separate_depth_stencil_layouts              : extension revision 1
                VK_KHR_shader_atomic_int64                         : extension revision 1
                VK_KHR_shader_clock                                : extension revision 1
                VK_KHR_shader_draw_parameters                      : extension revision 1
                VK_KHR_shader_float16_int8                         : extension revision 1
                VK_KHR_shader_float_controls                       : extension revision 4
                VK_KHR_shader_non_semantic_info                    : extension revision 1
                VK_KHR_shader_subgroup_extended_types              : extension revision 1
                VK_KHR_shader_terminate_invocation                 : extension revision 1
                VK_KHR_shared_presentable_image                    : extension revision 1
                VK_KHR_spirv_1_4                                   : extension revision 1
                VK_KHR_storage_buffer_storage_class                : extension revision 1
                VK_KHR_swapchain                                   : extension revision 70
                VK_KHR_swapchain_mutable_format                    : extension revision 1
                VK_KHR_timeline_semaphore                          : extension revision 2
                VK_KHR_uniform_buffer_standard_layout              : extension revision 1
                VK_KHR_variable_pointers                           : extension revision 1
                VK_KHR_vulkan_memory_model                         : extension revision 3
                VK_KHR_win32_keyed_mutex                           : extension revision 1
                VK_NVX_image_view_handle                           : extension revision 2
                VK_NVX_multiview_per_view_attributes               : extension revision 1
                VK_NV_clip_space_w_scaling                         : extension revision 1
                VK_NV_compute_shader_derivatives                   : extension revision 1
                VK_NV_cooperative_matrix                           : extension revision 1
                VK_NV_corner_sampled_image                         : extension revision 2
                VK_NV_coverage_reduction_mode                      : extension revision 1
                VK_NV_dedicated_allocation                         : extension revision 1
                VK_NV_dedicated_allocation_image_aliasing          : extension revision 1
                VK_NV_device_diagnostic_checkpoints                : extension revision 2
                VK_NV_device_diagnostics_config                    : extension revision 1
                VK_NV_device_generated_commands                    : extension revision 3
                VK_NV_external_memory                              : extension revision 1
                VK_NV_external_memory_win32                        : extension revision 1
                VK_NV_fill_rectangle                               : extension revision 1
                VK_NV_fragment_coverage_to_color                   : extension revision 1
                VK_NV_fragment_shader_barycentric                  : extension revision 1
                VK_NV_fragment_shading_rate_enums                  : extension revision 1
                VK_NV_framebuffer_mixed_samples                    : extension revision 1
                VK_NV_geometry_shader_passthrough                  : extension revision 1
                VK_NV_glsl_shader                                  : extension revision 1
                VK_NV_mesh_shader                                  : extension revision 1
                VK_NV_ray_tracing                                  : extension revision 3
                VK_NV_representative_fragment_test                 : extension revision 2
                VK_NV_sample_mask_override_coverage                : extension revision 1
                VK_NV_scissor_exclusive                            : extension revision 1
                VK_NV_shader_image_footprint                       : extension revision 2
                VK_NV_shader_sm_builtins                           : extension revision 1
                VK_NV_shader_subgroup_partitioned                  : extension revision 1
                VK_NV_shading_rate_image                           : extension revision 3
                VK_NV_viewport_array2                              : extension revision 1
                VK_NV_viewport_swizzle                             : extension revision 1
                VK_NV_win32_keyed_mutex                            : extension revision 2
                VK_QCOM_render_pass_shader_resolve                 : extension revision 4
                VK_QCOM_render_pass_store_ops                      : extension revision 2
                VK_QCOM_render_pass_transform                      : extension revision 1
                VK_QCOM_rotated_copy_commands                      : extension revision 0
        
        VkQueueFamilyProperties:
        ========================
                queueProperties[0]:
                -------------------
                        minImageTransferGranularity = (1,1,1)
                        queueCount                  = 1
                        queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER | QUEUE_SPARSE_BINDING
                        timestampValidBits          = 0
                        present support             = false
        
        VkPhysicalDeviceMemoryProperties:
        =================================
        memoryHeaps: count = 2
                memoryHeaps[0]:
                        size   = 8000000000 (0x1dcd65000) (7.45 GiB)
                        budget = 0 (0x00000000) (0.00 B)
                        usage  = 0 (0x00000000) (0.00 B)
                        flags: count = 0
                                None
                memoryHeaps[1]:
                        size   = 8000000000 (0x1dcd65000) (7.45 GiB)
                        budget = 0 (0x00000000) (0.00 B)
                        usage  = 0 (0x00000000) (0.00 B)
                        flags: count = 1
                                MEMORY_HEAP_DEVICE_LOCAL_BIT
        memoryTypes: count = 2
                memoryTypes[0]:
                        heapIndex     = 0
                        propertyFlags = 0x0006: count = 2
                                MEMORY_PROPERTY_HOST_VISIBLE_BIT
                                MEMORY_PROPERTY_HOST_COHERENT_BIT
                        usable for:
                                IMAGE_TILING_OPTIMAL:
                                        color images
                                        FORMAT_D16_UNORM
                                        FORMAT_X8_D24_UNORM_PACK32
                                        FORMAT_D32_SFLOAT
                                        FORMAT_S8_UINT
                                        FORMAT_D16_UNORM_S8_UINT
                                        FORMAT_D24_UNORM_S8_UINT
                                        FORMAT_D32_SFLOAT_S8_UINT
                                        (non-sparse)
                                IMAGE_TILING_LINEAR:
                                        color images
                                        (non-sparse)
                memoryTypes[1]:
                        heapIndex     = 1
                        propertyFlags = 0x000f: count = 4
                                MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                                MEMORY_PROPERTY_HOST_VISIBLE_BIT
                                MEMORY_PROPERTY_HOST_COHERENT_BIT
                                MEMORY_PROPERTY_HOST_CACHED_BIT
                        usable for:
                                IMAGE_TILING_OPTIMAL:
                                        color images
                                        FORMAT_D16_UNORM
                                        FORMAT_X8_D24_UNORM_PACK32
                                        FORMAT_D32_SFLOAT
                                        FORMAT_S8_UINT
                                        FORMAT_D16_UNORM_S8_UINT
                                        FORMAT_D24_UNORM_S8_UINT
                                        FORMAT_D32_SFLOAT_S8_UINT
                                        (non-sparse)
                                IMAGE_TILING_LINEAR:
                                        color images
                                        (non-sparse)
        
        VkPhysicalDeviceFeatures:
        =========================
                robustBufferAccess                      = true
                fullDrawIndexUint32                     = true
                imageCubeArray                          = true
                independentBlend                        = true
                geometryShader                          = true
                tessellationShader                      = true
                sampleRateShading                       = true
                dualSrcBlend                            = true
                logicOp                                 = true
                multiDrawIndirect                       = true
                drawIndirectFirstInstance               = true
                depthClamp                              = true
                depthBiasClamp                          = true
                fillModeNonSolid                        = true
                depthBounds                             = true
                wideLines                               = true
                largePoints                             = true
                alphaToOne                              = true
                multiViewport                           = true
                samplerAnisotropy                       = true
                textureCompressionETC2                  = true
                textureCompressionASTC_LDR              = true
                textureCompressionBC                    = true
                occlusionQueryPrecise                   = true
                pipelineStatisticsQuery                 = true
                vertexPipelineStoresAndAtomics          = true
                fragmentStoresAndAtomics                = true
                shaderTessellationAndGeometryPointSize  = true
                shaderImageGatherExtended               = true
                shaderStorageImageExtendedFormats       = true
                shaderStorageImageMultisample           = true
                shaderStorageImageReadWithoutFormat     = true
                shaderStorageImageWriteWithoutFormat    = true
                shaderUniformBufferArrayDynamicIndexing = true
                shaderSampledImageArrayDynamicIndexing  = true
                shaderStorageBufferArrayDynamicIndexing = true
                shaderStorageImageArrayDynamicIndexing  = true
                shaderClipDistance                      = true
                shaderCullDistance                      = true
                shaderFloat64                           = true
                shaderInt64                             = true
                shaderInt16                             = true
                shaderResourceResidency                 = true
                shaderResourceMinLod                    = true
                sparseBinding                           = true
                sparseResidencyBuffer                   = true
                sparseResidencyImage2D                  = true
                sparseResidencyImage3D                  = true
                sparseResidency2Samples                 = true
                sparseResidency4Samples                 = true
                sparseResidency8Samples                 = true
                sparseResidency16Samples                = true
                sparseResidencyAliased                  = true
                variableMultisampleRate                 = true
                inheritedQueries                        = true
        
        VkPhysicalDevice16BitStorageFeatures:
        -------------------------------------
                storageBuffer16BitAccess           = false
                uniformAndStorageBuffer16BitAccess = false
                storagePushConstant16              = false
                storageInputOutput16               = false
        
        VkPhysicalDevice4444FormatsFeaturesEXT:
        ---------------------------------------
                formatA4R4G4B4 = false
                formatA4B4G4R4 = false
        
        VkPhysicalDevice8BitStorageFeaturesKHR:
        ---------------------------------------
                storageBuffer8BitAccess           = false
                uniformAndStorageBuffer8BitAccess = false
                storagePushConstant8              = false
        
        VkPhysicalDeviceASTCDecodeFeaturesEXT:
        --------------------------------------
                decodeModeSharedExponent = false
        
        VkPhysicalDeviceAccelerationStructureFeaturesKHR:
        -------------------------------------------------
                accelerationStructure                                 = false
                accelerationStructureCaptureReplay                    = false
                accelerationStructureIndirectBuild                    = false
                accelerationStructureHostCommands                     = false
                descriptorBindingAccelerationStructureUpdateAfterBind = false
        
        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT:
        --------------------------------------------------
                advancedBlendCoherentOperations = true
        
        VkPhysicalDeviceBufferDeviceAddressFeaturesKHR:
        -----------------------------------------------
                bufferDeviceAddress              = false
                bufferDeviceAddressCaptureReplay = false
                bufferDeviceAddressMultiDevice   = false
        
        VkPhysicalDeviceBufferDeviceAddressFeaturesEXT:
        -----------------------------------------------
                bufferDeviceAddress              = false
                bufferDeviceAddressCaptureReplay = false
                bufferDeviceAddressMultiDevice   = false
        
        VkPhysicalDeviceConditionalRenderingFeaturesEXT:
        ------------------------------------------------
                conditionalRendering          = false
                inheritedConditionalRendering = false
        
        VkPhysicalDeviceCustomBorderColorFeaturesEXT:
        ---------------------------------------------
                customBorderColors             = false
                customBorderColorWithoutFormat = false
        
        VkPhysicalDeviceDepthClipEnableFeaturesEXT:
        -------------------------------------------
                depthClipEnable = false
        
        VkPhysicalDeviceDescriptorIndexingFeaturesEXT:
        ----------------------------------------------
                shaderInputAttachmentArrayDynamicIndexing          = true
                shaderUniformTexelBufferArrayDynamicIndexing       = true
                shaderStorageTexelBufferArrayDynamicIndexing       = true
                shaderUniformBufferArrayNonUniformIndexing         = true
                shaderSampledImageArrayNonUniformIndexing          = true
                shaderStorageBufferArrayNonUniformIndexing         = true
                shaderStorageImageArrayNonUniformIndexing          = true
                shaderInputAttachmentArrayNonUniformIndexing       = true
                shaderUniformTexelBufferArrayNonUniformIndexing    = true
                shaderStorageTexelBufferArrayNonUniformIndexing    = true
                descriptorBindingUniformBufferUpdateAfterBind      = true
                descriptorBindingSampledImageUpdateAfterBind       = true
                descriptorBindingStorageImageUpdateAfterBind       = true
                descriptorBindingStorageBufferUpdateAfterBind      = true
                descriptorBindingUniformTexelBufferUpdateAfterBind = true
                descriptorBindingStorageTexelBufferUpdateAfterBind = true
                descriptorBindingUpdateUnusedWhilePending          = true
                descriptorBindingPartiallyBound                    = true
                descriptorBindingVariableDescriptorCount           = true
                runtimeDescriptorArray                             = true
        
        VkPhysicalDeviceDeviceMemoryReportFeaturesEXT:
        ----------------------------------------------
                deviceMemoryReport = false
        
        VkPhysicalDeviceExtendedDynamicStateFeaturesEXT:
        ------------------------------------------------
                extendedDynamicState = false
        
        VkPhysicalDeviceFragmentDensityMap2FeaturesEXT:
        -----------------------------------------------
                fragmentDensityMapDeferred = false
        
        VkPhysicalDeviceFragmentDensityMapFeaturesEXT:
        ----------------------------------------------
                fragmentDensityMap                    = false
                fragmentDensityMapDynamic             = false
                fragmentDensityMapNonSubsampledImages = false
        
        VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT:
        ---------------------------------------------------
                fragmentShaderSampleInterlock      = false
                fragmentShaderPixelInterlock       = false
                fragmentShaderShadingRateInterlock = false
        
        VkPhysicalDeviceFragmentShadingRateFeaturesKHR:
        -----------------------------------------------
                pipelineFragmentShadingRate   = false
                primitiveFragmentShadingRate  = false
                attachmentFragmentShadingRate = false
        
        VkPhysicalDeviceHostQueryResetFeaturesEXT:
        ------------------------------------------
                hostQueryReset = false
        
        VkPhysicalDeviceImageRobustnessFeaturesEXT:
        -------------------------------------------
                robustImageAccess = false
        
        VkPhysicalDeviceImagelessFramebufferFeaturesKHR:
        ------------------------------------------------
                imagelessFramebuffer = false
        
        VkPhysicalDeviceIndexTypeUint8FeaturesEXT:
        ------------------------------------------
                indexTypeUint8 = false
        
        VkPhysicalDeviceInlineUniformBlockFeaturesEXT:
        ----------------------------------------------
                inlineUniformBlock                                 = false
                descriptorBindingInlineUniformBlockUpdateAfterBind = false
        
        VkPhysicalDeviceLineRasterizationFeaturesEXT:
        ---------------------------------------------
                rectangularLines         = false
                bresenhamLines           = false
                smoothLines              = false
                stippledRectangularLines = false
                stippledBresenhamLines   = false
                stippledSmoothLines      = false
        
        VkPhysicalDeviceMemoryPriorityFeaturesEXT:
        ------------------------------------------
                memoryPriority = false
        
        VkPhysicalDeviceMultiviewFeatures:
        ----------------------------------
                multiview                   = false
                multiviewGeometryShader     = false
                multiviewTessellationShader = false
        
        VkPhysicalDevicePerformanceQueryFeaturesKHR:
        --------------------------------------------
                performanceCounterQueryPools         = false
                performanceCounterMultipleQueryPools = false
        
        VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT:
        --------------------------------------------------------
                pipelineCreationCacheControl = false
        
        VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR:
        --------------------------------------------------------
                pipelineExecutableInfo = false
        
        VkPhysicalDevicePrivateDataFeaturesEXT:
        ---------------------------------------
                privateData = false
        
        VkPhysicalDeviceProtectedMemoryFeatures:
        ----------------------------------------
                protectedMemory = false
        
        VkPhysicalDeviceRayQueryFeaturesKHR:
        ------------------------------------
                rayQuery = false
        
        VkPhysicalDeviceRayTracingPipelineFeaturesKHR:
        ----------------------------------------------
                rayTracingPipeline                                    = false
                rayTracingPipelineShaderGroupHandleCaptureReplay      = false
                rayTracingPipelineShaderGroupHandleCaptureReplayMixed = false
                rayTracingPipelineTraceRaysIndirect                   = false
                rayTraversalPrimitiveCulling                          = false
        
        VkPhysicalDeviceRobustness2FeaturesEXT:
        ---------------------------------------
                robustBufferAccess2 = false
                robustImageAccess2  = false
                nullDescriptor      = false
        
        VkPhysicalDeviceSamplerYcbcrConversionFeatures:
        -----------------------------------------------
                samplerYcbcrConversion = false
        
        VkPhysicalDeviceScalarBlockLayoutFeaturesEXT:
        ---------------------------------------------
                scalarBlockLayout = false
        
        VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR:
        -------------------------------------------------------
                separateDepthStencilLayouts = false
        
        VkPhysicalDeviceShaderAtomicFloatFeaturesEXT:
        ---------------------------------------------
                shaderBufferFloat32Atomics   = false
                shaderBufferFloat32AtomicAdd = false
                shaderBufferFloat64Atomics   = false
                shaderBufferFloat64AtomicAdd = false
                shaderSharedFloat32Atomics   = false
                shaderSharedFloat32AtomicAdd = false
                shaderSharedFloat64Atomics   = false
                shaderSharedFloat64AtomicAdd = false
                shaderImageFloat32Atomics    = false
                shaderImageFloat32AtomicAdd  = false
                sparseImageFloat32Atomics    = false
                sparseImageFloat32AtomicAdd  = false
        
        VkPhysicalDeviceShaderAtomicInt64FeaturesKHR:
        ---------------------------------------------
                shaderBufferInt64Atomics = false
                shaderSharedInt64Atomics = false
        
        VkPhysicalDeviceShaderClockFeaturesKHR:
        ---------------------------------------
                shaderSubgroupClock = false
                shaderDeviceClock   = false
        
        VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT:
        ----------------------------------------------------------
                shaderDemoteToHelperInvocation = false
        
        VkPhysicalDeviceShaderDrawParametersFeatures:
        ---------------------------------------------
                shaderDrawParameters = false
        
        VkPhysicalDeviceFloat16Int8FeaturesKHR:
        ---------------------------------------
                shaderFloat16 = false
                shaderInt8    = false
        
        VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT:
        --------------------------------------------------
                shaderImageInt64Atomics = false
                sparseImageInt64Atomics = false
        
        VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR:
        -------------------------------------------------------
                shaderSubgroupExtendedTypes = false
        
        VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR:
        -----------------------------------------------------
                shaderTerminateInvocation = false
        
        VkPhysicalDeviceSubgroupSizeControlFeaturesEXT:
        -----------------------------------------------
                subgroupSizeControl  = false
                computeFullSubgroups = false
        
        VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT:
        ------------------------------------------------
                texelBufferAlignment = false
        
        VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT:
        -----------------------------------------------------
                textureCompressionASTC_HDR = false
        
        VkPhysicalDeviceTimelineSemaphoreFeaturesKHR:
        ---------------------------------------------
                timelineSemaphore = false
        
        VkPhysicalDeviceTransformFeedbackFeaturesEXT:
        ---------------------------------------------
                transformFeedback = false
                geometryStreams   = false
        
        VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR:
        -------------------------------------------------------
                uniformBufferStandardLayout = false
        
        VkPhysicalDeviceVariablePointersFeatures:
        -----------------------------------------
                variablePointersStorageBuffer = false
                variablePointers              = false
        
        VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT:
        --------------------------------------------------
                vertexAttributeInstanceRateDivisor     = false
                vertexAttributeInstanceRateZeroDivisor = false
        
        VkPhysicalDeviceVulkanMemoryModelFeaturesKHR:
        ---------------------------------------------
                vulkanMemoryModel                             = false
                vulkanMemoryModelDeviceScope                  = false
                vulkanMemoryModelAvailabilityVisibilityChains = false
        
        VkPhysicalDeviceYcbcrImageArraysFeaturesEXT:
        --------------------------------------------
                ycbcrImageArrays = false
        
        
        
        Do you have any idea of this? :roll:

        valadaa48
        Posts: 288
        Joined: Mon Feb 17, 2020 1:35 pm
        languages_spoken: english
        ODROIDs: odroid go advance
        Has thanked: 40 times
        Been thanked: 96 times
        Contact:

        Re: Question about the Vulkan capable emulators

        Post by valadaa48 »

        Code: Select all

                deviceType     = PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
                deviceName     = Vulkan Mock Device
        
        Unless I'm missing something, I suspect you are running it against some other libvulkan.so and not the provided one.

        Void Linux is also only showing 4 extensions.

        joy
        Posts: 1584
        Joined: Fri Oct 02, 2015 1:44 pm
        languages_spoken: english
        ODROIDs: .
        Has thanked: 179 times
        Been thanked: 210 times

        Re: Question about the Vulkan capable emulators

        Post by joy »

        valadaa48 wrote:
        Thu Feb 04, 2021 1:19 pm
        Unless I'm missing something, I suspect you are running it against some other libvulkan.so and not the provided one.
        Void Linux is also only showing 4 extensions.
        Here is the information of libvulkan.so path.

        Code: Select all

        root@goadvance:~# ls -al /usr/lib/aarch64-linux-gnu/libvulkan*
        lrwxrwxrwx 1 root root 64 Feb  1 10:22 /usr/lib/aarch64-linux-gnu/libvulkan.so -> /usr/local/lib/aarch64-linux-gnu/libmali-bifrost-g31-rxp0-gbm.so
        lrwxrwxrwx 1 root root 64 Feb  1 10:22 /usr/lib/aarch64-linux-gnu/libvulkan.so.1 -> /usr/local/lib/aarch64-linux-gnu/libmali-bifrost-g31-rxp0-gbm.so
        
        If I don't set the link of libvulkan.so like that (to use the patched libmali), I can't get any information from vulkaninfo, just an error (wrong driver) is shown.

        BTW, have you tested this run_loader_tests.sh?
        https://github.com/KhronosGroup/Vulkan- ... ster/tests
        Is there any missing path setup? :roll:

        Stenzek
        Posts: 1
        Joined: Tue Feb 25, 2020 9:43 pm
        languages_spoken: english
        ODROIDs: N2, GO-Advance
        Has thanked: 0
        Been thanked: 0
        Contact:

        Re: Question about the Vulkan capable emulators

        Post by Stenzek »

        Hi there! Thanks for looking into Vulkan support, it would be fantastic if it could be supported.

        Like valadaa48 said, that output from the buildroot looks like it's from a stub driver. For example, it shows support for BC texture compression, which as far as I'm aware isn't supported on Mali GPUs (usually only desktop), fp64, int64, etc.

        Looking at the driver linked in the wiki article:

        I'm no expert on the Mali blob, but I suspect this might be a compute-only driver. It seems to be missing the surface extensions, or it was perhaps not compiled with the correct WSI enabled? (gbm/wayland/etc)

        Some entry points do exist, e.g. `vkCreateDisplayPlaneSurfaceKHR` (for VK_KHR_display), but are simply stub functions and return `VK_ERROR_EXTENSION_NOT_PRESENT`.

        So, as best I can tell, we are unable to use this driver for graphics.

        joy
        Posts: 1584
        Joined: Fri Oct 02, 2015 1:44 pm
        languages_spoken: english
        ODROIDs: .
        Has thanked: 179 times
        Been thanked: 210 times

        Re: Question about the Vulkan capable emulators

        Post by joy »

        Stenzek wrote:
        Thu Feb 04, 2021 2:09 pm
        Hi there! Thanks for looking into Vulkan support, it would be fantastic if it could be supported.

        Like valadaa48 said, that output from the buildroot looks like it's from a stub driver. For example, it shows support for BC texture compression, which as far as I'm aware isn't supported on Mali GPUs (usually only desktop), fp64, int64, etc.

        Looking at the driver linked in the wiki article:

        I'm no expert on the Mali blob, but I suspect this might be a compute-only driver. It seems to be missing the surface extensions, or it was perhaps not compiled with the correct WSI enabled? (gbm/wayland/etc)

        Some entry points do exist, e.g. `vkCreateDisplayPlaneSurfaceKHR` (for VK_KHR_display), but are simply stub functions and return `VK_ERROR_EXTENSION_NOT_PRESENT`.

        So, as best I can tell, we are unable to use this driver for graphics.
        @Stenzek,
        Thank you for very detailed explanation. :)
        I don't have much knowledge of it, but thanks to you, now I can understand what we need.

        We will share test results and our discussion with Rockchip soon and ask to check the availability again.

        @valadaa48,
        Sorry. I misunderstood what you asked me to check. ;)

        AreaScout
        Posts: 1718
        Joined: Sun Jul 07, 2013 3:05 am
        languages_spoken: german, english
        ODROIDs: X2, U3, XU3, C2, HiFi Shield, XU4, XU4Q,
        N1, Go, VU5A, Show2, CloudShell2,
        H2, N2, VU7A, VuShell, Go2, C4
        Has thanked: 103 times
        Been thanked: 317 times
        Contact:

        Re: Question about the Vulkan capable emulators

        Post by AreaScout »

          @valadaa48

          You are right joy seems to test against a virtual GPU, I also run vulkaninfo and it shows MALI-G31 and it does not have the two extensions that for sure ! They are missing and without them we are out of luck - zero hero, Rockchip must provide them in order to proceed

          Code: Select all

          Device Properties and Extensions:
          =================================
          GPU0:
          VkPhysicalDeviceProperties:
          ---------------------------
                  apiVersion     = 4194412 (1.0.108)
                  driverVersion  = 54525952 (0x3400000)
                  vendorID       = 0x13b5
                  deviceID       = 0x70930000
                  deviceType     = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
                  deviceName     = Mali-G31
          
          Full output is here:

          Code: Select all

          odroid@goadvance:~/Vulkan-Tools/build/vulkaninfo$ ./vulkaninfo
          'DISPLAY' environment variable not set... skipping surface info
          error: XDG_RUNTIME_DIR not set in the environment.
          ==========
          VULKANINFO
          ==========
          
          Vulkan Instance Version: 1.0.108
          
          
          Instance Extensions: count = 4
          ==============================
                  VK_KHR_external_fence_capabilities     : extension revision 1
                  VK_KHR_external_memory_capabilities    : extension revision 1
                  VK_KHR_external_semaphore_capabilities : extension revision 1
                  VK_KHR_get_physical_device_properties2 : extension revision 1
          
          Layers: count = 0
          =================
          Presentable Surfaces:
          =====================
          
          Device Properties and Extensions:
          =================================
          GPU0:
          VkPhysicalDeviceProperties:
          ---------------------------
                  apiVersion     = 4194412 (1.0.108)
                  driverVersion  = 54525952 (0x3400000)
                  vendorID       = 0x13b5
                  deviceID       = 0x70930000
                  deviceType     = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
                  deviceName     = Mali-G31
          
          VkPhysicalDeviceLimits:
          -----------------------
                  maxImageDimension1D                             = 16384
                  maxImageDimension2D                             = 8192
                  maxImageDimension3D                             = 4096
                  maxImageDimensionCube                           = 8192
                  maxImageArrayLayers                             = 256
                  maxTexelBufferElements                          = 65536
                  maxUniformBufferRange                           = 65536
                  maxStorageBufferRange                           = 268435456
                  maxPushConstantsSize                            = 256
                  maxMemoryAllocationCount                        = 4294967295
                  maxSamplerAllocationCount                       = 4294967295
                  bufferImageGranularity                          = 0x00001000
                  sparseAddressSpaceSize                          = 0x00000000
                  maxBoundDescriptorSets                          = 4
                  maxPerStageDescriptorSamplers                   = 128
                  maxPerStageDescriptorUniformBuffers             = 12
                  maxPerStageDescriptorStorageBuffers             = 35
                  maxPerStageDescriptorSampledImages              = 16
                  maxPerStageDescriptorStorageImages              = 8
                  maxPerStageDescriptorInputAttachments           = 4
                  maxPerStageResources                            = 83
                  maxDescriptorSetSamplers                        = 768
                  maxDescriptorSetUniformBuffers                  = 72
                  maxDescriptorSetUniformBuffersDynamic           = 8
                  maxDescriptorSetStorageBuffers                  = 210
                  maxDescriptorSetStorageBuffersDynamic           = 4
                  maxDescriptorSetSampledImages                   = 96
                  maxDescriptorSetStorageImages                   = 48
                  maxDescriptorSetInputAttachments                = 4
                  maxVertexInputAttributes                        = 16
                  maxVertexInputBindings                          = 16
                  maxVertexInputAttributeOffset                   = 2047
                  maxVertexInputBindingStride                     = 2048
                  maxVertexOutputComponents                       = 128
                  maxTessellationGenerationLevel                  = 64
                  maxTessellationPatchSize                        = 32
                  maxTessellationControlPerVertexInputComponents  = 128
                  maxTessellationControlPerVertexOutputComponents = 128
                  maxTessellationControlPerPatchOutputComponents  = 120
                  maxTessellationControlTotalOutputComponents     = 4096
                  maxTessellationEvaluationInputComponents        = 128
                  maxTessellationEvaluationOutputComponents       = 128
                  maxGeometryShaderInvocations                    = 32
                  maxGeometryInputComponents                      = 64
                  maxGeometryOutputComponents                     = 128
                  maxGeometryOutputVertices                       = 256
                  maxGeometryTotalOutputComponents                = 1024
                  maxFragmentInputComponents                      = 128
                  maxFragmentOutputAttachments                    = 8
                  maxFragmentDualSrcAttachments                   = 0
                  maxFragmentCombinedOutputResources              = 51
                  maxComputeSharedMemorySize                      = 32768
                  maxComputeWorkGroupCount: count = 3
                          65536
                          65536
                          65536
                  maxComputeWorkGroupInvocations                  = 256
                  maxComputeWorkGroupSize: count = 3
                          256
                          256
                          256
                  subPixelPrecisionBits                           = 8
                  subTexelPrecisionBits                           = 8
                  mipmapPrecisionBits                             = 8
                  maxDrawIndexedIndexValue                        = 4294967295
                  maxDrawIndirectCount                            = 1
                  maxSamplerLodBias                               = 255
                  maxSamplerAnisotropy                            = 16
                  maxViewports                                    = 1
                  maxViewportDimensions: count = 2
                          8192
                          8192
                  viewportBoundsRange: count = 2
                          -16384
                          16383
                  viewportSubPixelBits                            = 0
                  minMemoryMapAlignment                           = 64
                  minTexelBufferOffsetAlignment                   = 0x00000100
                  minUniformBufferOffsetAlignment                 = 0x00000010
                  minStorageBufferOffsetAlignment                 = 0x00000100
                  minTexelOffset                                  = -8
                  maxTexelOffset                                  = 7
                  minTexelGatherOffset                            = -8
                  maxTexelGatherOffset                            = 7
                  minInterpolationOffset                          = -0.5
                  maxInterpolationOffset                          = 0.5
                  subPixelInterpolationOffsetBits                 = 4
                  maxFramebufferWidth                             = 8192
                  maxFramebufferHeight                            = 8192
                  maxFramebufferLayers                            = 256
                  framebufferColorSampleCounts: count = 3
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                  framebufferDepthSampleCounts: count = 3
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                  framebufferStencilSampleCounts: count = 3
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                  framebufferNoAttachmentsSampleCounts: count = 4
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                          SAMPLE_COUNT_16_BIT
                  maxColorAttachments                             = 8
                  sampledImageColorSampleCounts: count = 3
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                  sampledImageIntegerSampleCounts: count = 1
                          SAMPLE_COUNT_1_BIT
                  sampledImageDepthSampleCounts: count = 3
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                  sampledImageStencilSampleCounts: count = 3
                          SAMPLE_COUNT_1_BIT
                          SAMPLE_COUNT_4_BIT
                          SAMPLE_COUNT_8_BIT
                  storageImageSampleCounts: count = 1
                          SAMPLE_COUNT_1_BIT
                  maxSampleMaskWords                              = 1
                  timestampComputeAndGraphics                     = false
                  timestampPeriod                                 = 0
                  maxClipDistances                                = 0
                  maxCullDistances                                = 0
                  maxCombinedClipAndCullDistances                 = 0
                  discreteQueuePriorities                         = 2
                  pointSizeRange: count = 2
                          1
                          1024
                  lineWidthRange: count = 2
                          1
                          1
                  pointSizeGranularity                            = 0.0625
                  lineWidthGranularity                            = 0
                  strictLines                                     = true
                  standardSampleLocations                         = true
                  optimalBufferCopyOffsetAlignment                = 0x00000040
                  optimalBufferCopyRowPitchAlignment              = 0x00000040
                  nonCoherentAtomSize                             = 0x00000040
          
          VkPhysicalDeviceSparseProperties:
          ---------------------------------
                  residencyStandard2DBlockShape            = false
                  residencyStandard2DMultisampleBlockShape = false
                  residencyStandard3DBlockShape            = false
                  residencyAlignedMipSize                  = false
                  residencyNonResidentStrict               = false
          
          VkPhysicalDeviceIDPropertiesKHR:
          --------------------------------
                  deviceUUID      = 00009370-0100-0000-0000-000000000000
                  driverUUID      = 734b89eb-81c9-403d-1f26-81b26a1806a1
                  deviceNodeMask  = 0
                  deviceLUIDValid = false
          
          VkPhysicalDevicePointClippingPropertiesKHR:
          -------------------------------------------
                  pointClippingBehavior = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
          
          
          Device Extensions: count = 15
          -----------------------------
                  VK_KHR_16bit_storage                : extension revision 1
                  VK_KHR_dedicated_allocation         : extension revision 3
                  VK_KHR_descriptor_update_template   : extension revision 1
                  VK_KHR_external_fence               : extension revision 1
                  VK_KHR_external_fence_fd            : extension revision 1
                  VK_KHR_external_memory              : extension revision 1
                  VK_KHR_external_semaphore           : extension revision 1
                  VK_KHR_external_semaphore_fd        : extension revision 1
                  VK_KHR_get_memory_requirements2     : extension revision 1
                  VK_KHR_image_format_list            : extension revision 1
                  VK_KHR_maintenance1                 : extension revision 2
                  VK_KHR_maintenance2                 : extension revision 1
                  VK_KHR_shader_draw_parameters       : extension revision 1
                  VK_KHR_storage_buffer_storage_class : extension revision 1
                  VK_KHR_variable_pointers            : extension revision 1
          
          VkQueueFamilyProperties:
          ========================
                  queueProperties[0]:
                  -------------------
                          minImageTransferGranularity = (1,1,1)
                          queueCount                  = 2
                          queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER
                          timestampValidBits          = 0
                          present support             = false
          
          VkPhysicalDeviceMemoryProperties:
          =================================
          memoryHeaps: count = 1
                  memoryHeaps[0]:
                          size   = 932577280 (0x37960000) (889.38 MiB)
                          budget = 0 (0x00000000) (0.00 B)
                          usage  = 0 (0x00000000) (0.00 B)
                          flags: count = 1
                                  MEMORY_HEAP_DEVICE_LOCAL_BIT
          memoryTypes: count = 3
                  memoryTypes[0]:
                          heapIndex     = 0
                          propertyFlags = 0x0007: count = 3
                                  MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                                  MEMORY_PROPERTY_HOST_VISIBLE_BIT
                                  MEMORY_PROPERTY_HOST_COHERENT_BIT
                          usable for:
                                  IMAGE_TILING_OPTIMAL:
                                          color images
                                          FORMAT_D16_UNORM
                                          FORMAT_X8_D24_UNORM_PACK32
                                          FORMAT_D32_SFLOAT
                                          FORMAT_S8_UINT
                                          FORMAT_D24_UNORM_S8_UINT
                                          (non-sparse)
                                  IMAGE_TILING_LINEAR:
                                          color images
                                          (non-sparse)
                  memoryTypes[1]:
                          heapIndex     = 0
                          propertyFlags = 0x000b: count = 3
                                  MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                                  MEMORY_PROPERTY_HOST_VISIBLE_BIT
                                  MEMORY_PROPERTY_HOST_CACHED_BIT
                          usable for:
                                  IMAGE_TILING_OPTIMAL:
                                          color images
                                          FORMAT_D16_UNORM
                                          FORMAT_X8_D24_UNORM_PACK32
                                          FORMAT_D32_SFLOAT
                                          FORMAT_S8_UINT
                                          FORMAT_D24_UNORM_S8_UINT
                                          (non-sparse)
                                  IMAGE_TILING_LINEAR:
                                          color images
                                          (non-sparse)
                  memoryTypes[2]:
                          heapIndex     = 0
                          propertyFlags = 0x0011: count = 2
                                  MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                                  MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
                          usable for:
                                  IMAGE_TILING_OPTIMAL:
                                          None
                                  IMAGE_TILING_LINEAR:
                                          None
          
          VkPhysicalDeviceFeatures:
          =========================
                  robustBufferAccess                      = true
                  fullDrawIndexUint32                     = true
                  imageCubeArray                          = true
                  independentBlend                        = true
                  geometryShader                          = true
                  tessellationShader                      = true
                  sampleRateShading                       = true
                  dualSrcBlend                            = false
                  logicOp                                 = false
                  multiDrawIndirect                       = false
                  drawIndirectFirstInstance               = true
                  depthClamp                              = false
                  depthBiasClamp                          = true
                  fillModeNonSolid                        = false
                  depthBounds                             = false
                  wideLines                               = false
                  largePoints                             = true
                  alphaToOne                              = false
                  multiViewport                           = false
                  samplerAnisotropy                       = true
                  textureCompressionETC2                  = true
                  textureCompressionASTC_LDR              = true
                  textureCompressionBC                    = false
                  occlusionQueryPrecise                   = true
                  pipelineStatisticsQuery                 = false
                  vertexPipelineStoresAndAtomics          = false
                  fragmentStoresAndAtomics                = true
                  shaderTessellationAndGeometryPointSize  = false
                  shaderImageGatherExtended               = true
                  shaderStorageImageExtendedFormats       = true
                  shaderStorageImageMultisample           = false
                  shaderStorageImageReadWithoutFormat     = true
                  shaderStorageImageWriteWithoutFormat    = true
                  shaderUniformBufferArrayDynamicIndexing = true
                  shaderSampledImageArrayDynamicIndexing  = true
                  shaderStorageBufferArrayDynamicIndexing = true
                  shaderStorageImageArrayDynamicIndexing  = true
                  shaderClipDistance                      = false
                  shaderCullDistance                      = false
                  shaderFloat64                           = false
                  shaderInt64                             = false
                  shaderInt16                             = true
                  shaderResourceResidency                 = false
                  shaderResourceMinLod                    = false
                  sparseBinding                           = false
                  sparseResidencyBuffer                   = false
                  sparseResidencyImage2D                  = false
                  sparseResidencyImage3D                  = false
                  sparseResidency2Samples                 = false
                  sparseResidency4Samples                 = false
                  sparseResidency8Samples                 = false
                  sparseResidency16Samples                = false
                  sparseResidencyAliased                  = false
                  variableMultisampleRate                 = false
                  inheritedQueries                        = false
          
          VkPhysicalDevice16BitStorageFeaturesKHR:
          ----------------------------------------
                  storageBuffer16BitAccess           = true
                  uniformAndStorageBuffer16BitAccess = true
                  storagePushConstant16              = true
                  storageInputOutput16               = true
          
          VkPhysicalDeviceVariablePointersFeaturesKHR:
          --------------------------------------------
                  variablePointersStorageBuffer = true
                  variablePointers              = false
          

          LTronic
          Posts: 16
          Joined: Tue Jan 10, 2017 6:04 am
          languages_spoken: english, french
          ODROIDs: ODROID XU4
          Has thanked: 0
          Been thanked: 0
          Contact:

          Re: Question about the Vulkan capable emulators

          Post by LTronic »

          Have been implementing this new libmali drop for OGA/OGS batocera.linux support.
          Either using libvulkan.so (symlinked to new libmali) or through proper vulkan-loader + ICD to libmali I do confirm the same issue, and we need to have at least those two extensions in order to use it for rendering :

          VK_KHR_surface
          VK_KHR_display (depends on VK_KHR_surface)

          Is it handled by odroid or rockchip (so I can create an issue on their GitHub) ?

          User avatar
          odroid
          Site Admin
          Posts: 38033
          Joined: Fri Feb 22, 2013 11:14 pm
          languages_spoken: English, Korean
          ODROIDs: ODROID
          Has thanked: 1999 times
          Been thanked: 1206 times
          Contact:

          Re: Question about the Vulkan capable emulators

          Post by odroid »

          We've asked about the missing extensions to Rockchip. They likely forward the questions to ARM GPU driver developers.
          But, China has started their very long holidays and we will have an answer a couple of weeks later.
          These users thanked the author odroid for the post (total 3):
          AreaScout (Mon Feb 08, 2021 6:45 pm) • darkclone (Tue Feb 09, 2021 12:23 am) • davidb2111 (Tue Feb 23, 2021 2:23 am)

          AreaScout
          Posts: 1718
          Joined: Sun Jul 07, 2013 3:05 am
          languages_spoken: german, english
          ODROIDs: X2, U3, XU3, C2, HiFi Shield, XU4, XU4Q,
          N1, Go, VU5A, Show2, CloudShell2,
          H2, N2, VU7A, VuShell, Go2, C4
          Has thanked: 103 times
          Been thanked: 317 times
          Contact:

          Re: Question about the Vulkan capable emulators

          Post by AreaScout »

            Thx for the feedback

            LTronic
            Posts: 16
            Joined: Tue Jan 10, 2017 6:04 am
            languages_spoken: english, french
            ODROIDs: ODROID XU4
            Has thanked: 0
            Been thanked: 0
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by LTronic »

            odroid wrote:
            Mon Feb 08, 2021 9:18 am
            We've asked about the missing extensions to Rockchip. They likely forward the questions to ARM GPU driver developers.
            But, China has started their very long holidays and we will have an answer a couple of weeks later.
            Thanks a lot for that.
            No hurry, that's a big win for everyone if we got this, whatever timing it is.

            GoonieSlacker
            Posts: 3
            Joined: Wed Feb 17, 2021 7:43 pm
            languages_spoken: english spanish
            ODROIDs: ODROID GO Super
            Has thanked: 0
            Been thanked: 0
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by GoonieSlacker »

            Hi all. I'm trying to reproduce the steps from https://wiki.odroid.com/odroid_go_advan ... _on_rk3326. I have managed to build the kernel branch https://github.com/hardkernel/linux/tre ... dgoA-4.4.y like it says the page but when i run it in my odroid go super then my wifi dongle doesn't work anymore and some buttons like volume control don't work. What kernel branch is used to build https://wiki.odroid.com/odroid_go_advan ... ntu_es#v21 ?

            Regards

            User avatar
            odroid
            Site Admin
            Posts: 38033
            Joined: Fri Feb 22, 2013 11:14 pm
            languages_spoken: English, Korean
            ODROIDs: ODROID
            Has thanked: 1999 times
            Been thanked: 1206 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by odroid »

            @GoonieSlacker, You probably didn't install kernel driver modules since that branch is correct one.

            GoonieSlacker
            Posts: 3
            Joined: Wed Feb 17, 2021 7:43 pm
            languages_spoken: english spanish
            ODROIDs: ODROID GO Super
            Has thanked: 0
            Been thanked: 0
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by GoonieSlacker »

            Yes. That was the problem. Thank you!

            LTronic
            Posts: 16
            Joined: Tue Jan 10, 2017 6:04 am
            languages_spoken: english, french
            ODROIDs: ODROID XU4
            Has thanked: 0
            Been thanked: 0
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by LTronic »

            odroid wrote:
            Mon Feb 08, 2021 9:18 am
            We've asked about the missing extensions to Rockchip. They likely forward the questions to ARM GPU driver developers.
            But, China has started their very long holidays and we will have an answer a couple of weeks later.
            Any news on this from HardKernel or RockChip ?

            User avatar
            odroid
            Site Admin
            Posts: 38033
            Joined: Fri Feb 22, 2013 11:14 pm
            languages_spoken: English, Korean
            ODROIDs: ODROID
            Has thanked: 1999 times
            Been thanked: 1206 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by odroid »

            I was about to write a bad news from Rockchip.

            They agreed that the GPU Vulkan driver doesn't have some important extensions, but they don't seem to find a way to fix it due to their uncertain internal issues.
            Therefore, we don't have any hope that Vulkan will be available on the RK3326 Linux platform in the near future.
            Sorry for the bad news.
            These users thanked the author odroid for the post:
            shanti (Tue Mar 09, 2021 3:21 pm)

            Franck313
            Posts: 32
            Joined: Sun Mar 22, 2020 4:54 am
            languages_spoken: english
            ODROIDs: Odroid Go Advance
            Has thanked: 2 times
            Been thanked: 1 time
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by Franck313 »

            No news ? All chance is gone ? So bad :((((

            crashoverride
            Posts: 5407
            Joined: Tue Dec 30, 2014 8:42 pm
            languages_spoken: english
            ODROIDs: C1
            Has thanked: 0
            Been thanked: 465 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by crashoverride »

            Franck313 wrote:
            Sat Mar 27, 2021 6:00 pm
            All chance is gone ?
            There is still hope:
            https://www.collabora.com/news-and-blog ... -gpus.html
            These users thanked the author crashoverride for the post:
            odroid (Mon Mar 29, 2021 9:35 am)

            escalade
            Posts: 286
            Joined: Thu Mar 14, 2019 8:34 pm
            languages_spoken: english and norwegian
            Has thanked: 16 times
            Been thanked: 134 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by escalade »

            Not much hope there either, unless Rockchip suddenly were to support newer kernels. Even the XU4 out so many years is still stuck on 4.14, and the OGA on 4.4 which doesn't even have DMA-BUF support. There was a succesful effort to get 5.0 working (now abandoned) on the XU4, but the Midgard support in Panfrost still has major issues and isn't useable for much. It seems like once a SoC is out on the market nobody cares about previous gen. One can only dream about a decent handheld with upstream kernel support and open source graphics.
            These users thanked the author escalade for the post:
            odroid (Wed Mar 31, 2021 11:12 am)
            Maintainer of RetroELEC (XU4 / OGA / x86_64)

            stmicro
            Posts: 255
            Joined: Tue Apr 28, 2015 4:23 pm
            languages_spoken: english, chinese
            ODROIDs: Many Odroids and Rpis.
            Location: shenzhen china
            Has thanked: 0
            Been thanked: 2 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by stmicro »

            Kernel 5.10 GPU driver works nicely and stably on my XU4 and HC2 boards from a couple of months ago. But VPU driver still has some issues unfortunately. viewtopic.php?f=184&t=41300
            Upstream kernel with the panfrost driver also worked on OGA OGS stuff even it is far from a production level. viewtopic.php?p=323742#p323742 https://www.cnx-software.com/2020/06/09 ... urce-code/

            crashoverride
            Posts: 5407
            Joined: Tue Dec 30, 2014 8:42 pm
            languages_spoken: english
            ODROIDs: C1
            Has thanked: 0
            Been thanked: 465 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by crashoverride »

            escalade wrote:
            Wed Mar 31, 2021 10:15 am
            Even the XU4 out so many years is still stuck on 4.14,
            There may be a communication issue because I have been using the 5.4 kernel on XU4 and everything I tested works. I have tested CPU, GPU, G2D, IPP/GScaler, MFC encode/decode, and JPEG decode.
            https://wiki.odroid.com/odroid-xu4/os_i ... ubuntu_5.4
            stmicro wrote:
            Wed Mar 31, 2021 11:04 am
            the OGA on 4.4 which doesn't even have DMA-BUF support.
            The OGA with 4.4 kernel does support and utilize DMA-BUF:
            https://github.com/hardkernel/linux/blo ... 1089-L1116
            https://github.com/OtherCrashOverride/l ... #L493-L505
            https://github.com/OtherCrashOverride/l ... lay.c#L583

            escalade
            Posts: 286
            Joined: Thu Mar 14, 2019 8:34 pm
            languages_spoken: english and norwegian
            Has thanked: 16 times
            Been thanked: 134 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by escalade »

            crashoverride wrote:
            Wed Mar 31, 2021 11:56 am
            There may be a communication issue because I have been using the 5.4 kernel on XU4 and everything I tested works. I have tested CPU, GPU, G2D, IPP/GScaler, MFC encode/decode, and JPEG decode.
            https://wiki.odroid.com/odroid-xu4/os_i ... ubuntu_5.4
            Unless I'm mistaken, the latest official kernel sources are here: https://github.com/hardkernel/linux/com ... xu4-4.14.y

            I might be wrong on this, but I'm guessing that Ubuntu image is based on this unofficial tree that was never rebased: https://github.com/mihailescu2m/linux/t ... dxu4-5.4.y

            That's interesting though, I might have a look at the LTS kernel patches and integrate them in my own image thx.

            In any case, I was talking about the Panfrost driver which is far from ready (for day to day use). I would be thrilled if the situation changed any time soon, but I'm not holding my breath :/
            I stand corrected on that one.
            These users thanked the author escalade for the post (total 2):
            odroid (Wed Mar 31, 2021 4:36 pm) • shanti (Sat May 22, 2021 4:15 pm)
            Maintainer of RetroELEC (XU4 / OGA / x86_64)

            crashoverride
            Posts: 5407
            Joined: Tue Dec 30, 2014 8:42 pm
            languages_spoken: english
            ODROIDs: C1
            Has thanked: 0
            Been thanked: 465 times
            Contact:

            Re: Question about the Vulkan capable emulators

            Post by crashoverride »

            escalade wrote:
            Wed Mar 31, 2021 1:04 pm
            Unless I'm mistaken, the latest official kernel sources are here: https://github.com/hardkernel/linux/com ... xu4-4.14.y

            I might be wrong on this, but I'm guessing that Ubuntu image is based on this unofficial tree that was never rebased: https://github.com/mihailescu2m/linux/t ... dxu4-5.4.y
            The kernel source (that I tested) is provided by HK here:
            https://github.com/hardkernel/linux/tree/odroid-5.4.y
            These users thanked the author crashoverride for the post (total 2):
            shanti (Sat May 22, 2021 4:15 pm) • escalade (Fri Jun 04, 2021 6:36 pm)

            Post Reply

            Return to “Platform development”

            Who is online

            Users browsing this forum: No registered users and 0 guests