Current fork scope: Android Nintendo Switch emulators (Eden, Lemon Lite and Strato Mali).
This fork develops experimental custom Vulkan drivers on Mali-G615/Kbase-CSF. Dedicated RC2 Safety v2 packages are available for Lemon Lite and Strato Mali. It is not maintained as a general-purpose Winlator, Termux:X11, GameHub or desktop compatibility fork.
This repository is a fork of
GunaCharanTeja/panvk-kbase-android
and keeps the Mesa/PanVK and Kbase work from the upstream project. Eden-specific
integration, Android Native Buffer fixes, synchronization fixes and validation
are developed here by LukeValen.
Experimental Mali-G615 MC6 Vulkan driver packages:
- Strato Mali: PanVK RC2 G615 Strato Mali Safety v2 — flat ZIP with metadata adapted to Strato's driver installer.
- Lemon Lite: PanVK RC2 G615 Lemon Safety v2 — Lemon-compatible driver ZIP.
Both releases contain the same underlying PanVK library, based on RC2 with ANB and conservative Kbase synchronization fixes. Celeste launched successfully on the reference device with Lemon Lite; the Strato package has not yet been validated in-game. Earlier experimental builds caused a kernel panic, so use at your own risk and keep the original Vulkan driver available.
☕ The developer wanted to give you a good time, and in return you can offer them a coffee in https://ko-fi.com/lukevalen/donate 🫐
This driver currently requires a specific experimental Eden build with the Mali custom-driver loading changes used during development. That Eden build is not distributed from this repository yet.
Using this driver with a normal/public Eden build is not supported at this stage and may result in startup failures, black output, presentation problems or crashes.
Reference target:
- Poco X6 Pro / Dimensity 8300 Ultra
- Mali-G615 MC6, Pan arch v11, CSF
- Android Kbase interface at
/dev/mali0 - Eden Android Switch emulator using the experimental Mali custom-driver path
Active integration work includes:
- loading PanVK through Eden's custom Vulkan driver path on Mali;
- MediaTek gralloc/mapper metadata handling;
- Android Native Buffer DMA-BUF discovery instead of assuming
native_handle_t->data[0]; - native-buffer import through
VK_ANDROID_native_buffer; - Android release-fence /
SYNC_FDhandling on Kbase; - avoiding DRM-syncobj payload-copy logic on Kbase devices;
- swapchain/presentation diagnostics for black-screen and crash investigation.
The ANB DMA-BUF issue has been identified and fixed on the reference device. Presentation synchronization and crash hardening are still under active validation, so this fork should be treated as experimental / development-only.
See docs/EDEN-INTEGRATION.md for the current
technical status, requirements and known issues.
The underlying project is a standalone patch/build layer around pinned upstream
Mesa that produces an open Mesa PanVK driver talking directly to Android's
proprietary mali_kbase kernel interface (/dev/mali0). The original project
supports broader consumers and use cases. This fork keeps that source lineage,
but its current development target is Eden Switch emulation.
| App | What it is | Download | |
|---|---|---|---|
PanPlay (apps/panvk-launcher) |
Windows game launcher (Wine + DXVK + built-in X server) with the PanVK driver bundled | PanPlay releases | |
PanProbe (apps/panvk-test) |
Vulkan feature/extension info and on-device driver tests | PanProbe releases |
Both apps support Mali-G615 only. See apps/panvk-launcher/docs for launcher usage.
- Phone: Poco X6 Pro (2311DRK48I,
duchamp) - SoC: MediaTek Dimensity 8300-Ultra (MT6897)
- GPU: Mali-G615 MC6, Pan arch v11, CSF frontend
- Kernel interface:
/dev/mali0(mali_kbase) - Observed GPU ID string:
Mali-G615 6 cores r1p3 0xB8A3
Only the Mali-G615 (Mesa PAN_ARCH v11, CSF frontend; Arm's 4th
generation Valhall, announced 2022) is supported and validated, on the
reference device above. Other Mali GPUs (including G610/v10, G720/v12 and the
Bifrost/Valhall v7/v9 JM parts) have planned profiles or patch scaffolding but
are untested and unsupported. Arm's marketing generations (Utgard, Midgard,
Bifrost, Valhall 1st to 4th gen, 5th Gen, G1) and Mesa PAN_ARCH numbers are
different schemes; the full chronological GPU list, mappings, frontends and
upstream driver status are in
docs/MALI-GPU-ARCHITECTURES.md.
Status key:
- ✅ Supported: validated on a device.
- 📋 TODO: a profile exists in
profiles/and the port is planned. - ❔ Possible, not tried: Mesa has a backend for this arch, but no profile or device test exists here.
- ❌ Not possible: no PanVK (Vulkan) backend exists for the arch.
One row per Mesa arch. Each GPU carries its own status mark.
| Mesa arch | Arm family / generation | Frontend | GPUs (status per GPU) | Notes |
|---|---|---|---|---|
| n/a | Pre-Utgard (fixed function) | n/a | ❌ Mali-55, ❌ Mali-110 | No programmable shaders |
| n/a (Lima) | Utgard | n/a | ❌ Mali-200, ❌ Mali-300, ❌ Mali-400 MP, ❌ Mali-450 MP, ❌ Mali-470 MP | GLES 2 only (Lima), no Vulkan |
| v4 | Midgard 1st to 3rd gen | JM | ❌ Mali-T604, ❌ T658, ❌ T622, ❌ T624, ❌ T628, ❌ T678, ❌ T720 | No PanVK backend |
| v5 | Midgard 3rd/4th gen | JM | ❌ Mali-T760, ❌ T820, ❌ T830, ❌ T860, ❌ T880 | No PanVK backend |
| v6 | Bifrost 1st/2nd gen | JM | ❌ Mali-G71, ❔ G72 | Mesa marks G71 unsupported; G72 experimental upstream |
| v7 | Bifrost 1st to 3rd gen | JM | 📋 Mali-G52, ❔ G31, ❔ G51, ❔ G76 | Profile g52-v7-jm (P25); needs the JM kbase path |
| v9 | Valhall 1st/2nd gen | JM | 📋 Mali-G57, ❔ G77, ❔ G68, ❔ G78, ❔ G78AE | Profile g57-v9-jm (P26); needs a v9 backend port and the JM kbase path |
| v10 | Valhall 3rd gen | CSF | 📋 Mali-G610, ❔ G310, ❔ G510, ❔ G710 | Profile g610-v10-csf (P24) |
| v11 | Valhall 4th gen | CSF | ✅ Mali-G615, ❔ G715, ❔ Immortalis-G715 | G615 validated on Poco X6 Pro (Dimensity 8300). G715 and Immortalis-G715 share the same arch but are untested |
| v12 | 5th Gen | CSF | 📋 Mali-G720, ❔ G620, ❔ Immortalis-G720 | Profile g720-v12-csf (P24) |
| v13 | 5th Gen | CSF | ❔ Mali-G625, ❔ G725, ❔ Immortalis-G925 | No profile yet |
| v14 | 5th Gen, G1 series | CSF | ❔ Mali G1-Pro, ❔ G1-Premium, ❔ G1-Ultra | Experimental upstream; no profile yet |
| v15 (unconfirmed) | G2 series | CSF | ❌ Mali G2-Ultra NX, ❌ G2-Premium NX (rumoured), ❌ G2-Pro NX (rumoured) | Not in Mesa yet |
"Possible" means Mesa has code for the arch. It does not mean the arch works here: each one still needs a kbase profile, its kbase frontend path (JM or CSF) and device validation. The JM parts (v6, v7, v9) also need the job-manager kbase path, because the current driver uses CSF only.
sources.lock exact Mesa commit + reference repos (no moving branches)
profiles/ per-GPU Kbase profiles (arch/gpu-id/frontend/uapi)
patches/ qualified patch families (never one unqualified blob)
meson/ cross files (android-aarch64, linux-aarch64-native)
scripts/ fetch / patch / build / package / validate / release
tests/ kbase-probe, vulkan-smoke, compute, offscreen, ahb,
android-surface, sync, android-loader-app, dxvk-vkd3d
docs/ architecture, build, portability, matrix, profiles,
app-compat, release, Kbase sparse feasibility,
Mali GPU architectures (MALI-GPU-ARCHITECTURES.md)
validation/ G615 capability dumps, DXVK/vkd3d profiles and matrix
.github/workflows/ build / release / source-drift
See docs/BUILD-POCO-X6-PRO.md.
./scripts/fetch-mesa.sh
./scripts/apply-patches.sh --profile g615-v11-csf
./scripts/build-android.sh --profile g615-v11-csf
./scripts/validate-binary.sh --abi android dist/android-g615-v11-csf/libvulkan_panfrost.so
./scripts/package-android-adpkg.sh --profile g615-v11-csfTiers: dev (build only) < alpha (compute/offscreen) < beta (WSI +
app-loader on one profile) < rc (primary consumer) < stable (multi-device
- soak). First Poco build is never
stable. Releases are immutable; a patch change creates a new release even if the Mesa SHA is unchanged.
g615-v11-csf-v0.1.0-beta.11 is the latest published tag (prerelease, Mesa
5a07217f plus the committed csf-v11 series up to 098). It fixes the
VK_ERROR_DEVICE_LOST on tiler heap OOM (098) and the memory blow-up from
per-pool TLS and eagerly committed prerast arenas (097). Need for Speed Most
Wanted stays at about 2.0 GB RSS and runs races at 40-44 fps with FEX Extreme.
The bundled driver in PanPlay 1.0.3 is beta.11. See the
release page.
beta.10 (up to 096) made 32-bit
WoW64 games fast and correct. Placed maps now map the BO's dma-buf again at
the requested address (091) instead of a shadow copy. Need for Speed Most
Wanted (DXVK D3D9) went from 0.5 fps to 39-66 fps, with clean HUD and text.
It also adds GPU chunking of large and indirect prerast draws (094, 096),
the tessellation conditional-state fix (093), and the sample count for
attachment-less secondaries (095). Assets: Android and glibc drivers, .adpkg package, EMULATOR zip,
the test APK and screenshots. See CHANGELOG.md and the
release page.
beta.9 added depthBounds (092), shaderOutputViewportIndex from VS/TES
(090), per-viewport depth clamp/clip (089) and CSF event-memory sync words
(085).
beta.8 added X11 surfaces (VK_KHR_xlib_surface, VK_KHR_xcb_surface) for
Wine/Proton launchers that display through Termux:X11; the X11/XCB libraries
are loaded at runtime from the launcher's library path and are not bundled.
Presentation is a software copy (X11 PutImage).
g615-v11-csf-v0.1.0-beta.3 (code commit
fc8a759e7d1b2b8de01c0e96f1fdc5e3950ba1a3, published 2026-09-19) and its
assets stay frozen by project policy. See
validation/g615-v11-csf/BETA3-PUBLICATION-ADDENDUM.md.
Two separate sets are stored per release: UPSTREAM_MATRIX_CAPABILITIES
(from docs/features.txt of the exact Mesa checkout) and
RUNTIME_DEVICE_CAPABILITIES (from on-device vulkaninfo/probe). Only
runtime-tested capabilities may be used for compatibility claims. No fake
feature bits.
Full specification and per-capability test breakdown:
docs/RUNTIME-FEATURES.md. Canonical
machine-readable evidence:
validation/g615-v11-csf/runtime-feature-matrix.json.
- Vulkan API Version:
1.4.363 - Total Extensions Exposed:
194(13 instance, 181 device); beta.2 tag:178 - Driver: Mesa
26.3.0-devel(commit5a07217f034b3e50d8c7c7794f97a2df1742613b) - GPU: Mali-G615 MC6 (
0xb8a31030) - Kernel Interface:
mali_kbase(CSF uAPI 1.21,/dev/mali0) - Patch Series ID:
sha256:c0bbdeef591b206a2f3ae36dc6191c08854399039075f8d69f103e33c0eca2f8
All 13 target groups are natively exposed and passed real Poco X6 Pro workloads. Enumeration alone is not counted as a test.
| Feature group | Status | Concise workload evidence |
|---|---|---|
| Descriptor indexing | PASS | Runtime array, partially-bound and variable-count descriptors; non-uniform sampled-image/storage-buffer indexing; checksum 123 |
| Timeline semaphore | PASS | GPU chain 1..64, CPU wait/signal, CPU-to-GPU wait, final counter 66 |
| Dynamic rendering | PASS | vkCmdBeginRendering/vkCmdEndRendering; 1,154 triangle pixels; checksum 0x9a7f1b8fec90af07 |
| Synchronization2 | PASS | vkCmdPipelineBarrier2 and vkQueueSubmit2; timeline completion 67 |
| Buffer device address | PASS | Shader dereference at index 3; readback 0x2468ace0 |
| Push descriptors | PASS | vkCmdPushDescriptorSetKHR storage buffers; readback 0xb791f3dd |
| Robust buffer access | PASS | Out-of-bounds index 64 from one bound uint returned 0x00000000 |
| Anisotropy | PASS | 4x anisotropy across 9 sampled formats; two deterministic runs |
| Wide lines | PASS | Width 5 rasterized 185 green pixels |
| Large points | PASS | Size 11 rasterized 121 yellow pixels |
| ETC2/EAC | PASS | ETC2 RGB/RGBA plus EAC R11/RG11 UNORM/SNORM sampling, filtering, and mip level 1 |
| ASTC LDR | PASS | ASTC 4x4 UNORM/SRGB sampling, filtering, mip level 1, exact checksums |
| ASTC HDR | PASS | VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT; pixel [1, 2, 3, 1]; filtering and mip level 1 |
This table describes the beta.3 release. Since then textureCompressionBC
has been exposed on feature/g615-dxvk-complete through GPU compute decode
(G615 has no BC hardware); see the DXVK section below. Other unsupported
features are listed in docs/RUNTIME-FEATURES.md.
DXVK Native v3.1.1 on the Poco X6 Pro creates a D3D11 device at
feature level 11_0 (D3D11 HRESULT=0x00000000 feature_level=0xb000);
D3D11 and D3D9 draw workloads pass. Every feature below runs on the GPU,
with no CPU fallback or simulation, and is exposed only after device proof.
| Feature | Implementation | Device proof (CTS Pass / Fail) |
|---|---|---|
geometryShader |
VS/GS run as compute on the GPU pre-raster path, 64 invocations (071) | geometry 193 / 0; instanced 20 / 0 |
tessellationShader |
VS, TCS, tessellator and TES as compute, GPU chunking | tessellation 526 / 0 |
VK_EXT_transform_feedback |
GPU capture kernel, 4 streams, counters, queries | transform_feedback 15793 / 0 (2 intermittent DeviceLost) |
textureCompressionBC |
GPU compute decode of BC1-7 | BC subset 1863 / 0; copy_and_blit 9620 / 0 |
shaderClipDistance, shaderCullDistance |
NIR lowering | device matrix 0 fail |
multiViewport |
16 viewports, GS viewport index honoured (076) | device matrix 0 fail, scissor 88 / 88 |
fillModeNonSolid |
GPU kernel builds line/point primitives | 17/17 pixel-exact |
pipelineStatisticsQuery |
049-054 | statistics_query 15374 / 0 |
VK_KHR_incremental_present, VK_EXT_swapchain_colorspace, VK_EXT_image_compression_control |
upstream backports | device probes 0 fail |
VK_EXT_multi_draw |
072 | multi_draw 12704 / 0 |
VK_EXT_primitives_generated_query |
073 | primitives_generated_query 75206 / 0 |
VK_EXT_memory_priority, VK_EXT_pageable_device_local_memory |
069 | 224 / 0, 202 / 0; api.info 7799 / 0 |
alphaToOne |
070 | alphaToOne 123 / 0 |
variableMultisampleRate |
074 | variable_rate 504 / 0 standalone (tmp/cts/p5-vmsr/summary.txt); combined regression run (geometry + tessellation + transform_feedback.simple + variable_rate: 15955 cases, 6210 pass, 9745 NotSupported, 0 fail; source tmp/cts/r6-geo/status.txt) |
sync_fd export |
075 (kbase KCPU queue) | sync_fd 1996 / 0 |
vertexPipelineStoresAndAtomics (v10-v12) |
078-082, vertex stage on the compute pre-raster path | atomic_operations *_vertex* 66 / 0; 12132-case tess/geometry/xfb/draw list 7940 / 0, 0 DeviceLost |
| per-viewport depth clamp/clip (beta.9) | 089, GS-selected viewports drawn as ordered runs | panvk-test gs_viewport_depth exact (no CTS) |
shaderOutputViewportIndex from VS/TES (beta.9, v10/v11) |
090 | panvk-test vs_viewport_index 6/6 (no CTS) |
depthBounds (beta.9, v10/v11) |
092, fragment-shader emulation | 2059 depth-bounds CTS cases: 1774 pass / 0 fail / 285 NotSupported; panvk-test depth_bounds 6/6 |
DXVK feature level 11_1 has not been re-checked on the beta.7 to beta.9
builds yet. The Android driver has X11 surfaces (beta.8), but under Proton 11
(i686 through wow64) Wine fails to create the Vulkan surface before the
driver is called, so DXVK presentation there is still blocked. depthBounds
lowered pipelines lose FPK, and EarlyFragmentTests shaders with depth writes
compare against the fragment's new depth (see the beta.9 release notes).
Still missing: robustImageAccess2 (the vkd3d-proton device-create
blocker) and
sparse (FL12_0, NO-GO on Kbase). The X11 present teardown hang was seen once
under Xvfb only and is unverified on Android. Progress and TODOs:
worklogs/g615-dxvk/PROGRESS.md. Roadmap:
docs/plans/PANVK_MASTER_ROADMAP.md.
Machine-evaluated against stock tagged profiles. No fake feature bits. Overall result: FAIL. DXVK 2.7.1/3.1.1 COMMON and vkd3d README hard gates PASS; D3D9/D3D10/D3D11 profiles and vkd3d 2.14.1/3.0.1 device/profile baseline FAIL. Stock DXVK/vkd3d smoke is BLOCKED (Android ICD is not a legal host for those Windows binaries). CTS is BLOCKED.
Canonical report:
validation/g615-v11-csf/P23-DXVK-VKD3D-COMPLIANCE-MATRIX.md.
JSON:
validation/g615-v11-csf/p23-dxvk-vkd3d-compliance-matrix.json.
Gap report:
validation/g615-v11-csf/dxvk-vkd3d-gap-report.md.
Capability dump:
validation/g615-v11-csf/consumer-capabilities.json.
| Target | Result |
|---|---|
| DXVK 1.10.3 D3D9 / D3D10 / FL10.1 / FL11.0 | FAIL |
| DXVK 2.7.1 COMMON | PASS |
| DXVK 2.7.1 D3D9 / D3D10_10_1 / D3D11_11_0 / D3D11_11_1 | FAIL |
| DXVK 3.1.1 COMMON | PASS |
| DXVK 3.1.1 D3D9 / D3D10_10_1 / D3D11_11_0 / D3D11_11_1 | FAIL |
| vkd3d-proton 2.0 HARD / DEVICE_CREATE | PASS |
| vkd3d-proton 2.14.1 HARD | PASS |
| vkd3d-proton 2.14.1 PROFILE_BASELINE / DEVICE_CREATE | FAIL |
| vkd3d-proton 3.0.1 HARD | PASS |
| vkd3d-proton 3.0.1 PROFILE_BASELINE / DEVICE_CREATE | FAIL |
| MAX_FEATURE_LEVEL / D3D_FEATURE_LEVEL | NOT_AVAILABLE |
At beta.3, still false (no spoofing): geometryShader, tessellationShader,
fillModeNonSolid, multiViewport, shaderClipDistance,
shaderCullDistance, textureCompressionBC, transform feedback,
pipelineStatisticsQuery, robustImageAccess2, sparse.
Proven on G615: VK_EXT_robustness2 buffer + nullDescriptor,
maxPushConstantsSize=256, VK_KHR_push_descriptor / maxPushDescriptors=32,
DXVK/vkd3d common easy gates. Advertised UAB limits are 1,048,576; 1M
descriptor stress is implemented but not yet run to completion on device.
Phase evidence:
P6,
P7,
P8,
P9,
P10,
P11,
P12,
P13,
P14,
P15,
P16,
P17,
P18,
P19,
P20,
P21,
P22.
Sparse: docs/KBASE-SPARSE-FEASIBILITY.md
(NO-GO on Kbase UAPI 1.21). Profiles:
validation/requirements/.
Evaluators: scripts/evaluate-vulkan-profile.py,
scripts/evaluate-dxvk-vkd3d-compliance-matrix.py.
Workloads: tests/dxvk-vkd3d/.
At beta.3 the next blocker was robustImageAccess2 (vkd3d 2.14.1/3.0.1
DEVICE_CREATE). It still is; geometry, fill, clip/cull and BC have since
landed (see Current state above).
These 16 beta.3 additions are exposed and workload-tested:
VK_KHR_compute_shader_derivatives, VK_KHR_copy_memory_indirect,
VK_KHR_internally_synchronized_queues, VK_KHR_maintenance7,
VK_KHR_maintenance8, VK_KHR_maintenance9, VK_KHR_present_id2,
VK_KHR_present_wait2, VK_KHR_shader_constant_data, VK_KHR_shader_fma,
VK_KHR_shader_relaxed_extended_instruction,
VK_KHR_shader_untyped_pointers, VK_KHR_surface_maintenance1,
VK_KHR_swapchain_maintenance1, VK_KHR_unified_image_layouts, and
VK_GOOGLE_user_type.
VK_KHR_depth_clamp_zero_one, VK_KHR_pipeline_binary, and
VK_KHR_robustness2 are disabled and not exposed because required workload
proof is absent. VK_GOOGLE_display_timing is not exposed without a proven
Android timing implementation.
The immutable beta.2 tag exposed 12 instance and 166 device extensions (178 total). Its post-tag documentation commit is distinct from the tagged code as recorded under Current status. Everything below is the published beta.3 inventory generated from the canonical matrix.
Full beta.3 list: 194 extensions (13 instance + 181 device)
VK_KHR_android_surface, VK_KHR_device_group_creation,
VK_KHR_external_fence_capabilities, VK_KHR_external_memory_capabilities,
VK_KHR_external_semaphore_capabilities,
VK_KHR_get_physical_device_properties2,
VK_KHR_get_surface_capabilities2, VK_KHR_surface,
VK_KHR_surface_maintenance1, VK_EXT_debug_report, VK_EXT_debug_utils,
VK_EXT_headless_surface, VK_EXT_surface_maintenance1.
VK_KHR_8bit_storage, VK_KHR_16bit_storage, VK_KHR_bind_memory2,
VK_KHR_buffer_device_address, VK_KHR_calibrated_timestamps,
VK_KHR_compute_shader_derivatives, VK_KHR_cooperative_matrix,
VK_KHR_copy_commands2, VK_KHR_copy_memory_indirect,
VK_KHR_create_renderpass2, VK_KHR_dedicated_allocation,
VK_KHR_depth_stencil_resolve, VK_KHR_descriptor_update_template,
VK_KHR_device_group, VK_KHR_draw_indirect_count,
VK_KHR_driver_properties, VK_KHR_dynamic_rendering,
VK_KHR_dynamic_rendering_local_read, VK_KHR_external_fence,
VK_KHR_external_fence_fd, VK_KHR_external_memory,
VK_KHR_external_memory_fd, VK_KHR_external_semaphore,
VK_KHR_external_semaphore_fd, VK_KHR_format_feature_flags2,
VK_KHR_get_memory_requirements2, VK_KHR_global_priority,
VK_KHR_image_format_list, VK_KHR_imageless_framebuffer,
VK_KHR_index_type_uint8, VK_KHR_internally_synchronized_queues,
VK_KHR_line_rasterization, VK_KHR_load_store_op_none,
VK_KHR_maintenance1, VK_KHR_maintenance2, VK_KHR_maintenance3,
VK_KHR_maintenance4, VK_KHR_maintenance5, VK_KHR_maintenance6,
VK_KHR_maintenance7, VK_KHR_maintenance8, VK_KHR_maintenance9,
VK_KHR_map_memory2, VK_KHR_multiview,
VK_KHR_pipeline_executable_properties, VK_KHR_pipeline_library,
VK_KHR_present_id, VK_KHR_present_id2, VK_KHR_present_wait,
VK_KHR_present_wait2, VK_KHR_push_descriptor,
VK_KHR_relaxed_block_layout, VK_KHR_sampler_mirror_clamp_to_edge,
VK_KHR_sampler_ycbcr_conversion, VK_KHR_separate_depth_stencil_layouts,
VK_KHR_shader_atomic_int64, VK_KHR_shader_clock,
VK_KHR_shader_constant_data, VK_KHR_shader_draw_parameters,
VK_KHR_shader_expect_assume, VK_KHR_shader_float16_int8,
VK_KHR_shader_float_controls, VK_KHR_shader_float_controls2,
VK_KHR_shader_fma, VK_KHR_shader_integer_dot_product,
VK_KHR_shader_maximal_reconvergence, VK_KHR_shader_non_semantic_info,
VK_KHR_shader_quad_control, VK_KHR_shader_relaxed_extended_instruction,
VK_KHR_shader_subgroup_extended_types, VK_KHR_shader_subgroup_rotate,
VK_KHR_shader_subgroup_uniform_control_flow,
VK_KHR_shader_terminate_invocation, VK_KHR_shader_untyped_pointers,
VK_KHR_spirv_1_4, VK_KHR_storage_buffer_storage_class,
VK_KHR_swapchain, VK_KHR_swapchain_maintenance1,
VK_KHR_swapchain_mutable_format, VK_KHR_synchronization2,
VK_KHR_timeline_semaphore, VK_KHR_unified_image_layouts,
VK_KHR_uniform_buffer_standard_layout, VK_KHR_variable_pointers,
VK_KHR_vertex_attribute_divisor, VK_KHR_vulkan_memory_model,
VK_KHR_workgroup_memory_explicit_layout,
VK_KHR_zero_initialize_workgroup_memory, VK_EXT_4444_formats,
VK_EXT_astc_decode_mode, VK_EXT_attachment_feedback_loop_dynamic_state,
VK_EXT_attachment_feedback_loop_layout, VK_EXT_border_color_swizzle,
VK_EXT_buffer_device_address, VK_EXT_calibrated_timestamps,
VK_EXT_color_write_enable, VK_EXT_conditional_rendering,
VK_EXT_conservative_rasterization, VK_EXT_custom_border_color,
VK_EXT_debug_marker, VK_EXT_depth_bias_control,
VK_EXT_depth_clamp_control, VK_EXT_depth_clamp_zero_one,
VK_EXT_depth_clip_control, VK_EXT_depth_clip_enable,
VK_EXT_descriptor_indexing, VK_EXT_device_address_binding_report,
VK_EXT_device_memory_report, VK_EXT_dynamic_rendering_unused_attachments,
VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2,
VK_EXT_extended_dynamic_state3,
VK_EXT_external_memory_acquire_unmodified,
VK_EXT_external_memory_dma_buf, VK_EXT_global_priority,
VK_EXT_global_priority_query, VK_EXT_graphics_pipeline_library,
VK_EXT_hdr_metadata, VK_EXT_host_image_copy, VK_EXT_host_query_reset,
VK_EXT_image_2d_view_of_3d, VK_EXT_image_drm_format_modifier,
VK_EXT_image_robustness, VK_EXT_image_sliced_view_of_3d,
VK_EXT_image_view_min_lod, VK_EXT_index_type_uint8,
VK_EXT_inline_uniform_block, VK_EXT_legacy_dithering,
VK_EXT_line_rasterization, VK_EXT_load_store_op_none,
VK_EXT_map_memory_placed, VK_EXT_memory_budget,
VK_EXT_multisampled_render_to_single_sampled,
VK_EXT_mutable_descriptor_type, VK_EXT_nested_command_buffer,
VK_EXT_non_seamless_cube_map, VK_EXT_physical_device_drm,
VK_EXT_pipeline_creation_cache_control,
VK_EXT_pipeline_creation_feedback, VK_EXT_pipeline_robustness,
VK_EXT_present_timing, VK_EXT_primitive_topology_list_restart,
VK_EXT_private_data, VK_EXT_provoking_vertex,
VK_EXT_queue_family_foreign,
VK_EXT_rasterization_order_attachment_access, VK_EXT_rgba10x6_formats,
VK_EXT_robustness2, VK_EXT_sampler_filter_minmax,
VK_EXT_scalar_block_layout, VK_EXT_separate_stencil_usage,
VK_EXT_shader_atomic_float, VK_EXT_shader_demote_to_helper_invocation,
VK_EXT_shader_image_atomic_int64, VK_EXT_shader_module_identifier,
VK_EXT_shader_replicated_composites, VK_EXT_shader_stencil_export,
VK_EXT_shader_subgroup_ballot, VK_EXT_shader_subgroup_vote,
VK_EXT_shader_tile_image, VK_EXT_shader_uniform_buffer_unsized_array,
VK_EXT_subgroup_size_control, VK_EXT_swapchain_maintenance1,
VK_EXT_texel_buffer_alignment, VK_EXT_texture_compression_astc_hdr,
VK_EXT_tooling_info, VK_EXT_vertex_attribute_divisor,
VK_EXT_vertex_input_dynamic_state, VK_EXT_ycbcr_2plane_444_formats,
VK_EXT_ycbcr_image_arrays, VK_EXT_zero_initialize_device_memory,
VK_ANDROID_external_memory_android_hardware_buffer,
VK_ANDROID_native_buffer, VK_ARM_rasterization_order_attachment_access,
VK_ARM_scheduling_controls, VK_ARM_shader_core_builtins,
VK_ARM_shader_core_properties, VK_GOOGLE_decorate_string,
VK_GOOGLE_hlsl_functionality1, VK_GOOGLE_user_type,
VK_VALVE_mutable_descriptor_type.
Mesa code remains under its upstream licenses (see LICENSES/ and
NOTICE.md). Build/patch/test scaffolding in this repository is MIT unless
otherwise noted.