meta-flutter / meta-flutter

Google Flutter for Yocto
MIT License
143 stars 68 forks source link

[scarthgap] visionfive 2 #454

Open jwinarske opened 8 months ago

jwinarske commented 8 months ago

https://doc-en.rvspace.org/Doc_Center/visionfive_2.html

https://github.com/meta-flutter/meta-flutter/issues/453 https://github.com/jwinarske/meta-vulkan/issues/19 https://github.com/jwinarske/meta-vulkan/issues/18

The following config/patch produces a core-image-weston image:

layers

Build Configuration:
BB_VERSION           = "2.0.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "riscv64-poky-linux"
MACHINE              = "starfive-visionfive2"
DISTRO               = "poky"
DISTRO_VERSION       = "4.0.14"
TUNE_FEATURES        = "riscv64"
meta                 
meta-poky            
meta-yocto-bsp       = "HEAD:d8d6d921fad14b82167d9f031d4fca06b5e01883"
meta-oe              
meta-python          
meta-networking      
meta-multimedia      
meta-filesystems     = "HEAD:8a75c61cce2aa1d6e5a3597ab8fc5a7e6aeae1e4"
meta-clang           = "HEAD:79169d9be565b7a87310ca280d3a21aaf608ce33"
meta-riscv           = "kirkstone:0bd22610f8f4f0b17efcfba08b29f58fb3e6d3f0"
meta-starfive        = "starfive-kirkstone:65fb9a3903375d63538a7571c86ef3d30ef15842"
meta-vulkan          = "kirkstone:f20ac7ad576fa1fb63f198dd88594ed8e7a760d7"
meta-qt5             = "HEAD:ae8a97f79364bed1abc297636f7933d0e35f22be"
meta-flutter         = "kirkstone:f8329e73810a00dfbcf1bccbb55bb7d64367d647"

conf/local.conf

MACHINE ?= "starfive-visionfive2"
INHERIT += "rm_work"

INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INIT_MANAGER = "systemd"
DISTRO_FEATURES:append = " wayland opengl"

# localization
DEFAULT_TIMEZONE = "America/Los_Angeles"
ENABLE_BINARY_LOCALE_GENERATION = "1"
IMAGE_LINGUAS:append = " en-us en-gb es-us"
GLIBC_GENERATE_LOCALES:append = " en_US.UTF-8 es_US.UTF-8 en_GB.UTF-8"
IMAGE_INSTALL:append = " \
    tzdata-core \
    tzdata-americas \
"

DISTRO_FEATURES:append = " systemd alsa wifi bluetooth usbhost pipewire x11"
DISTRO_FEATURES:remove = "sysvinit usbgadget ptest xen"

COMBINED_FEATURES += "alsa "
INIT_MANAGER = "systemd"

DISTRO_FEATURES:append = " opengl wayland pam"
PACKAGECONFIG:append:pn-weston = " remoting"

DISTRO_FEATURES:append = " vulkan"
IMAGE_INSTALL:append = " \
    vulkan-tools \
    vulkan-caps-viewer \
    sascha-samples \
    vkcube \
    comp-surf-pbr \
    dart-sdk \
    \
    \
    mesa-pvr \
    ffmpeg \
    libsf-codaj12 \
    libsf-omxil \
    libsf-wave420l \
    libsf-wave511 \
    jpu-module \
    vdec-module \
    venc-module \
"

PREFERRED_PROVIDER_mesa = "mesa-pvr"
PACKAGECONFIG:append:pn-mesa-pvr = " gles egl"

BBMASK += "libforms nginx"

meta-starfive starfive-kirkstone patch

From 1ddc1aab2f8a8cddf0d7a67fd3134980492003c6 Mon Sep 17 00:00:00 2001
From: Joel Winarske <joel.winarske@gmail.com>
Date: Fri, 15 Mar 2024 11:51:33 -0700
Subject: [PATCH] changes to work

Signed-off-by: Joel Winarske <joel.winarske@gmail.com>
---
 recipes-bsp/starfive-tool/starfive-tool.bb    | 36 ++++++-------------
 recipes-bsp/u-boot/u-boot-starfive.bb         |  4 +--
 .../images/core-image-minimal-xfce.bbappend   | 29 ---------------
 .../packagegroups/packagegroup-starfive-c.bb  |  1 -
 recipes-graphics/mesa/mesa-pvr.inc            |  4 +--
 recipes-httpd/nginx/nginx_%.bbappend          |  9 -----
 6 files changed, 14 insertions(+), 69 deletions(-)
 delete mode 100644 recipes-core/images/core-image-minimal-xfce.bbappend
 delete mode 100644 recipes-httpd/nginx/nginx_%.bbappend

diff --git a/recipes-bsp/starfive-tool/starfive-tool.bb b/recipes-bsp/starfive-tool/starfive-tool.bb
index 7934412..da6ed04 100644
--- a/recipes-bsp/starfive-tool/starfive-tool.bb
+++ b/recipes-bsp/starfive-tool/starfive-tool.bb
@@ -1,38 +1,22 @@
 DESCRIPTION = "Starfive Tools"

 LICENSE = "CLOSED"
-LIC_FILES_CHKSUM = ""
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e6dc25dc2418b8831c906d43809d8336"

-LICENSE:starfive-visionfive2 = "GPL-2.0"
-LIC_FILES_CHKSUM:starfive-visionfive2 = "file://LICENSE;md5=e6dc25dc2418b8831c906d43809d8336"
+SRC_URI = "\
+    git://github.com/starfive-tech/soft_3rdpart;protocol=https;lfs=0;branch=JH7110_VisionFive2_devel \
+"

-LICENSE:starfive-jh8100 = "CLOSED"
-LIC_FILES_CHKSUM:starfive-jh8100 = ""
+SRCREV = "5eca20d2ce6fb7b18044bfe30c5bfd7f8f47958d"

-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+S = "${WORKDIR}/git/spl_tool"

-SRC_URI:starfive-visionfive2 = "git://git@192.168.110.45/sdk/soft_3rdpart;protocol=ssh;branch=jh7110-devel"
-SRC_URI:starfive-jh8100 = "file://jh8100_cst.tar.gz \
-           "
-
-SRCREV:starfive-visionfive2 = "10f543ca35e14809a9b4e9df814b798aa4362d14"
-
-S:starfive-visionfive2 = "${WORKDIR}/git/spl_tool"
-
-do_compile:starfive-visionfive2() {
-   oe_runmake -C ${S}
-}
-
-do_compile:starfive-jh8100() {
-   oe_runmake -C ${WORKDIR}/jh8100_cst
-}
-
-do_install:starfive-visionfive2() {
-   install -Dm 0755 ${S}/spl_tool ${D}/${bindir}/spl_tool
+do_compile() {
+    oe_runmake -C ${S}
 }

-do_install:starfive-jh8100() {
-   cp -r  ${WORKDIR}/jh8100_cst ${DEPLOY_DIR_IMAGE}/jh8100_cst
+do_install() {
+    install -Dm 0755 ${S}/spl_tool ${D}/${bindir}/spl_tool
 }

 BBCLASSEXTEND = "native"
diff --git a/recipes-bsp/u-boot/u-boot-starfive.bb b/recipes-bsp/u-boot/u-boot-starfive.bb
index e13149b..c3e338a 100644
--- a/recipes-bsp/u-boot/u-boot-starfive.bb
+++ b/recipes-bsp/u-boot/u-boot-starfive.bb
@@ -15,7 +15,7 @@ SRCREV:starfive-dubhe = "cef715ce412e97f17acab08529540c9fa317a923"

 FORK:starfive-visionfive2 = "starfive-tech"
 BRANCH:starfive-visionfive2 = "JH7110_VisionFive2_devel"
-SRCREV:starfive-visionfive2 = "b6e2b0e85c774a18ae668223a6e5f7d335895243"
+SRCREV:starfive-visionfive2 = "223ac8b1e907924d3891b3be1b2f6620b56bff31"

 FORK:starfive-jh8100 = "starfive-tech"
 BRANCH:starfive-jh8100 = "jh8100_fpga_dev_v2023.01-bmc-30Nov"
@@ -28,7 +28,7 @@ SRC_URI:starfive-dubhe = "\
    "

 SRC_URI:starfive-visionfive2 = "\
-   git://github.com/${FORK}/u-boot.git;protocol=ssh;branch=${BRANCH} \
+   git://github.com/${FORK}/u-boot.git;protocol=https;branch=${BRANCH} \
    file://vf2_uEnv.txt \
    file://vf2_nvme_uEnv.txt \
    file://tftp-mmc-boot.txt \
diff --git a/recipes-core/images/core-image-minimal-xfce.bbappend b/recipes-core/images/core-image-minimal-xfce.bbappend
deleted file mode 100644
index 5dd6e95..0000000
--- a/recipes-core/images/core-image-minimal-xfce.bbappend
+++ /dev/null
@@ -1,29 +0,0 @@
-require sd-image.inc
-
-DEPENDS += " opensbi starfive-tool-native u-boot-tools-native dtc-native"
-
-IMAGE_INSTALL += " \
-   helloworld \
-   coremark \
-   dhrystone \
-   perf \
-   gdb \
-   gdbserver \
-   util-linux \
-   ethtool \
-   bmap-tools \
-   systemd-analyze \
-   e2fsprogs-resize2fs \
-   mesa-pvr \
-   visionfive2-pvr-graphics \
-   glmark2 \
-   ffmpeg \
-   libsf-codaj12 \
-   libsf-omxil \
-   libsf-wave420l \
-   libsf-wave511 \
-   jpu-module \
-   vdec-module \
-   venc-module \
-   openssh \
-   "
diff --git a/recipes-core/packagegroups/packagegroup-starfive-c.bb b/recipes-core/packagegroups/packagegroup-starfive-c.bb
index b2d0abd..bf0b34f 100644
--- a/recipes-core/packagegroups/packagegroup-starfive-c.bb
+++ b/recipes-core/packagegroups/packagegroup-starfive-c.bb
@@ -59,7 +59,6 @@ RDEPENDS:${PN} = "\
     netbase \
     net-snmp \
     nfs-utils \
-    nginx \
     ntp \
     openldap \
     openssh \
diff --git a/recipes-graphics/mesa/mesa-pvr.inc b/recipes-graphics/mesa/mesa-pvr.inc
index 2dedc2d..7b3466f 100644
--- a/recipes-graphics/mesa/mesa-pvr.inc
+++ b/recipes-graphics/mesa/mesa-pvr.inc
@@ -107,6 +107,8 @@ PROVIDES = " \
     ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \
     ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \
     virtual/mesa \
+    virtual/libgles1 \
+    virtual/libgles3 \
     "

 inherit meson pkgconfig python3native gettext features_check
@@ -147,8 +149,6 @@ EXTRA_OEMESON = " \
     -Dglx-read-only-text=true \
     -Dplatforms='${@",".join("${PLATFORMS}".split())}' \
     -Ddri-drivers=pvr \
-    -Dgles1=disabled \
-    -Dgles2=disabled \
 "

 def strip_comma(s):
diff --git a/recipes-httpd/nginx/nginx_%.bbappend b/recipes-httpd/nginx/nginx_%.bbappend
deleted file mode 100644
index f3d56c6..0000000
--- a/recipes-httpd/nginx/nginx_%.bbappend
+++ /dev/null
@@ -1,9 +0,0 @@
-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
-
-SRCREV = "2f67cde5a0aaf7cffd43a71f5c4b443698909f4a"
-
-SRC_URI += " \
-    git://github.com/fdintino/nginx-upload-module.git;branch=master;destsuffix=nginx-upload-module;protocol=ssh \
-"
-
-EXTRA_OECONF += "--add-module=${WORKDIR}/nginx-upload-module "
-- 
2.44.0
jwinarske commented 8 months ago

PXL_20240315_234739828

drm_info reporting: https://drmdb.emersion.fr/snapshots/7228be56432f

jwinarske commented 8 months ago

dmesg.log

jwinarske commented 8 months ago

https://www.phoronix.com/review/visionfive2-riscv-benchmarks

jwinarske commented 8 months ago

UEFI

export WORKSPACE=/work/git/tianocore
mkdir -p $WORKSPACE
cd $WORKSPACE

git clone https://github.com/tianocore/edk2.git
pushd edk2
git checkout edk2-stable202311
git submodule update --init
popd

git clone https://github.com/tianocore/edk2-platforms.git
pushd edk2-platforms
git submodule update --init
git apply ../patches/DesignWare/0001-DesignWare-DwEmmcDxe-Enabled-Internal-IDMAC-interrup.patch
git apply ../patches/DesignWare/0002-DesignWare-DwEmmcDxe-Add-CPU-little-endian-option.patch
git apply ../patches/DesignWare/0003-DesignWare-DwEmmcDxe-Remove-ARM-dependency-library.patch
git apply ../patches/DesignWare/0004-DesignWare-DwEmmcDxe-Add-handling-for-SDMMC.patch
git apply ../patches/DesignWare/0004-DesignWare-DwEmmcDxe-Add-handling-for-SDMMC.patc
git apply ../patches/DesignWare/0004-DesignWare-DwEmmcDxe-Add-handling-for-SDMMC.patch
git apply ../patches/DesignWare/0005-Force-DMA-buffer-to-allocate-below-4GB.patch
git apply ../patches/Starfive/0001-Add_Pci_controller_driver.patch
git apply ../patches/Starfive/0002-Add_SPI_protocol_and_driver_support.patch
git apply ../patches/Starfive/0003-Add_firmware_volume_block_protocol.patch
git apply ../patches/Starfive/0004-Add_JH7110_Silicon_Package.patch
git apply ../patches/Starfive/0005-Add_VisionFive_2_platform.patch
popd

git clone https://github.com/tianocore/edk2-non-osi.git

export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi

sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel
git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git
pushd riscv-gnu-toolchain
./configure --prefix=/opt/riscv
mkdir /opt/riscv
sudo chown -R $USER:$USER /opt/riscv
make linux

export PATH=$PATH:/opt/riscv/bin
export GCC5_RISCV64_PREFIX=riscv64-unknown-linux-gnu-

cd $WORKSPACE
source ./edksetup.sh
export NUM_CPUS=$((`getconf _NPROCESSORS_ONLN` + 2))
build -n $NUM_CPUS -a RISCV64 -t GCC5 -p Platform/StarFive/VisionFive2/VisionFive2.dsc

DesignWarePatches.zip VisionFive2Patches.zip FV_Release.zip

jwinarske commented 8 months ago

https://github.com/starfive-tech/edk2/wiki/How-to-flash-image-into-QSPI-Flash

jwinarske commented 8 months ago

Flash Recovery via RS-232: https://github.com/starfive-tech/Tools/tree/master#recovery

jwinarske commented 8 months ago

Moved to https://github.com/riscv/meta-riscv master

conf/local.conf

MACHINE ?= "visionfive2"

INHERIT += "rm_work"

INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INIT_MANAGER = "systemd"
DISTRO_FEATURES:append = " wayland opengl"

# localization
DEFAULT_TIMEZONE = "America/Los_Angeles"
# ENABLE_BINARY_LOCALE_GENERATION = "1"
# IMAGE_LINGUAS:append = " en-us"
# GLIBC_GENERATE_LOCALES:append = " en_US.UTF-8"
IMAGE_INSTALL:append = " \
    tzdata-core \
    tzdata-americas \
"

DISTRO_FEATURES:append = " systemd alsa wifi bluetooth usbhost pipewire"
DISTRO_FEATURES:remove = "sysvinit usbgadget ptest xen x11"

COMBINED_FEATURES += "alsa "
INIT_MANAGER = "systemd"

LICENSE_FLAGS_ACCEPTED += " commercial"

DISTRO_FEATURES:append = " opengl wayland pam"
PACKAGECONFIG:append:pn-weston = " remoting"

DISTRO_FEATURES:append = " vulkan"
IMAGE_INSTALL:append = " \
    \
    curl \
    geoclue \
    gpsd \
    \
    dart-sdk \
    \
    vulkan-tools \
    vulkan-caps-viewer \
    sascha-samples \
    vkcube \
    drm-info \
    \
    pipewire \
    pipewire-modules-meta \
    pipewire-modules-rt \
    pipewire-spa-plugins-meta \
    pipewire-spa-plugins-alsa \
    pipewire-spa-plugins-audioconvert \
    pipewire-spa-plugins-audiomixer \
    pipewire-spa-plugins-bluez5 \
    pipewire-spa-plugins-codec-bluez5-aac \
    pipewire-spa-plugins-codec-bluez5-faststream \
    pipewire-spa-plugins-codec-bluez5-opus \
    pipewire-spa-plugins-codec-bluez5-sbc \
    pipewire-spa-plugins-dbus \
    pipewire-spa-plugins-ffmpeg \
    pipewire-spa-plugins-libcamera \
    pipewire-spa-plugins-volume \
    pipewire-spa-plugins-vulkan \
    pipewire-alsa \
    gstreamer1.0-pipewire \
    pipewire-tools \
    pipewire-spa-tools \
    alsa-utils \
    pipewire-spa-plugins-libcamera \
    \
    ffmpeg \
    libsf-codaj12 \
    libsf-omxil \
    libsf-wave420l \
    libsf-wave511 \
    jpu-module \
    vdec-module \
    venc-module \
    \
    v4l-utils \
    i2c-tools \
    canutils \
    \
    visionfive2-pvr-graphics \
    \
    gdb \
    ldd \
    strace \
"

PACKAGECONFIG:append:pn-mesa-pvr = " egl"
PACKAGECONFIG:remove:pn-qtbase = " gl"
PACKAGECONFIG:append:pn-qtbase = " gles2"

drm_info

/dev/dri/card1: data uploaded to https://drmdb.emersion.fr/snapshots/1e04f6c29705
/dev/dri/card0: data uploaded to https://drmdb.emersion.fr/snapshots/19db21e516c8

vulkaninfo

$ vulkaninfo
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.275

Instance Extensions: count = 9
==============================
        VK_EXT_debug_report                    : extension revision 10
        VK_EXT_debug_utils                     : extension revision 2
        VK_KHR_device_group_creation           : extension revision 1
        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 2
        VK_KHR_portability_enumeration         : extension revision 1
        VK_LUNARG_direct_driver_loading        : extension revision 1

Layers:
=======
Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
        apiVersion        = 1.3.225 (4206817)
        driverVersion     = 1.525.317 (6345021)
        vendorID          = 0x1010
        deviceID          = 0x36054182
        deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
        deviceName        = PowerVR B-Series BXE-4-32
        pipelineCacheUUID = 3dd16000-2432-0036-00b6-0014632b6500

VkPhysicalDeviceLimits:
-----------------------
        maxImageDimension1D                             = 8192
        maxImageDimension2D                             = 8192
        maxImageDimension3D                             = 2048
        maxImageDimensionCube                           = 8192
        maxImageArrayLayers                             = 2048
        maxTexelBufferElements                          = 65536
        maxUniformBufferRange                           = 134217728
        maxStorageBufferRange                           = 134217728
        maxPushConstantsSize                            = 256
        maxMemoryAllocationCount                        = 4294967295
        maxSamplerAllocationCount                       = 4294967295
        bufferImageGranularity                          = 0x00000001
        sparseAddressSpaceSize                          = 0x4000000000
        maxBoundDescriptorSets                          = 8
        maxPerStageDescriptorSamplers                   = 32
        maxPerStageDescriptorUniformBuffers             = 64
        maxPerStageDescriptorStorageBuffers             = 36
        maxPerStageDescriptorSampledImages              = 48
        maxPerStageDescriptorStorageImages              = 8
        maxPerStageDescriptorInputAttachments           = 8
        maxPerStageResources                            = 224
        maxDescriptorSetSamplers                        = 256
        maxDescriptorSetUniformBuffers                  = 256
        maxDescriptorSetUniformBuffersDynamic           = 8
        maxDescriptorSetStorageBuffers                  = 256
        maxDescriptorSetStorageBuffersDynamic           = 8
        maxDescriptorSetSampledImages                   = 256
        maxDescriptorSetStorageImages                   = 256
        maxDescriptorSetInputAttachments                = 256
        maxVertexInputAttributes                        = 16
        maxVertexInputBindings                          = 16
        maxVertexInputAttributeOffset                   = 65535
        maxVertexInputBindingStride                     = 2147483648
        maxVertexOutputComponents                       = 68
        maxTessellationGenerationLevel                  = 0
        maxTessellationPatchSize                        = 0
        maxTessellationControlPerVertexInputComponents  = 0
        maxTessellationControlPerVertexOutputComponents = 0
        maxTessellationControlPerPatchOutputComponents  = 0
        maxTessellationControlTotalOutputComponents     = 0
        maxTessellationEvaluationInputComponents        = 0
        maxTessellationEvaluationOutputComponents       = 0
        maxGeometryShaderInvocations                    = 0
        maxGeometryInputComponents                      = 0
        maxGeometryOutputComponents                     = 0
        maxGeometryOutputVertices                       = 0
        maxGeometryTotalOutputComponents                = 0
        maxFragmentInputComponents                      = 68
        maxFragmentOutputAttachments                    = 8
        maxFragmentDualSrcAttachments                   = 8
        maxFragmentCombinedOutputResources              = 52
        maxComputeSharedMemorySize                      = 16384
        maxComputeWorkGroupCount: count = 3
                65536
                65536
                65536
        maxComputeWorkGroupInvocations                  = 512
        maxComputeWorkGroupSize: count = 3
                512
                512
                64
        subPixelPrecisionBits                           = 4
        subTexelPrecisionBits                           = 8
        mipmapPrecisionBits                             = 8
        maxDrawIndexedIndexValue                        = 4294967295
        maxDrawIndirectCount                            = 2147483648
        maxSamplerLodBias                               = 15
        maxSamplerAnisotropy                            = 16
        maxViewports                                    = 1
        maxViewportDimensions: count = 2
                8192
                8192
        viewportBoundsRange: count = 2
                -16384
                16384
        viewportSubPixelBits                            = 0
        minMemoryMapAlignment                           = 64
        minTexelBufferOffsetAlignment                   = 0x00000010
        minUniformBufferOffsetAlignment                 = 0x00000004
        minStorageBufferOffsetAlignment                 = 0x00000004
        minTexelOffset                                  = -8
        maxTexelOffset                                  = 7
        minTexelGatherOffset                            = -8
        maxTexelGatherOffset                            = 7
        minInterpolationOffset                          = -0.5
        maxInterpolationOffset                          = 0.5
        subPixelInterpolationOffsetBits                 = 4
        maxFramebufferWidth                             = 8192
        maxFramebufferHeight                            = 8192
        maxFramebufferLayers                            = 2048
        framebufferColorSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        framebufferDepthSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        framebufferStencilSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        framebufferNoAttachmentsSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        maxColorAttachments                             = 8
        sampledImageColorSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        sampledImageIntegerSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        sampledImageDepthSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        sampledImageStencilSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        storageImageSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT
        maxSampleMaskWords                              = 1
        timestampComputeAndGraphics                     = true
        timestampPeriod                                 = 1
        maxClipDistances                                = 8
        maxCullDistances                                = 8
        maxCombinedClipAndCullDistances                 = 8
        discreteQueuePriorities                         = 2
        pointSizeRange: count = 2
                1
                511
        lineWidthRange: count = 2
                0.0625
                16
        pointSizeGranularity                            = 0.0625
        lineWidthGranularity                            = 0.0625
        strictLines                                     = false
        standardSampleLocations                         = true
        optimalBufferCopyOffsetAlignment                = 0x00000004
        optimalBufferCopyRowPitchAlignment              = 0x00000004
        nonCoherentAtomSize                             = 0x00000001

VkPhysicalDeviceSparseProperties:
---------------------------------
        residencyStandard2DBlockShape            = false
        residencyStandard2DMultisampleBlockShape = false
        residencyStandard3DBlockShape            = false
        residencyAlignedMipSize                  = false
        residencyNonResidentStrict               = false

VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT:
----------------------------------------------------
        advancedBlendMaxColorAttachments      = 8
        advancedBlendIndependentBlend         = true
        advancedBlendNonPremultipliedSrcColor = false
        advancedBlendNonPremultipliedDstColor = false
        advancedBlendCorrelatedOverlap        = false
        advancedBlendAllOperations            = false

VkPhysicalDeviceCustomBorderColorPropertiesEXT:
-----------------------------------------------
        maxCustomBorderColorSamplers = 59

VkPhysicalDevicePipelineRobustnessPropertiesEXT:
------------------------------------------------
        defaultRobustnessStorageBuffers = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
        defaultRobustnessUniformBuffers = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
        defaultRobustnessVertexInputs = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
        defaultRobustnessImages = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT

VkPhysicalDeviceProvokingVertexPropertiesEXT:
---------------------------------------------
        provokingVertexModePerPipeline                       = true
        transformFeedbackPreservesTriangleFanProvokingVertex = false

VkPhysicalDevicePushDescriptorPropertiesKHR:
--------------------------------------------
        maxPushDescriptors = 32

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
----------------------------------------------------
        maxVertexAttribDivisor = 4294967295

VkPhysicalDeviceVulkan11Properties:
-----------------------------------
        deviceUUID                        = 33362035-3020-3534-2031-383200000000
        driverUUID                        = 36333435-3032-3100-0000-000000000000
        deviceNodeMask                    = 0
        deviceLUIDValid                   = false
        subgroupSize                      = 1
        subgroupSupportedStages: count = 3
                SHADER_STAGE_VERTEX_BIT
                SHADER_STAGE_FRAGMENT_BIT
                SHADER_STAGE_COMPUTE_BIT
        subgroupSupportedOperations: count = 6
                SUBGROUP_FEATURE_BASIC_BIT
                SUBGROUP_FEATURE_VOTE_BIT
                SUBGROUP_FEATURE_ARITHMETIC_BIT
                SUBGROUP_FEATURE_BALLOT_BIT
                SUBGROUP_FEATURE_SHUFFLE_BIT
                SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
        subgroupQuadOperationsInAllStages = false
        pointClippingBehavior             = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
        maxMultiviewViewCount             = 6
        maxMultiviewInstanceIndex         = 134217727
        protectedNoFault                  = true
        maxPerSetDescriptors              = 1024
        maxMemoryAllocationSize           = 0x40000000

VkPhysicalDeviceVulkan12Properties:
-----------------------------------
        driverID                                             = DRIVER_ID_IMAGINATION_PROPRIETARY
        driverName                                           = PowerVR B-Series Vulkan Driver
        driverInfo                                           = 1.19@6345021
        conformanceVersion:
                major    = 1
                minor    = 3
                subminor = 3
                patch    = 1
        denormBehaviorIndependence                           = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
        roundingModeIndependence                             = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
        shaderSignedZeroInfNanPreserveFloat16                = true
        shaderSignedZeroInfNanPreserveFloat32                = true
        shaderSignedZeroInfNanPreserveFloat64                = true
        shaderDenormPreserveFloat16                          = true
        shaderDenormPreserveFloat32                          = false
        shaderDenormPreserveFloat64                          = true
        shaderDenormFlushToZeroFloat16                       = false
        shaderDenormFlushToZeroFloat32                       = false
        shaderDenormFlushToZeroFloat64                       = false
        shaderRoundingModeRTEFloat16                         = true
        shaderRoundingModeRTEFloat32                         = true
        shaderRoundingModeRTEFloat64                         = true
        shaderRoundingModeRTZFloat16                         = false
        shaderRoundingModeRTZFloat32                         = false
        shaderRoundingModeRTZFloat64                         = false
        maxUpdateAfterBindDescriptorsInAllPools              = 0
        shaderUniformBufferArrayNonUniformIndexingNative     = false
        shaderSampledImageArrayNonUniformIndexingNative      = false
        shaderStorageBufferArrayNonUniformIndexingNative     = false
        shaderStorageImageArrayNonUniformIndexingNative      = false
        shaderInputAttachmentArrayNonUniformIndexingNative   = false
        robustBufferAccessUpdateAfterBind                    = false
        quadDivergentImplicitLod                             = false
        maxPerStageDescriptorUpdateAfterBindSamplers         = 0
        maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 0
        maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 0
        maxPerStageDescriptorUpdateAfterBindSampledImages    = 0
        maxPerStageDescriptorUpdateAfterBindStorageImages    = 0
        maxPerStageDescriptorUpdateAfterBindInputAttachments = 0
        maxPerStageUpdateAfterBindResources                  = 0
        maxDescriptorSetUpdateAfterBindSamplers              = 0
        maxDescriptorSetUpdateAfterBindUniformBuffers        = 0
        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 0
        maxDescriptorSetUpdateAfterBindStorageBuffers        = 0
        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 0
        maxDescriptorSetUpdateAfterBindSampledImages         = 0
        maxDescriptorSetUpdateAfterBindStorageImages         = 0
        maxDescriptorSetUpdateAfterBindInputAttachments      = 0
        supportedDepthResolveModes: count = 1
                RESOLVE_MODE_SAMPLE_ZERO_BIT
        supportedStencilResolveModes: count = 1
                RESOLVE_MODE_SAMPLE_ZERO_BIT
        independentResolveNone                               = true
        independentResolve                                   = true
        filterMinmaxSingleComponentFormats                   = false
        filterMinmaxImageComponentMapping                    = false
        maxTimelineSemaphoreValueDifference                  = 4294967295
        framebufferIntegerColorSampleCounts: count = 3
                SAMPLE_COUNT_1_BIT
                SAMPLE_COUNT_2_BIT
                SAMPLE_COUNT_4_BIT

VkPhysicalDeviceVulkan13Properties:
-----------------------------------
        minSubgroupSize                                                               = 1
        maxSubgroupSize                                                               = 1
        maxComputeWorkgroupSubgroups                                                  = 512
        requiredSubgroupSizeStages: count = 6
                SHADER_STAGE_VERTEX_BIT
                SHADER_STAGE_TESSELLATION_CONTROL_BIT
                SHADER_STAGE_TESSELLATION_EVALUATION_BIT
                SHADER_STAGE_GEOMETRY_BIT
                SHADER_STAGE_FRAGMENT_BIT
                SHADER_STAGE_COMPUTE_BIT
        maxInlineUniformBlockSize                                                     = 65536
        maxPerStageDescriptorInlineUniformBlocks                                      = 32
        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks                       = 32
        maxDescriptorSetInlineUniformBlocks                                           = 256
        maxDescriptorSetUpdateAfterBindInlineUniformBlocks                            = 256
        maxInlineUniformTotalSize                                                     = 4294967295
        integerDotProduct8BitUnsignedAccelerated                                      = false
        integerDotProduct8BitSignedAccelerated                                        = false
        integerDotProduct8BitMixedSignednessAccelerated                               = false
        integerDotProduct4x8BitPackedUnsignedAccelerated                              = false
        integerDotProduct4x8BitPackedSignedAccelerated                                = false
        integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = false
        integerDotProduct16BitUnsignedAccelerated                                     = false
        integerDotProduct16BitSignedAccelerated                                       = false
        integerDotProduct16BitMixedSignednessAccelerated                              = false
        integerDotProduct32BitUnsignedAccelerated                                     = false
        integerDotProduct32BitSignedAccelerated                                       = false
        integerDotProduct32BitMixedSignednessAccelerated                              = false
        integerDotProduct64BitUnsignedAccelerated                                     = false
        integerDotProduct64BitSignedAccelerated                                       = false
        integerDotProduct64BitMixedSignednessAccelerated                              = false
        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = false
        integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = false
        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = false
        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = false
        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = false
        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = false
        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = false
        integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = false
        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = false
        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = false
        integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = false
        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = false
        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = false
        integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = false
        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = false
        storageTexelBufferOffsetAlignmentBytes                                        = 0x00000010
        storageTexelBufferOffsetSingleTexelAlignment                                  = true
        uniformTexelBufferOffsetAlignmentBytes                                        = 0x00000010
        uniformTexelBufferOffsetSingleTexelAlignment                                  = false
        maxBufferSize                                                                 = 0x40000000

VkPhysicalDeviceHostImageCopyPropertiesEXT:
        copySrcLayoutCount                  = 0
        pCopySrcLayouts:
        copyDstLayoutCount                  = 0
        pCopyDstLayouts:
        optimalTilingLayoutUUID             = 00000000-0000-0000-0000-000000000000
        identicalMemoryTypeRequirements     = false
Device Extensions: count = 86
        VK_ARM_rasterization_order_attachment_access : extension revision 1
        VK_EXT_attachment_feedback_loop_layout       : extension revision 2
        VK_EXT_blend_operation_advanced              : extension revision 2
        VK_EXT_border_color_swizzle                  : extension revision 1
        VK_EXT_buffer_device_address                 : extension revision 2
        VK_EXT_conditional_rendering                 : extension revision 2
        VK_EXT_custom_border_color                   : extension revision 12
        VK_EXT_debug_marker                          : extension revision 4
        VK_EXT_depth_clip_control                    : extension revision 1
        VK_EXT_device_memory_report                  : extension revision 2
        VK_EXT_extended_dynamic_state                : extension revision 1
        VK_EXT_extended_dynamic_state2               : extension revision 1
        VK_EXT_external_memory_dma_buf               : extension revision 1
        VK_EXT_global_priority                       : extension revision 2
        VK_EXT_global_priority_query                 : extension revision 1
        VK_EXT_host_query_reset                      : extension revision 1
        VK_EXT_image_compression_control             : extension revision 1
        VK_EXT_image_drm_format_modifier             : extension revision 2
        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_pipeline_creation_cache_control       : extension revision 3
        VK_EXT_pipeline_creation_feedback            : extension revision 1
        VK_EXT_pipeline_robustness                   : extension revision 1
        VK_EXT_primitive_topology_list_restart       : extension revision 1
        VK_EXT_private_data                          : extension revision 1
        VK_EXT_provoking_vertex                      : extension revision 1
        VK_EXT_queue_family_foreign                  : extension revision 1
        VK_EXT_rasterization_order_attachment_access : extension revision 1
        VK_EXT_scalar_block_layout                   : extension revision 1
        VK_EXT_separate_stencil_usage                : extension revision 1
        VK_EXT_shader_demote_to_helper_invocation    : extension revision 1
        VK_EXT_subgroup_size_control                 : extension revision 2
        VK_EXT_subpass_merge_feedback                : extension revision 2
        VK_EXT_texel_buffer_alignment                : extension revision 1
        VK_EXT_tooling_info                          : extension revision 1
        VK_EXT_vertex_attribute_divisor              : extension revision 3
        VK_KHR_16bit_storage                         : extension revision 1
        VK_KHR_8bit_storage                          : extension revision 1
        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_depth_stencil_resolve                 : extension revision 1
        VK_KHR_descriptor_update_template            : extension revision 1
        VK_KHR_device_group                          : extension revision 4
        VK_KHR_draw_indirect_count                   : extension revision 1
        VK_KHR_driver_properties                     : extension revision 1
        VK_KHR_dynamic_rendering                     : 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_memory_fd                    : extension revision 1
        VK_KHR_external_semaphore                    : extension revision 1
        VK_KHR_external_semaphore_fd                 : extension revision 1
        VK_KHR_format_feature_flags2                 : extension revision 2
        VK_KHR_get_memory_requirements2              : extension revision 1
        VK_KHR_global_priority                       : extension revision 1
        VK_KHR_image_format_list                     : extension revision 1
        VK_KHR_imageless_framebuffer                 : extension revision 1
        VK_KHR_maintenance1                          : extension revision 2
        VK_KHR_maintenance2                          : extension revision 1
        VK_KHR_maintenance3                          : extension revision 1
        VK_KHR_maintenance4                          : extension revision 2
        VK_KHR_multiview                             : extension revision 1
        VK_KHR_push_descriptor                       : extension revision 2
        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_draw_parameters                : extension revision 1
        VK_KHR_shader_float16_int8                   : extension revision 1
        VK_KHR_shader_float_controls                 : extension revision 4
        VK_KHR_shader_integer_dot_product            : extension revision 1
        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_spirv_1_4                             : extension revision 1
        VK_KHR_storage_buffer_storage_class          : extension revision 1
        VK_KHR_synchronization2                      : 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_zero_initialize_workgroup_memory      : extension revision 1

VkQueueFamilyProperties:
========================
        queueProperties[0]:
        -------------------
                minImageTransferGranularity = (1,1,1)
                queueCount                  = 2
                queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
                timestampValidBits          = 64
                present support             = false
                VkQueueFamilyGlobalPriorityPropertiesKHR:
                -----------------------------------------
                        priorityCount  = 3
                        priorities: count = 3
                                QUEUE_GLOBAL_PRIORITY_LOW_KHR
                                QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR
                                QUEUE_GLOBAL_PRIORITY_HIGH_KHR

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
        memoryHeaps[0]:
                size   = 4062998528 (0xf22c7000) (3.78 GiB)
                flags: count = 1
                        MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 4
        memoryTypes[0]:
                heapIndex     = 0
                propertyFlags = 0x0001: count = 1
                        MEMORY_PROPERTY_DEVICE_LOCAL_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
                                FORMAT_D32_SFLOAT_S8_UINT
                                (non-sparse)
                        IMAGE_TILING_LINEAR:
                                color images
                                (non-sparse)
        memoryTypes[1]:
                heapIndex     = 0
                propertyFlags = 0x0011: count = 2
                        MEMORY_PROPERTY_DEVICE_LOCAL_BIT
                        MEMORY_PROPERTY_LAZILY_ALLOCATED_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
                                FORMAT_D32_SFLOAT_S8_UINT
                                (transient only)
                        IMAGE_TILING_LINEAR:
                                color images
                                (transient only)
        memoryTypes[2]:
                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
                                FORMAT_D32_SFLOAT_S8_UINT
                                (non-sparse)
                        IMAGE_TILING_LINEAR:
                                color images
                                (non-sparse)
        memoryTypes[3]:
                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
                                FORMAT_D32_SFLOAT_S8_UINT
                                (non-sparse)
                        IMAGE_TILING_LINEAR:
                                color images
                                (non-sparse)

VkPhysicalDeviceFeatures:
=========================
        robustBufferAccess                      = true
        fullDrawIndexUint32                     = true
        imageCubeArray                          = true
        independentBlend                        = true
        geometryShader                          = false
        tessellationShader                      = false
        sampleRateShading                       = true
        dualSrcBlend                            = true
        logicOp                                 = true
        multiDrawIndirect                       = true
        drawIndirectFirstInstance               = true
        depthClamp                              = true
        depthBiasClamp                          = true
        fillModeNonSolid                        = false
        depthBounds                             = false
        wideLines                               = true
        largePoints                             = true
        alphaToOne                              = true
        multiViewport                           = false
        samplerAnisotropy                       = true
        textureCompressionETC2                  = true
        textureCompressionASTC_LDR              = true
        textureCompressionBC                    = false
        occlusionQueryPrecise                   = true
        pipelineStatisticsQuery                 = false
        vertexPipelineStoresAndAtomics          = true
        fragmentStoresAndAtomics                = true
        shaderTessellationAndGeometryPointSize  = false
        shaderImageGatherExtended               = true
        shaderStorageImageExtendedFormats       = true
        shaderStorageImageMultisample           = false
        shaderStorageImageReadWithoutFormat     = true
        shaderStorageImageWriteWithoutFormat    = true
        shaderUniformBufferArrayDynamicIndexing = true
        shaderSampledImageArrayDynamicIndexing  = true
        shaderStorageBufferArrayDynamicIndexing = true
        shaderStorageImageArrayDynamicIndexing  = true
        shaderClipDistance                      = true
        shaderCullDistance                      = true
        shaderFloat64                           = false
        shaderInt64                             = true
        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

VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT:
--------------------------------------------------------
        attachmentFeedbackLoopLayout = true

VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT:
--------------------------------------------------
        advancedBlendCoherentOperations = true

VkPhysicalDeviceBorderColorSwizzleFeaturesEXT:
----------------------------------------------
        borderColorSwizzle          = true
        borderColorSwizzleFromImage = true

VkPhysicalDeviceBufferDeviceAddressFeaturesEXT:
-----------------------------------------------
        bufferDeviceAddress              = true
        bufferDeviceAddressCaptureReplay = false
        bufferDeviceAddressMultiDevice   = false

VkPhysicalDeviceConditionalRenderingFeaturesEXT:
------------------------------------------------
        conditionalRendering          = true
        inheritedConditionalRendering = false

VkPhysicalDeviceCustomBorderColorFeaturesEXT:
---------------------------------------------
        customBorderColors             = true
        customBorderColorWithoutFormat = false

VkPhysicalDeviceDepthClipControlFeaturesEXT:
--------------------------------------------
        depthClipControl = true

VkPhysicalDeviceDeviceMemoryReportFeaturesEXT:
----------------------------------------------
        deviceMemoryReport = true

VkPhysicalDeviceExtendedDynamicState2FeaturesEXT:
-------------------------------------------------
        extendedDynamicState2                   = true
        extendedDynamicState2LogicOp            = false
        extendedDynamicState2PatchControlPoints = false

VkPhysicalDeviceExtendedDynamicStateFeaturesEXT:
------------------------------------------------
        extendedDynamicState = true

VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR:
-----------------------------------------------
        globalPriorityQuery = true

VkPhysicalDeviceImageCompressionControlFeaturesEXT:
---------------------------------------------------
        imageCompressionControl = true

VkPhysicalDeviceIndexTypeUint8FeaturesEXT:
------------------------------------------
        indexTypeUint8 = true

VkPhysicalDevicePipelineRobustnessFeaturesEXT:
----------------------------------------------
        pipelineRobustness = true

VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT:
--------------------------------------------------------
        primitiveTopologyListRestart      = true
        primitiveTopologyPatchListRestart = true

VkPhysicalDeviceProvokingVertexFeaturesEXT:
-------------------------------------------
        provokingVertexLast                       = true
        transformFeedbackPreservesProvokingVertex = false

VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT:
--------------------------------------------------------------
        rasterizationOrderColorAttachmentAccess   = true
        rasterizationOrderDepthAttachmentAccess   = true
        rasterizationOrderStencilAttachmentAccess = false

VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT:
------------------------------------------------
        subpassMergeFeedback = true

VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT:
------------------------------------------------
        texelBufferAlignment = true

VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR:
--------------------------------------------------
        vertexAttributeInstanceRateDivisor     = true
        vertexAttributeInstanceRateZeroDivisor = true

VkPhysicalDeviceVulkan11Features:
---------------------------------
        storageBuffer16BitAccess           = true
        uniformAndStorageBuffer16BitAccess = true
        storagePushConstant16              = true
        storageInputOutput16               = true
        multiview                          = true
        multiviewGeometryShader            = false
        multiviewTessellationShader        = false
        variablePointersStorageBuffer      = true
        variablePointers                   = true
        protectedMemory                    = false
        samplerYcbcrConversion             = true
        shaderDrawParameters               = true

VkPhysicalDeviceVulkan12Features:
---------------------------------
        samplerMirrorClampToEdge                           = true
        drawIndirectCount                                  = true
        storageBuffer8BitAccess                            = true
        uniformAndStorageBuffer8BitAccess                  = true
        storagePushConstant8                               = true
        shaderBufferInt64Atomics                           = false
        shaderSharedInt64Atomics                           = false
        shaderFloat16                                      = true
        shaderInt8                                         = true
        descriptorIndexing                                 = false
        shaderInputAttachmentArrayDynamicIndexing          = false
        shaderUniformTexelBufferArrayDynamicIndexing       = false
        shaderStorageTexelBufferArrayDynamicIndexing       = false
        shaderUniformBufferArrayNonUniformIndexing         = false
        shaderSampledImageArrayNonUniformIndexing          = false
        shaderStorageBufferArrayNonUniformIndexing         = false
        shaderStorageImageArrayNonUniformIndexing          = false
        shaderInputAttachmentArrayNonUniformIndexing       = false
        shaderUniformTexelBufferArrayNonUniformIndexing    = false
        shaderStorageTexelBufferArrayNonUniformIndexing    = false
        descriptorBindingUniformBufferUpdateAfterBind      = false
        descriptorBindingSampledImageUpdateAfterBind       = false
        descriptorBindingStorageImageUpdateAfterBind       = false
        descriptorBindingStorageBufferUpdateAfterBind      = false
        descriptorBindingUniformTexelBufferUpdateAfterBind = false
        descriptorBindingStorageTexelBufferUpdateAfterBind = false
        descriptorBindingUpdateUnusedWhilePending          = false
        descriptorBindingPartiallyBound                    = false
        descriptorBindingVariableDescriptorCount           = false
        runtimeDescriptorArray                             = false
        samplerFilterMinmax                                = false
        scalarBlockLayout                                  = true
        imagelessFramebuffer                               = true
        uniformBufferStandardLayout                        = true
        shaderSubgroupExtendedTypes                        = true
        separateDepthStencilLayouts                        = true
        hostQueryReset                                     = true
        timelineSemaphore                                  = true
        bufferDeviceAddress                                = true
        bufferDeviceAddressCaptureReplay                   = true
        bufferDeviceAddressMultiDevice                     = false
        vulkanMemoryModel                                  = true
        vulkanMemoryModelDeviceScope                       = true
        vulkanMemoryModelAvailabilityVisibilityChains      = true
        shaderOutputViewportIndex                          = false
        shaderOutputLayer                                  = false
        subgroupBroadcastDynamicId                         = true

VkPhysicalDeviceVulkan13Features:
---------------------------------
        robustImageAccess                                  = true
        inlineUniformBlock                                 = true
        descriptorBindingInlineUniformBlockUpdateAfterBind = false
        pipelineCreationCacheControl                       = true
        privateData                                        = true
        shaderDemoteToHelperInvocation                     = true
        shaderTerminateInvocation                          = true
        subgroupSizeControl                                = true
        computeFullSubgroups                               = true
        synchronization2                                   = true
        textureCompressionASTC_HDR                         = false
        shaderZeroInitializeWorkgroupMemory                = true
        dynamicRendering                                   = true
        shaderIntegerDotProduct                            = true
        maintenance4                                       = true
jwinarske commented 8 months ago

Missing Vulkan Error Extension. Need to patch for this

visionfive2:/usr/bin/vulkan-samples# ./bloom 
Could not create Vulkan instance : 
ERROR_EXTENSION_NOT_PRESENT
jwinarske commented 8 months ago

vkcube

# vkcube
failed to initialize wayland, falling back to xcb
failed to initialize kms, falling back to headless
1 physical devices
vendor id 1010, device name PowerVR B-Series BXE-4-32
ERROR:             vkGetDeviceQueue2: Invalid device [VUID-vkGetDeviceQueue2-device-parameter]
Aborted (core dumped)