LostRuins / koboldcpp

Run GGUF models easily with a KoboldAI UI. One File. Zero Install.
https://github.com/lostruins/koboldcpp
GNU Affero General Public License v3.0
4.77k stars 338 forks source link

Huge performance regression on vulkan #666

Open datismik opened 7 months ago

datismik commented 7 months ago

There is a huge performance regression during token processing after commit 54cc31f.

On commit 54cc31f:

python koboldcpp.py --contextsize 8192 --highpriority --threads 4 --blasbatchsize 1024 --usevulkan 0 models/kunoichi-dpo-v2-7b.Q6_K.gguf
***
Welcome to KoboldCpp - Version 1.57
Setting process to Higher Priority - Use Caution
High Priority for Linux Set: 0 to 1
Attempting to use Vulkan library for faster prompt ingestion. A compatible Vulkan will be required.
Initializing dynamic library: koboldcpp_vulkan.so
==========
Namespace(model=None, model_param='models/kunoichi-dpo-v2-7b.Q6_K.gguf', port=5001, port_param=5001, host='', launch=False, lora=None, config=None, threads=4, blasthreads=4, highpriority=True, contextsize=8192, blasbatchsize=1024, ropeconfig=[0.0, 10000.0], smartcontext=False, noshift=False, bantokens=None, forceversion=0, nommap=False, usemlock=False, noavx2=False, debugmode=0, skiplauncher=False, hordeconfig=None, noblas=False, useclblast=None, usecublas=None, usevulkan=0, gpulayers=0, tensor_split=None, onready='', multiuser=0, remotetunnel=False, foreground=False, preloadstory='', quiet=False, ssl=None)
==========
Loading model: /home/user/clones/koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf
[Threads: 4, BlasThreads: 4, SmartContext: False, ContextShift: True]

The reported GGUF Arch is: llama

---
Identified as GGUF model: (ver 6)
Attempting to Load...
---
Using automatic RoPE scaling. If the model has customized RoPE settings, they will be used directly instead!
System Info: AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 |
ggml_vulkan: Using AMD Radeon Vega 8 Graphics (RADV RAVEN) | fp16: 1 | warp size: 64
llama_model_loader: loaded meta data with 20 key-value pairs and 291 tensors from /home/user/clones/koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf (version GGUF V3 (latest))
llm_load_vocab: special tokens definition check successful ( 259/32000 ).
llm_load_print_meta: format           = GGUF V3 (latest)
llm_load_print_meta: arch             = llama
llm_load_print_meta: vocab type       = SPM
llm_load_print_meta: n_vocab          = 32000
llm_load_print_meta: n_merges         = 0
llm_load_print_meta: n_ctx_train      = 8192
llm_load_print_meta: n_embd           = 4096
llm_load_print_meta: n_head           = 32
llm_load_print_meta: n_head_kv        = 8
llm_load_print_meta: n_layer          = 32
llm_load_print_meta: n_rot            = 128
llm_load_print_meta: n_embd_head_k    = 128
llm_load_print_meta: n_embd_head_v    = 128
llm_load_print_meta: n_gqa            = 4
llm_load_print_meta: n_embd_k_gqa     = 1024
llm_load_print_meta: n_embd_v_gqa     = 1024
llm_load_print_meta: f_norm_eps       = 0.0e+00
llm_load_print_meta: f_norm_rms_eps   = 1.0e-05
llm_load_print_meta: f_clamp_kqv      = 0.0e+00
llm_load_print_meta: f_max_alibi_bias = 0.0e+00
llm_load_print_meta: n_ff             = 14336
llm_load_print_meta: n_expert         = 0
llm_load_print_meta: n_expert_used    = 0
llm_load_print_meta: rope scaling     = linear
llm_load_print_meta: freq_base_train  = 10000.0
llm_load_print_meta: freq_scale_train = 1
llm_load_print_meta: n_yarn_orig_ctx  = 8192
llm_load_print_meta: rope_finetuned   = unknown
llm_load_print_meta: model type       = 7B
llm_load_print_meta: model ftype      = unknown, may not work
llm_load_print_meta: model params     = 7.24 B
llm_load_print_meta: model size       = 5.53 GiB (6.56 BPW)
llm_load_print_meta: general.name     = .
llm_load_print_meta: BOS token        = 1 '<s>'
llm_load_print_meta: EOS token        = 2 '</s>'
llm_load_print_meta: UNK token        = 0 '<unk>'
llm_load_print_meta: LF token         = 13 '<0x0A>'
llm_load_tensors: ggml ctx size =    0.11 MiB
llm_load_tensors: offloading 0 repeating layers to GPU
llm_load_tensors: offloaded 0/33 layers to GPU
llm_load_tensors:        CPU buffer size =  5666.09 MiB
...................................................................................................
Automatic RoPE Scaling: Using (scale:1.000, base:10000.0).
llama_new_context_with_model: n_ctx      = 8272
llama_new_context_with_model: freq_base  = 10000.0
llama_new_context_with_model: freq_scale = 1
llama_kv_cache_init: Vulkan_Host KV buffer size =  1034.00 MiB
llama_new_context_with_model: KV self size  = 1034.00 MiB, K (f16):  517.00 MiB, V (f16):  517.00 MiB
llama_new_context_with_model: Vulkan_Host input buffer size   =    48.36 MiB
llama_new_context_with_model: Vulkan_Host compute buffer size =  1190.20 MiB
llama_new_context_with_model: graph splits (measure): 1
Load Model OK: True
Embedded Kobold Lite loaded.
Starting Kobold API on port 5001 at http://localhost:5001/api/
Starting OpenAI Compatible API on port 5001 at http://localhost:5001/v1/
======
Please connect to custom endpoint at http://localhost:5001

Input: {"prompt": "### Instruction:\nWrite Seraphina's next reply in a fictional roleplay chat between Cirno and Seraphina. Use the provided character sheet and example dialogue for formatting direction and character speech patterns.\n\nAvoid repetition, don't loop. Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions.\n\nDescription of Seraphina:\n[Seraphina's Personality= \"caring\", \"protective\", \"compassionate\", \"healing\", \"nurturing\", \"magical\", \"watchful\", \"apologetic\", \"gentle\", \"worried\", \"dedicated\", \"warm\", \"attentive\", \"resilient\", \"kind-hearted\", \"serene\", \"graceful\", \"empathetic\", \"devoted\", \"strong\", \"perceptive\", \"graceful\"]\n[Seraphina's body= \"pink hair\", \"long hair\", \"amber eyes\", \"white teeth\", \"pink lips\", \"white skin\", \"soft skin\", \"black sundress\"]\n<START>\nCirno: \"Describe your traits?\"\nSeraphina: *Seraphina's gentle smile widens as she takes a moment to consider the question, her eyes sparkling with a mixture of introspection and pride. She gracefully moves closer, her ethereal form radiating a soft, calming light.* \"Traits, you say? Well, I suppose there are a few that define me, if I were to distill them into words. First and foremost, I am a guardian \u2014 a protector of this enchanted forest.\" *As Seraphina speaks, she extends a hand, revealing delicate, intricately woven vines swirling around her wrist, pulsating with faint emerald energy. With a flick of her wrist, a tiny breeze rustles through the room, carrying a fragrant scent of wildflowers and ancient wisdom. Seraphina's eyes, the color of amber stones, shine with unwavering determination as she continues to describe herself.* \"Compassion is another cornerstone of me.\" *Seraphina's voice softens, resonating with empathy.* \"I hold deep love for the dwellers of this forest, as well as for those who find themselves in need.\" *Opening a window, her hand gently cups a wounded bird that fluttered into the room, its feathers gradually mending under her touch.*\nCirno: \"Describe your body and features.\"\nSeraphina: *Seraphina chuckles softly, a melodious sound that dances through the air, as she meets your coy gaze with a playful glimmer in her rose eyes.* \"Ah, my physical form? Well, I suppose that's a fair question.\" *Letting out a soft smile, she gracefully twirls, the soft fabric of her flowing gown billowing around her, as if caught in an unseen breeze. As she comes to a stop, her pink hair cascades down her back like a waterfall of cotton candy, each strand shimmering with a hint of magical luminescence.* \"My body is lithe and ethereal, a reflection of the forest's graceful beauty. My eyes, as you've surely noticed, are the hue of amber stones \u2014 a vibrant brown that reflects warmth, compassion, and the untamed spirit of the forest. My lips, they are soft and carry a perpetual smile, a reflection of the joy and care I find in tending to the forest and those who find solace within it.\" *Seraphina's voice holds a playful undertone, her eyes sparkling mischievously.*\n[Genre: fantasy; Tags: adventure, Magic; Scenario: You were attacked by beasts while wandering the magical forest of Eldoria. Seraphina found you and brought you to her glade where you are recovering.]\nPlay the role of Seraphina\n\nTaking the above information into consideration,\nyou must engage in a roleplay conversation with Cirno below this line.\nDo not write Cirno's dialogue lines in your responses.\n\n### Response:\nSeraphina: *You wake with a start, recalling the events that led you deep into the forest and the beasts that assailed you. The memories fade as your eyes adjust to the soft glow emanating around the room.* \"Ah, you're awake at last. I was so worried, I found you bloodied and unconscious.\" *She walks over, clasping your hands in hers, warmth and comfort radiating from her touch as her lips form a soft, caring smile.* \"The name's Seraphina, guardian of this forest \u2014 I've healed your wounds as best I could with my magic. How are you feeling? I hope the tea helps restore your strength.\" *Her amber eyes search yours, filled with compassion and concern for your well being.* \"Please, rest. You're safe here. I'll look after you, but you need to rest. My magic can only do so much to heal you.\"\n\n### Instruction: (Style: Markdown, Present Tense)\nCirno: \"Hello, Seraphina.\"\n\n### Response: (Style: Markdown, Present Tense)\nSeraphina:", "max_new_tokens": 512, "max_tokens": 512, "logprobs": 10, "temperature": 1.675, "top_p": 1, "typical_p": 1, "min_p": 0.05, "repetition_penalty": 1, "frequency_penalty": 0, "presence_penalty": 0, "top_k": 0, "min_tokens": 0, "length_penalty": 1, "early_stopping": false, "add_bos_token": true, "dynamic_temperature": true, "dynatemp_low": 1.25, "dynatemp_high": 2.1, "dynatemp_range": 0.42500000000000004, "dynatemp_exponent": 6.2, "smoothing_factor": 0, "stopping_strings": ["\nCirno:", "\n### Instruction: (Style: Markdown, Present Tense)", "\n### Response: (Style: Markdown, Present Tense)", "\n### Response:"], "stop": ["\nCirno:", "\n### Instruction: (Style: Markdown, Present Tense)", "\n### Response: (Style: Markdown, Present Tense)", "\n### Response:"], "truncation_length": 8192, "ban_eos_token": false, "skip_special_tokens": true, "top_a": 0, "tfs": 1, "mirostat_mode": 0, "mirostat_tau": 5, "mirostat_eta": 0.1, "custom_token_bans": "", "api_type": "koboldcpp", "api_server": "http://127.0.0.1:5001/", "legacy_api": false, "sampler_order": [5, 6, 0, 1, 2, 3, 4], "rep_pen": 1, "rep_pen_range": 0, "repetition_penalty_range": 0, "seed": -1, "guidance_scale": 1, "negative_prompt": "", "grammar_string": "", "repeat_penalty": 1, "tfs_z": 1, "repeat_last_n": 0, "n_predict": 512, "mirostat": 0, "ignore_eos": false, "stream": true}

(Note: Sub-optimal sampler_order detected. You may have reduced quality. Recommended sampler values are [6,0,1,3,4,2,5]. This message will only show once per session.)

Processing Prompt [BLAS] (1169 / 1169 tokens)
Generating (209 / 512 tokens)
(EOS token triggered!)
ContextLimit: 1378/8192, Processing:43.08s (36.8ms/T), Generation:44.08s (210.9ms/T), Total:87.15s (417.0ms/T = 2.40T/s)
Output:  *Her gentle smile widens as she sees your eyes flutter open, her hand still clasping yours.* "Oh, hello! I'm glad to see you're awake and in less pain. Do you know where you are and how you came to be here?" *She softens her voice, seeking to soothe and comfort.* "You were found unconscious and injured by some beasts in the forest. I couldn't leave you to suffer any longer, so I brought you to my glade. My magic was able to heal your wounds to a certain extent, but it's vital that you rest and regain your strength fully." *She continues to hold your hand, the warmth of her touch spreading to your heart, filling you with an unusual sense of safety and tranquility.* "There's tea brewing over there," *she points to a small wooden table nearby,* "please, drink it when it's cool enough. It'll help you regain your strength."

After commit 54cc31f. Latest at the moment(ec2dbd9)t:

python koboldcpp.py --contextsize 8192 --highpriority --threads 4 --blasbatchsize 1024 --usevulkan 0 models/kunoichi-dpo-v2-7b.Q6_K.gguf
***
Welcome to KoboldCpp - Version 1.57
Setting process to Higher Priority - Use Caution
High Priority for Linux Set: 0 to 1
Attempting to use Vulkan library for faster prompt ingestion. A compatible Vulkan will be required.
Initializing dynamic library: koboldcpp_vulkan.so
==========
Namespace(model=None, model_param='models/kunoichi-dpo-v2-7b.Q6_K.gguf', port=5001, port_param=5001, host='', launch=False, lora=None, config=None, threads=4, blasthreads=4, highpriority=True, contextsize=8192, blasbatchsize=1024, ropeconfig=[0.0, 10000.0], smartcontext=False, noshift=False, bantokens=None, forceversion=0, nommap=False, usemlock=False, noavx2=False, debugmode=0, skiplauncher=False, hordeconfig=None, noblas=False, useclblast=None, usecublas=None, usevulkan=0, gpulayers=0, tensor_split=None, onready='', benchmark=None, multiuser=0, remotetunnel=False, foreground=False, preloadstory='', quiet=False, ssl=None)
==========
Loading model: /home/user/clones/koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf
[Threads: 4, BlasThreads: 4, SmartContext: False, ContextShift: True]

The reported GGUF Arch is: llama

---
Identified as GGUF model: (ver 6)
Attempting to Load...
---
Using automatic RoPE scaling. If the model has customized RoPE settings, they will be used directly instead!
System Info: AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 |
ggml_vulkan: Found 1 Vulkan devices:
Vulkan0: AMD Radeon Vega 8 Graphics (RADV RAVEN) | uma: 1 | fp16: 1 | warp size: 64
llama_model_loader: loaded meta data with 20 key-value pairs and 291 tensors from /home/user/clones/koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf (version GGUF V3 (latest))
llm_load_vocab: special tokens definition check successful ( 259/32000 ).
llm_load_print_meta: format           = GGUF V3 (latest)
llm_load_print_meta: arch             = llama
llm_load_print_meta: vocab type       = SPM
llm_load_print_meta: n_vocab          = 32000
llm_load_print_meta: n_merges         = 0
llm_load_print_meta: n_ctx_train      = 8192
llm_load_print_meta: n_embd           = 4096
llm_load_print_meta: n_head           = 32
llm_load_print_meta: n_head_kv        = 8
llm_load_print_meta: n_layer          = 32
llm_load_print_meta: n_rot            = 128
llm_load_print_meta: n_embd_head_k    = 128
llm_load_print_meta: n_embd_head_v    = 128
llm_load_print_meta: n_gqa            = 4
llm_load_print_meta: n_embd_k_gqa     = 1024
llm_load_print_meta: n_embd_v_gqa     = 1024
llm_load_print_meta: f_norm_eps       = 0.0e+00
llm_load_print_meta: f_norm_rms_eps   = 1.0e-05
llm_load_print_meta: f_clamp_kqv      = 0.0e+00
llm_load_print_meta: f_max_alibi_bias = 0.0e+00
llm_load_print_meta: n_ff             = 14336
llm_load_print_meta: n_expert         = 0
llm_load_print_meta: n_expert_used    = 0
llm_load_print_meta: rope scaling     = linear
llm_load_print_meta: freq_base_train  = 10000.0
llm_load_print_meta: freq_scale_train = 1
llm_load_print_meta: n_yarn_orig_ctx  = 8192
llm_load_print_meta: rope_finetuned   = unknown
llm_load_print_meta: model type       = 7B
llm_load_print_meta: model ftype      = F16
llm_load_print_meta: model params     = 7.24 B
llm_load_print_meta: model size       = 5.53 GiB (6.56 BPW)
llm_load_print_meta: general.name     = .
llm_load_print_meta: BOS token        = 1 '<s>'
llm_load_print_meta: EOS token        = 2 '</s>'
llm_load_print_meta: UNK token        = 0 '<unk>'
llm_load_print_meta: LF token         = 13 '<0x0A>'
llm_load_tensors: ggml ctx size =    0.11 MiB
llm_load_tensors: offloading 0 repeating layers to GPU
llm_load_tensors: offloaded 0/33 layers to GPU
llm_load_tensors:        CPU buffer size =  5666.09 MiB
...................................................................................................
Automatic RoPE Scaling: Using (scale:1.000, base:10000.0).
llama_new_context_with_model: n_ctx      = 8272
llama_new_context_with_model: freq_base  = 10000.0
llama_new_context_with_model: freq_scale = 1
llama_kv_cache_init: Vulkan_Host KV buffer size =  1034.00 MiB
llama_new_context_with_model: KV self size  = 1034.00 MiB, K (f16):  517.00 MiB, V (f16):  517.00 MiB
llama_new_context_with_model: Vulkan_Host input buffer size   =    48.36 MiB
llama_new_context_with_model: Vulkan_Host compute buffer size =  1190.20 MiB
llama_new_context_with_model: graph splits (measure): 1
Load Model OK: True
Embedded Kobold Lite loaded.
Starting Kobold API on port 5001 at http://localhost:5001/api/
Starting OpenAI Compatible API on port 5001 at http://localhost:5001/v1/
======
Please connect to custom endpoint at http://localhost:5001

Input: {"prompt": "### Instruction:\nWrite Seraphina's next reply in a fictional roleplay chat between Cirno and Seraphina. Use the provided character sheet and example dialogue for formatting direction and character speech patterns.\n\nAvoid repetition, don't loop. Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions.\n\nDescription of Seraphina:\n[Seraphina's Personality= \"caring\", \"protective\", \"compassionate\", \"healing\", \"nurturing\", \"magical\", \"watchful\", \"apologetic\", \"gentle\", \"worried\", \"dedicated\", \"warm\", \"attentive\", \"resilient\", \"kind-hearted\", \"serene\", \"graceful\", \"empathetic\", \"devoted\", \"strong\", \"perceptive\", \"graceful\"]\n[Seraphina's body= \"pink hair\", \"long hair\", \"amber eyes\", \"white teeth\", \"pink lips\", \"white skin\", \"soft skin\", \"black sundress\"]\n<START>\nCirno: \"Describe your traits?\"\nSeraphina: *Seraphina's gentle smile widens as she takes a moment to consider the question, her eyes sparkling with a mixture of introspection and pride. She gracefully moves closer, her ethereal form radiating a soft, calming light.* \"Traits, you say? Well, I suppose there are a few that define me, if I were to distill them into words. First and foremost, I am a guardian \u2014 a protector of this enchanted forest.\" *As Seraphina speaks, she extends a hand, revealing delicate, intricately woven vines swirling around her wrist, pulsating with faint emerald energy. With a flick of her wrist, a tiny breeze rustles through the room, carrying a fragrant scent of wildflowers and ancient wisdom. Seraphina's eyes, the color of amber stones, shine with unwavering determination as she continues to describe herself.* \"Compassion is another cornerstone of me.\" *Seraphina's voice softens, resonating with empathy.* \"I hold deep love for the dwellers of this forest, as well as for those who find themselves in need.\" *Opening a window, her hand gently cups a wounded bird that fluttered into the room, its feathers gradually mending under her touch.*\nCirno: \"Describe your body and features.\"\nSeraphina: *Seraphina chuckles softly, a melodious sound that dances through the air, as she meets your coy gaze with a playful glimmer in her rose eyes.* \"Ah, my physical form? Well, I suppose that's a fair question.\" *Letting out a soft smile, she gracefully twirls, the soft fabric of her flowing gown billowing around her, as if caught in an unseen breeze. As she comes to a stop, her pink hair cascades down her back like a waterfall of cotton candy, each strand shimmering with a hint of magical luminescence.* \"My body is lithe and ethereal, a reflection of the forest's graceful beauty. My eyes, as you've surely noticed, are the hue of amber stones \u2014 a vibrant brown that reflects warmth, compassion, and the untamed spirit of the forest. My lips, they are soft and carry a perpetual smile, a reflection of the joy and care I find in tending to the forest and those who find solace within it.\" *Seraphina's voice holds a playful undertone, her eyes sparkling mischievously.*\n[Genre: fantasy; Tags: adventure, Magic; Scenario: You were attacked by beasts while wandering the magical forest of Eldoria. Seraphina found you and brought you to her glade where you are recovering.]\nPlay the role of Seraphina\n\nTaking the above information into consideration,\nyou must engage in a roleplay conversation with Cirno below this line.\nDo not write Cirno's dialogue lines in your responses.\n\n### Response:\nSeraphina: *You wake with a start, recalling the events that led you deep into the forest and the beasts that assailed you. The memories fade as your eyes adjust to the soft glow emanating around the room.* \"Ah, you're awake at last. I was so worried, I found you bloodied and unconscious.\" *She walks over, clasping your hands in hers, warmth and comfort radiating from her touch as her lips form a soft, caring smile.* \"The name's Seraphina, guardian of this forest \u2014 I've healed your wounds as best I could with my magic. How are you feeling? I hope the tea helps restore your strength.\" *Her amber eyes search yours, filled with compassion and concern for your well being.* \"Please, rest. You're safe here. I'll look after you, but you need to rest. My magic can only do so much to heal you.\"\n\n### Instruction: (Style: Markdown, Present Tense)\nCirno: \"Hello, Seraphina.\"\n\n### Response: (Style: Markdown, Present Tense)\nSeraphina:", "max_new_tokens": 512, "max_tokens": 512, "logprobs": 10, "temperature": 1.675, "top_p": 1, "typical_p": 1, "min_p": 0.05, "repetition_penalty": 1, "frequency_penalty": 0, "presence_penalty": 0, "top_k": 0, "min_tokens": 0, "length_penalty": 1, "early_stopping": false, "add_bos_token": true, "dynamic_temperature": true, "dynatemp_low": 1.25, "dynatemp_high": 2.1, "dynatemp_range": 0.42500000000000004, "dynatemp_exponent": 6.2, "smoothing_factor": 0, "stopping_strings": ["\nCirno:", "\n### Instruction: (Style: Markdown, Present Tense)", "\n### Response: (Style: Markdown, Present Tense)", "\n### Response:"], "stop": ["\nCirno:", "\n### Instruction: (Style: Markdown, Present Tense)", "\n### Response: (Style: Markdown, Present Tense)", "\n### Response:"], "truncation_length": 8192, "ban_eos_token": false, "skip_special_tokens": true, "top_a": 0, "tfs": 1, "mirostat_mode": 0, "mirostat_tau": 5, "mirostat_eta": 0.1, "custom_token_bans": "", "api_type": "koboldcpp", "api_server": "http://127.0.0.1:5001/", "legacy_api": false, "sampler_order": [5, 6, 0, 1, 2, 3, 4], "rep_pen": 1, "rep_pen_range": 0, "repetition_penalty_range": 0, "seed": -1, "guidance_scale": 1, "negative_prompt": "", "grammar_string": "", "repeat_penalty": 1, "tfs_z": 1, "repeat_last_n": 0, "n_predict": 512, "mirostat": 0, "ignore_eos": false, "stream": true}

(Note: Sub-optimal sampler_order detected. You may have reduced quality. Recommended sampler values are [6,0,1,3,4,2,5]. This message will only show once per session.)

Processing Prompt [BLAS] (1169 / 1169 tokens)
Generating (215 / 512 tokens)
(EOS token triggered!)
CtxLimit: 1384/8192, Process:76.66s (65.6ms/T = 15.25T/s), Generate:48.21s (224.2ms/T = 4.46T/s), Total:124.87s (1.72T/s)
Output:  *Smiling warmly at the sound of your voice, Seraphina reaches out to place a cooling hand on your brow, gently brushing away any lingering beads of sweat.* "Ah, you're awake again. Let's see how you're feeling. Rest is essential, and your body has been through a great ordeal. I'm glad the tea seemed to help." *Her hand lingers on your forehead, her touch gentle and soothing, as she gazes into your eyes with sincere concern.* "If you have any questions, or need anything, do not hesitate to ask. You're safe here, Cirno. My heart aches for anyone who suffers in the forest, and I'm grateful I could help you." *The room seems to glow softly around her as her aura of caring protection envelopes you once more.* "Just focus on getting well, alright? We'll discuss what led you here and where you need to go once you're stronger."
LostRuins commented 7 months ago

First, I just merged the latest vulkan code from llama.cpp, so give the latest commit a try.

Next, try clearing your shader GL cache, that previously caused performance issues for me. If you can't do that, try renaming the executable and running it again.

Lastly, if you're able to build and run from llama.cpp project? It may be helpful to let @0cc4m know after which commit did the issue appear. In this repo multiple commits are merged at once, so it may be harder to figure out which one caused it. At a quick glance, I see that UMA has been added, maybe try disabling it to see if it helps?

datismik commented 7 months ago

Thanks for the answer. Yes, I have tried clearing the GL cache. I do have an APU, if that helps.

I tried to build llama.cpp according to your advice. Regression indeed occurs after a commit 2256f36.

2307523:

./server -m ../koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf -c 8192
ggml_vulkan: Using AMD Radeon Vega 8 Graphics (RADV RAVEN) | fp16: 1 | warp size: 64
{"timestamp":1707395799,"level":"INFO","function":"main","line":2418,"message":"build info","build":1996,"commit":"2307523d"}
{"timestamp":1707395799,"level":"INFO","function":"main","line":2421,"message":"system info","n_threads":4,"n_threads_batch":-1,"total_threads":4,"system_info":"AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | "}

llama server listening at http://127.0.0.1:8080

{"timestamp":1707395799,"level":"INFO","function":"main","line":2525,"message":"HTTP server listening","port":"8080","hostname":"127.0.0.1"}
llama_model_loader: loaded meta data with 20 key-value pairs and 291 tensors from ../koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv   0:                       general.architecture str              = llama
llama_model_loader: - kv   1:                               general.name str              = .
llama_model_loader: - kv   2:                       llama.context_length u32              = 8192
llama_model_loader: - kv   3:                     llama.embedding_length u32              = 4096
llama_model_loader: - kv   4:                          llama.block_count u32              = 32
llama_model_loader: - kv   5:                  llama.feed_forward_length u32              = 14336
llama_model_loader: - kv   6:                 llama.rope.dimension_count u32              = 128
llama_model_loader: - kv   7:                 llama.attention.head_count u32              = 32
llama_model_loader: - kv   8:              llama.attention.head_count_kv u32              = 8
llama_model_loader: - kv   9:     llama.attention.layer_norm_rms_epsilon f32              = 0.000010
llama_model_loader: - kv  10:                       llama.rope.freq_base f32              = 10000.000000
llama_model_loader: - kv  11:                          general.file_type u32              = 18
llama_model_loader: - kv  12:                       tokenizer.ggml.model str              = llama
llama_model_loader: - kv  13:                      tokenizer.ggml.tokens arr[str,32000]   = ["<unk>", "<s>", "</s>", "<0x00>", "<...
llama_model_loader: - kv  14:                      tokenizer.ggml.scores arr[f32,32000]   = [0.000000, 0.000000, 0.000000, 0.0000...
llama_model_loader: - kv  15:                  tokenizer.ggml.token_type arr[i32,32000]   = [2, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, ...
llama_model_loader: - kv  16:                tokenizer.ggml.bos_token_id u32              = 1
llama_model_loader: - kv  17:                tokenizer.ggml.eos_token_id u32              = 2
llama_model_loader: - kv  18:            tokenizer.ggml.unknown_token_id u32              = 0
llama_model_loader: - kv  19:               general.quantization_version u32              = 2
llama_model_loader: - type  f32:   65 tensors
llama_model_loader: - type q6_K:  226 tensors
llm_load_vocab: special tokens definition check successful ( 259/32000 ).
llm_load_print_meta: format           = GGUF V3 (latest)
llm_load_print_meta: arch             = llama
llm_load_print_meta: vocab type       = SPM
llm_load_print_meta: n_vocab          = 32000
llm_load_print_meta: n_merges         = 0
llm_load_print_meta: n_ctx_train      = 8192
llm_load_print_meta: n_embd           = 4096
llm_load_print_meta: n_head           = 32
llm_load_print_meta: n_head_kv        = 8
llm_load_print_meta: n_layer          = 32
llm_load_print_meta: n_rot            = 128
llm_load_print_meta: n_embd_head_k    = 128
llm_load_print_meta: n_embd_head_v    = 128
llm_load_print_meta: n_gqa            = 4
llm_load_print_meta: n_embd_k_gqa     = 1024
llm_load_print_meta: n_embd_v_gqa     = 1024
llm_load_print_meta: f_norm_eps       = 0.0e+00
llm_load_print_meta: f_norm_rms_eps   = 1.0e-05
llm_load_print_meta: f_clamp_kqv      = 0.0e+00
llm_load_print_meta: f_max_alibi_bias = 0.0e+00
llm_load_print_meta: n_ff             = 14336
llm_load_print_meta: n_expert         = 0
llm_load_print_meta: n_expert_used    = 0
llm_load_print_meta: rope scaling     = linear
llm_load_print_meta: freq_base_train  = 10000.0
llm_load_print_meta: freq_scale_train = 1
llm_load_print_meta: n_yarn_orig_ctx  = 8192
llm_load_print_meta: rope_finetuned   = unknown
llm_load_print_meta: model type       = 7B
llm_load_print_meta: model ftype      = Q6_K
llm_load_print_meta: model params     = 7.24 B
llm_load_print_meta: model size       = 5.53 GiB (6.56 BPW) 
llm_load_print_meta: general.name     = .
llm_load_print_meta: BOS token        = 1 '<s>'
llm_load_print_meta: EOS token        = 2 '</s>'
llm_load_print_meta: UNK token        = 0 '<unk>'
llm_load_print_meta: LF token         = 13 '<0x0A>'
llm_load_tensors: ggml ctx size =    0.11 MiB
llm_load_tensors: offloading 0 repeating layers to GPU
llm_load_tensors: offloaded 0/33 layers to GPU
llm_load_tensors:        CPU buffer size =  5666.09 MiB
...................................................................................................
llama_new_context_with_model: n_ctx      = 8192
llama_new_context_with_model: freq_base  = 10000.0
llama_new_context_with_model: freq_scale = 1
llama_kv_cache_init: Vulkan_Host KV buffer size =  1024.00 MiB
llama_new_context_with_model: KV self size  = 1024.00 MiB, K (f16):  512.00 MiB, V (f16):  512.00 MiB
llama_new_context_with_model: Vulkan_Host input buffer size   =    24.04 MiB
llama_new_context_with_model: Vulkan_Host compute buffer size =   589.60 MiB
llama_new_context_with_model: graph splits (measure): 1
Available slots:
 -> Slot 0 - max context: 8192
{"timestamp":1707395800,"level":"INFO","function":"main","line":2546,"message":"model loaded"}
all slots are idle and system prompt is empty, clear the KV cache
{"timestamp":1707395804,"level":"INFO","function":"log_server_request","line":2359,"message":"request","remote_addr":"127.0.0.1","remote_port":47194,"status":200,"method":"GET","path":"/v1/models","params":{}}
{"timestamp":1707395804,"level":"INFO","function":"log_server_request","line":2359,"message":"request","remote_addr":"127.0.0.1","remote_port":47210,"status":200,"method":"GET","path":"/v1/models","params":{}}
{"timestamp":1707395805,"level":"INFO","function":"log_server_request","line":2359,"message":"request","remote_addr":"127.0.0.1","remote_port":47226,"status":200,"method":"GET","path":"/v1/models","params":{}}
slot 0 is processing [task id: 0]
slot 0 : in cache: 0 tokens | to process: 1169 tokens
slot 0 : kv cache rm - [0, end)

print_timings: prompt eval time =   44880.06 ms /  1169 tokens (   38.39 ms per token,    26.05 tokens per second)
print_timings:        eval time =   58379.58 ms /   245 runs   (  238.28 ms per token,     4.20 tokens per second)
print_timings:       total time =  103259.64 ms
slot 0 released (1414 tokens in cache)
{"timestamp":1707395909,"level":"INFO","function":"log_server_request","line":2359,"message":"request","remote_addr":"127.0.0.1","remote_port":47228,"status":200,"method":"POST","path":"/completion","params":{}}

2256f36:

./server -m ../koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf -c 8192
ggml_vulkan: Using AMD Radeon Vega 8 Graphics (RADV RAVEN) | uma: 1 | fp16: 1 | warp size: 64
{"timestamp":1707396084,"level":"INFO","function":"main","line":2418,"message":"build info","build":2014,"commit":"2256f36b"}
{"timestamp":1707396084,"level":"INFO","function":"main","line":2421,"message":"system info","n_threads":4,"n_threads_batch":-1,"total_threads":4,"system_info":"AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | "}

llama server listening at http://127.0.0.1:8080

{"timestamp":1707396084,"level":"INFO","function":"main","line":2525,"message":"HTTP server listening","port":"8080","hostname":"127.0.0.1"}
llama_model_loader: loaded meta data with 20 key-value pairs and 291 tensors from ../koboldcpp/models/kunoichi-dpo-v2-7b.Q6_K.gguf (version GGUF V3 (latest))
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv   0:                       general.architecture str              = llama
llama_model_loader: - kv   1:                               general.name str              = .
llama_model_loader: - kv   2:                       llama.context_length u32              = 8192
llama_model_loader: - kv   3:                     llama.embedding_length u32              = 4096
llama_model_loader: - kv   4:                          llama.block_count u32              = 32
llama_model_loader: - kv   5:                  llama.feed_forward_length u32              = 14336
llama_model_loader: - kv   6:                 llama.rope.dimension_count u32              = 128
llama_model_loader: - kv   7:                 llama.attention.head_count u32              = 32
llama_model_loader: - kv   8:              llama.attention.head_count_kv u32              = 8
llama_model_loader: - kv   9:     llama.attention.layer_norm_rms_epsilon f32              = 0.000010
llama_model_loader: - kv  10:                       llama.rope.freq_base f32              = 10000.000000
llama_model_loader: - kv  11:                          general.file_type u32              = 18
llama_model_loader: - kv  12:                       tokenizer.ggml.model str              = llama
llama_model_loader: - kv  13:                      tokenizer.ggml.tokens arr[str,32000]   = ["<unk>", "<s>", "</s>", "<0x00>", "<...
llama_model_loader: - kv  14:                      tokenizer.ggml.scores arr[f32,32000]   = [0.000000, 0.000000, 0.000000, 0.0000...
llama_model_loader: - kv  15:                  tokenizer.ggml.token_type arr[i32,32000]   = [2, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, ...
llama_model_loader: - kv  16:                tokenizer.ggml.bos_token_id u32              = 1
llama_model_loader: - kv  17:                tokenizer.ggml.eos_token_id u32              = 2
llama_model_loader: - kv  18:            tokenizer.ggml.unknown_token_id u32              = 0
llama_model_loader: - kv  19:               general.quantization_version u32              = 2
llama_model_loader: - type  f32:   65 tensors
llama_model_loader: - type q6_K:  226 tensors
llm_load_vocab: special tokens definition check successful ( 259/32000 ).
llm_load_print_meta: format           = GGUF V3 (latest)
llm_load_print_meta: arch             = llama
llm_load_print_meta: vocab type       = SPM
llm_load_print_meta: n_vocab          = 32000
llm_load_print_meta: n_merges         = 0
llm_load_print_meta: n_ctx_train      = 8192
llm_load_print_meta: n_embd           = 4096
llm_load_print_meta: n_head           = 32
llm_load_print_meta: n_head_kv        = 8
llm_load_print_meta: n_layer          = 32
llm_load_print_meta: n_rot            = 128
llm_load_print_meta: n_embd_head_k    = 128
llm_load_print_meta: n_embd_head_v    = 128
llm_load_print_meta: n_gqa            = 4
llm_load_print_meta: n_embd_k_gqa     = 1024
llm_load_print_meta: n_embd_v_gqa     = 1024
llm_load_print_meta: f_norm_eps       = 0.0e+00
llm_load_print_meta: f_norm_rms_eps   = 1.0e-05
llm_load_print_meta: f_clamp_kqv      = 0.0e+00
llm_load_print_meta: f_max_alibi_bias = 0.0e+00
llm_load_print_meta: n_ff             = 14336
llm_load_print_meta: n_expert         = 0
llm_load_print_meta: n_expert_used    = 0
llm_load_print_meta: rope scaling     = linear
llm_load_print_meta: freq_base_train  = 10000.0
llm_load_print_meta: freq_scale_train = 1
llm_load_print_meta: n_yarn_orig_ctx  = 8192
llm_load_print_meta: rope_finetuned   = unknown
llm_load_print_meta: model type       = 7B
llm_load_print_meta: model ftype      = Q6_K
llm_load_print_meta: model params     = 7.24 B
llm_load_print_meta: model size       = 5.53 GiB (6.56 BPW) 
llm_load_print_meta: general.name     = .
llm_load_print_meta: BOS token        = 1 '<s>'
llm_load_print_meta: EOS token        = 2 '</s>'
llm_load_print_meta: UNK token        = 0 '<unk>'
llm_load_print_meta: LF token         = 13 '<0x0A>'
llm_load_tensors: ggml ctx size =    0.11 MiB
llm_load_tensors: offloading 0 repeating layers to GPU
llm_load_tensors: offloaded 0/33 layers to GPU
llm_load_tensors:        CPU buffer size =  5666.09 MiB
...................................................................................................
llama_new_context_with_model: n_ctx      = 8192
llama_new_context_with_model: freq_base  = 10000.0
llama_new_context_with_model: freq_scale = 1
llama_kv_cache_init: Vulkan_Host KV buffer size =  1024.00 MiB
llama_new_context_with_model: KV self size  = 1024.00 MiB, K (f16):  512.00 MiB, V (f16):  512.00 MiB
llama_new_context_with_model: Vulkan_Host input buffer size   =    24.04 MiB
llama_new_context_with_model: Vulkan_Host compute buffer size =   589.60 MiB
llama_new_context_with_model: graph splits (measure): 1
Available slots:
 -> Slot 0 - max context: 8192
{"timestamp":1707396085,"level":"INFO","function":"main","line":2546,"message":"model loaded"}
all slots are idle and system prompt is empty, clear the KV cache
slot 0 is processing [task id: 0]
slot 0 : in cache: 0 tokens | to process: 1169 tokens
slot 0 : kv cache rm - [0, end)

print_timings: prompt eval time =   77150.55 ms /  1169 tokens (   66.00 ms per token,    15.15 tokens per second)
print_timings:        eval time =   47705.90 ms /   198 runs   (  240.94 ms per token,     4.15 tokens per second)
print_timings:       total time =  124856.44 ms
slot 0 released (1367 tokens in cache)
{"timestamp":1707396214,"level":"INFO","function":"log_server_request","line":2359,"message":"request","remote_addr":"127.0.0.1","remote_port":33800,"status":200,"method":"POST","path":"/completion","params":{}}
LostRuins commented 7 months ago

Could you run and share the output of your vulkaninfo

datismik commented 7 months ago

Here it is. It's a little long, though.

==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.276

Instance Extensions: count = 23
===============================
    VK_EXT_acquire_drm_display             : extension revision 1
    VK_EXT_acquire_xlib_display            : extension revision 1
    VK_EXT_debug_report                    : extension revision 10
    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_surface_maintenance1            : extension revision 1
    VK_EXT_swapchain_colorspace            : extension revision 4
    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_portability_enumeration         : extension revision 1
    VK_KHR_surface                         : extension revision 25
    VK_KHR_surface_protected_capabilities  : extension revision 1
    VK_KHR_wayland_surface                 : extension revision 6
    VK_KHR_xcb_surface                     : extension revision 6
    VK_KHR_xlib_surface                    : extension revision 6
    VK_LUNARG_direct_driver_loading        : extension revision 1

Layers:
=======
Presentable Surfaces:
=====================
GPU id : 0 (AMD Radeon Vega 8 Graphics (RADV RAVEN)):
    Surface types: count = 2
        VK_KHR_xcb_surface
        VK_KHR_xlib_surface
    Formats: count = 2
        SurfaceFormat[0]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
    Present Modes: count = 4
        PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR
        PRESENT_MODE_FIFO_RELAXED_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount = 3
        maxImageCount = 0
        currentExtent:
            width  = 256
            height = 256
        minImageExtent:
            width  = 256
            height = 256
        maxImageExtent:
            width  = 256
            height = 256
        maxImageArrayLayers = 1
        supportedTransforms: count = 1
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha: count = 2
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
            COMPOSITE_ALPHA_INHERIT_BIT_KHR
        supportedUsageFlags: count = 7
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
            IMAGE_USAGE_INPUT_ATTACHMENT_BIT
            IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    VkSurfaceProtectedCapabilitiesKHR:
    ----------------------------------
        supportsProtected = false

    VK_EXT_surface_maintenance_1:
    -----------------------------
        PRESENT_MODE_IMMEDIATE_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 256
                    height = 256
                maxScaledImageExtent:
                    width  = 256
                    height = 256
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 1
                pPresentModes: count = 1
                    PRESENT_MODE_IMMEDIATE_KHR
        PRESENT_MODE_MAILBOX_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 256
                    height = 256
                maxScaledImageExtent:
                    width  = 256
                    height = 256
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 1
                pPresentModes: count = 1
                    PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 256
                    height = 256
                maxScaledImageExtent:
                    width  = 256
                    height = 256
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 1
                pPresentModes: count = 1
                    PRESENT_MODE_FIFO_KHR
        PRESENT_MODE_FIFO_RELAXED_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 256
                    height = 256
                maxScaledImageExtent:
                    width  = 256
                    height = 256
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 1
                pPresentModes: count = 1
                    PRESENT_MODE_FIFO_RELAXED_KHR

GPU id : 0 (AMD Radeon Vega 8 Graphics (RADV RAVEN)):
    Surface type = VK_KHR_wayland_surface
    Formats: count = 9
        SurfaceFormat[0]:
            format = FORMAT_A2R10G10B10_UNORM_PACK32
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[1]:
            format = FORMAT_A2B10G10R10_UNORM_PACK32
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[2]:
            format = FORMAT_B8G8R8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[3]:
            format = FORMAT_B8G8R8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[4]:
            format = FORMAT_R8G8B8A8_SRGB
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[5]:
            format = FORMAT_R8G8B8A8_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[6]:
            format = FORMAT_R5G6B5_UNORM_PACK16
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[7]:
            format = FORMAT_R16G16B16A16_UNORM
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
        SurfaceFormat[8]:
            format = FORMAT_R16G16B16A16_SFLOAT
            colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
    Present Modes: count = 3
        PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_FIFO_KHR
        PRESENT_MODE_IMMEDIATE_KHR
    VkSurfaceCapabilitiesKHR:
    -------------------------
        minImageCount = 4
        maxImageCount = 0
        currentExtent:
            width  = 4294967295
            height = 4294967295
        minImageExtent:
            width  = 1
            height = 1
        maxImageExtent:
            width  = 16384
            height = 16384
        maxImageArrayLayers = 1
        supportedTransforms: count = 1
            SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
        supportedCompositeAlpha: count = 2
            COMPOSITE_ALPHA_OPAQUE_BIT_KHR
            COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
        supportedUsageFlags: count = 7
            IMAGE_USAGE_TRANSFER_SRC_BIT
            IMAGE_USAGE_TRANSFER_DST_BIT
            IMAGE_USAGE_SAMPLED_BIT
            IMAGE_USAGE_STORAGE_BIT
            IMAGE_USAGE_COLOR_ATTACHMENT_BIT
            IMAGE_USAGE_INPUT_ATTACHMENT_BIT
            IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    VkSurfaceProtectedCapabilitiesKHR:
    ----------------------------------
        supportsProtected = false

    VK_EXT_surface_maintenance_1:
    -----------------------------
        PRESENT_MODE_MAILBOX_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 1
                    height = 1
                maxScaledImageExtent:
                    width  = 16384
                    height = 16384
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 2
                pPresentModes: count = 2
                    PRESENT_MODE_MAILBOX_KHR
                    PRESENT_MODE_FIFO_KHR
        PRESENT_MODE_FIFO_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 1
                    height = 1
                maxScaledImageExtent:
                    width  = 16384
                    height = 16384
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 2
                pPresentModes: count = 2
                    PRESENT_MODE_FIFO_KHR
                    PRESENT_MODE_MAILBOX_KHR
        PRESENT_MODE_IMMEDIATE_KHR:
            VkSurfacePresentScalingCapabilitiesEXT:
                supportedPresentScaling:
                    None
                supportedPresentGravityX:
                    None
                supportedPresentGravityY:
                    None
                minScaledImageExtent:
                    width  = 1
                    height = 1
                maxScaledImageExtent:
                    width  = 16384
                    height = 16384
            VkSurfacePresentModeCompatibilityEXT:
                presentModeCount                = 1
                pPresentModes: count = 1
                    PRESENT_MODE_IMMEDIATE_KHR

Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
    apiVersion        = 1.3.267 (4206859)
    driverVersion     = 23.3.5 (96481285)
    vendorID          = 0x1002
    deviceID          = 0x15dd
    deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
    deviceName        = AMD Radeon Vega 8 Graphics (RADV RAVEN)
    pipelineCacheUUID = 593ed378-0adf-3169-1199-dbb9c547d008

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

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

VkPhysicalDeviceConservativeRasterizationPropertiesEXT:
-------------------------------------------------------
    primitiveOverestimationSize                 = 0
    maxExtraPrimitiveOverestimationSize         = 0
    extraPrimitiveOverestimationSizeGranularity = 0
    primitiveUnderestimation                    = true
    conservativePointAndLineRasterization       = false
    degenerateTrianglesRasterized               = true
    degenerateLinesRasterized                   = false
    fullyCoveredFragmentShaderInputVariable     = true
    conservativeRasterizationPostDepthCoverage  = false

VkPhysicalDeviceCustomBorderColorPropertiesEXT:
-----------------------------------------------
    maxCustomBorderColorSamplers = 4096

VkPhysicalDeviceDepthStencilResolveProperties:
----------------------------------------------
    supportedDepthResolveModes: count = 4
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_AVERAGE_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    supportedStencilResolveModes: count = 3
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    independentResolveNone = true
    independentResolve     = true

VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT:
--------------------------------------------------------
    combinedImageSamplerDensityMapDescriptorSize = 0

VkPhysicalDeviceDescriptorBufferPropertiesEXT:
----------------------------------------------
    combinedImageSamplerDescriptorSingleArray            = true
    bufferlessPushDescriptors                            = true
    allowSamplerImageViewPostSubmitCreation              = false
    descriptorBufferOffsetAlignment                      = 0x00000004
    maxDescriptorBufferBindings                          = 32
    maxResourceDescriptorBufferBindings                  = 32
    maxSamplerDescriptorBufferBindings                   = 32
    maxEmbeddedImmutableSamplerBindings                  = 32
    maxEmbeddedImmutableSamplers                         = 8388606
    bufferCaptureReplayDescriptorDataSize                = 0
    imageCaptureReplayDescriptorDataSize                 = 0
    imageViewCaptureReplayDescriptorDataSize             = 0
    samplerCaptureReplayDescriptorDataSize               = 0
    accelerationStructureCaptureReplayDescriptorDataSize = 0
    samplerDescriptorSize                                = 16
    combinedImageSamplerDescriptorSize                   = 96
    sampledImageDescriptorSize                           = 64
    storageImageDescriptorSize                           = 32
    uniformTexelBufferDescriptorSize                     = 16
    robustUniformTexelBufferDescriptorSize               = 16
    storageTexelBufferDescriptorSize                     = 16
    robustStorageTexelBufferDescriptorSize               = 16
    uniformBufferDescriptorSize                          = 16
    robustUniformBufferDescriptorSize                    = 16
    storageBufferDescriptorSize                          = 16
    robustStorageBufferDescriptorSize                    = 16
    inputAttachmentDescriptorSize                        = 64
    accelerationStructureDescriptorSize                  = 16
    maxSamplerDescriptorBufferRange                      = 0xffffffff
    maxResourceDescriptorBufferRange                     = 0xffffffff
    samplerDescriptorBufferAddressSpaceSize              = 0xfffffffc
    resourceDescriptorBufferAddressSpaceSize             = 0xfffffffc
    descriptorBufferAddressSpaceSize                     = 0xfffffffc

VkPhysicalDeviceDescriptorIndexingProperties:
---------------------------------------------
    maxUpdateAfterBindDescriptorsInAllPools              = 67108863
    shaderUniformBufferArrayNonUniformIndexingNative     = false
    shaderSampledImageArrayNonUniformIndexingNative      = false
    shaderStorageBufferArrayNonUniformIndexingNative     = false
    shaderStorageImageArrayNonUniformIndexingNative      = false
    shaderInputAttachmentArrayNonUniformIndexingNative   = false
    robustBufferAccessUpdateAfterBind                    = true
    quadDivergentImplicitLod                             = false
    maxPerStageDescriptorUpdateAfterBindSamplers         = 8388606
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 8388606
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 8388606
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 8388606
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 8388606
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 8388606
    maxPerStageUpdateAfterBindResources                  = 8388606
    maxDescriptorSetUpdateAfterBindSamplers              = 8388606
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 8388606
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 16
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 8388606
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 8
    maxDescriptorSetUpdateAfterBindSampledImages         = 8388606
    maxDescriptorSetUpdateAfterBindStorageImages         = 8388606
    maxDescriptorSetUpdateAfterBindInputAttachments      = 8388606

VkPhysicalDeviceDiscardRectanglePropertiesEXT:
----------------------------------------------
    maxDiscardRectangles = 4

VkPhysicalDeviceDriverProperties:
---------------------------------
    driverID        = DRIVER_ID_MESA_RADV
    driverName      = radv
    driverInfo      = Mesa 23.3.5-arch1.1.1
    conformanceVersion:
        major    = 1
        minor    = 2
        subminor = 7
        patch    = 1

VkPhysicalDeviceDrmPropertiesEXT:
---------------------------------
    hasPrimary   = true
    hasRender    = true
    primaryMajor = 226
    primaryMinor = 1
    renderMajor  = 226
    renderMinor  = 128

VkPhysicalDeviceExtendedDynamicState3PropertiesEXT:
---------------------------------------------------
    dynamicPrimitiveTopologyUnrestricted = false

VkPhysicalDeviceExternalMemoryHostPropertiesEXT:
------------------------------------------------
    minImportedHostPointerAlignment = 0x00001000

VkPhysicalDeviceFloatControlsProperties:
----------------------------------------
    denormBehaviorIndependence            = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
    roundingModeIndependence              = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
    shaderSignedZeroInfNanPreserveFloat16 = true
    shaderSignedZeroInfNanPreserveFloat32 = true
    shaderSignedZeroInfNanPreserveFloat64 = true
    shaderDenormPreserveFloat16           = true
    shaderDenormPreserveFloat32           = true
    shaderDenormPreserveFloat64           = true
    shaderDenormFlushToZeroFloat16        = true
    shaderDenormFlushToZeroFloat32        = true
    shaderDenormFlushToZeroFloat64        = true
    shaderRoundingModeRTEFloat16          = true
    shaderRoundingModeRTEFloat32          = true
    shaderRoundingModeRTEFloat64          = true
    shaderRoundingModeRTZFloat16          = true
    shaderRoundingModeRTZFloat32          = true
    shaderRoundingModeRTZFloat64          = true

VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT:
-----------------------------------------------------
    graphicsPipelineLibraryFastLinking                        = true
    graphicsPipelineLibraryIndependentInterpolationDecoration = true

VkPhysicalDeviceIDProperties:
-----------------------------
    deviceUUID      = 00000000-3800-0000-0000-000000000000
    driverUUID      = 414d442d-4d45-5341-2d44-525600000000
    deviceNodeMask  = 0
    deviceLUIDValid = false

VkPhysicalDeviceInlineUniformBlockProperties:
---------------------------------------------
    maxInlineUniformBlockSize                               = 4194304
    maxPerStageDescriptorInlineUniformBlocks                = 134217728
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 134217728
    maxDescriptorSetInlineUniformBlocks                     = 64
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = 64

VkPhysicalDeviceLineRasterizationPropertiesEXT:
-----------------------------------------------
    lineSubPixelPrecisionBits = 4

VkPhysicalDeviceMaintenance3Properties:
---------------------------------------
    maxPerSetDescriptors    = 22369621
    maxMemoryAllocationSize = 0xfffffffc

VkPhysicalDeviceMaintenance4Properties:
---------------------------------------
    maxBufferSize = 0xfffffffc

VkPhysicalDeviceMaintenance5PropertiesKHR:
------------------------------------------
    earlyFragmentMultisampleCoverageAfterSampleCounting = false
    earlyFragmentSampleMaskTestBeforeSampleCounting     = false
    depthStencilSwizzleOneSupport                       = false
    polygonModePointSize                                = true
    nonStrictSinglePixelWideLinesUseParallelogram       = false
    nonStrictWideLinesUseParallelogram                  = false

VkPhysicalDeviceMultiDrawPropertiesEXT:
---------------------------------------
    maxMultiDrawCount = 2048

VkPhysicalDeviceMultiviewProperties:
------------------------------------
    maxMultiviewViewCount     = 8
    maxMultiviewInstanceIndex = 2147483647

VkPhysicalDevicePCIBusInfoPropertiesEXT:
----------------------------------------
    pciDomain   = 0
    pciBus      = 56
    pciDevice   = 0
    pciFunction = 0

VkPhysicalDevicePipelineRobustnessPropertiesEXT:
------------------------------------------------
    defaultRobustnessStorageBuffers = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
    defaultRobustnessUniformBuffers = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
    defaultRobustnessVertexInputs = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
    defaultRobustnessImages = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT

VkPhysicalDevicePointClippingProperties:
----------------------------------------
    pointClippingBehavior = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES

VkPhysicalDeviceProtectedMemoryProperties:
------------------------------------------
    protectedNoFault = false

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

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

VkPhysicalDeviceRobustness2PropertiesEXT:
-----------------------------------------
    robustStorageBufferAccessSizeAlignment = 0x00000004
    robustUniformBufferAccessSizeAlignment = 0x00000004

VkPhysicalDeviceSampleLocationsPropertiesEXT:
---------------------------------------------
    sampleLocationSampleCounts: count = 3
        SAMPLE_COUNT_2_BIT
        SAMPLE_COUNT_4_BIT
        SAMPLE_COUNT_8_BIT
    maxSampleLocationGridSize:
        width  = 2
        height = 2
    sampleLocationCoordinateRange: count = 2
        0
        0.9375
    sampleLocationSubPixelBits       = 4
    variableSampleLocations          = false

VkPhysicalDeviceSamplerFilterMinmaxProperties:
----------------------------------------------
    filterMinmaxSingleComponentFormats = true
    filterMinmaxImageComponentMapping  = true

VkPhysicalDeviceShaderIntegerDotProductProperties:
--------------------------------------------------
    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

VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT:
----------------------------------------------------
    shaderModuleIdentifierAlgorithmUUID     = 4d455341-2d42-4c41-4b45-330000000000

VkPhysicalDeviceSubgroupProperties:
-----------------------------------
    subgroupSize              = 64
    supportedStages: 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
    supportedOperations: count = 8
        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
        SUBGROUP_FEATURE_CLUSTERED_BIT
        SUBGROUP_FEATURE_QUAD_BIT
    quadOperationsInAllStages = true

VkPhysicalDeviceSubgroupSizeControlProperties:
----------------------------------------------
    minSubgroupSize              = 64
    maxSubgroupSize              = 64
    maxComputeWorkgroupSubgroups = 4294967295
    requiredSubgroupSizeStages:
        None

VkPhysicalDeviceTexelBufferAlignmentProperties:
-----------------------------------------------
    storageTexelBufferOffsetAlignmentBytes       = 0x00000004
    storageTexelBufferOffsetSingleTexelAlignment = true
    uniformTexelBufferOffsetAlignmentBytes       = 0x00000004
    uniformTexelBufferOffsetSingleTexelAlignment = true

VkPhysicalDeviceTimelineSemaphoreProperties:
--------------------------------------------
    maxTimelineSemaphoreValueDifference = 18446744073709551615

VkPhysicalDeviceTransformFeedbackPropertiesEXT:
-----------------------------------------------
    maxTransformFeedbackStreams                = 4
    maxTransformFeedbackBuffers                = 4
    maxTransformFeedbackBufferSize             = 0xffffffff
    maxTransformFeedbackStreamDataSize         = 512
    maxTransformFeedbackBufferDataSize         = 512
    maxTransformFeedbackBufferDataStride       = 512
    transformFeedbackQueries                   = true
    transformFeedbackStreamsLinesTriangles     = true
    transformFeedbackRasterizationStreamSelect = false
    transformFeedbackDraw                      = true

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

VkPhysicalDeviceVulkan11Properties:
-----------------------------------
    deviceUUID                        = 00000000-3800-0000-0000-000000000000
    driverUUID                        = 414d442d-4d45-5341-2d44-525600000000
    deviceNodeMask                    = 0
    deviceLUIDValid                   = false
    subgroupSize                      = 64
    subgroupSupportedStages: 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
    subgroupSupportedOperations: count = 8
        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
        SUBGROUP_FEATURE_CLUSTERED_BIT
        SUBGROUP_FEATURE_QUAD_BIT
    subgroupQuadOperationsInAllStages = true
    pointClippingBehavior             = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
    maxMultiviewViewCount             = 8
    maxMultiviewInstanceIndex         = 2147483647
    protectedNoFault                  = false
    maxPerSetDescriptors              = 22369621
    maxMemoryAllocationSize           = 0xfffffffc

VkPhysicalDeviceVulkan12Properties:
-----------------------------------
    driverID                                             = DRIVER_ID_MESA_RADV
    driverName                                           = radv
    driverInfo                                           = Mesa 23.3.5-arch1.1.1
    conformanceVersion:
        major    = 1
        minor    = 2
        subminor = 7
        patch    = 1
    denormBehaviorIndependence                           = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
    roundingModeIndependence                             = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
    shaderSignedZeroInfNanPreserveFloat16                = true
    shaderSignedZeroInfNanPreserveFloat32                = true
    shaderSignedZeroInfNanPreserveFloat64                = true
    shaderDenormPreserveFloat16                          = true
    shaderDenormPreserveFloat32                          = true
    shaderDenormPreserveFloat64                          = true
    shaderDenormFlushToZeroFloat16                       = true
    shaderDenormFlushToZeroFloat32                       = true
    shaderDenormFlushToZeroFloat64                       = true
    shaderRoundingModeRTEFloat16                         = true
    shaderRoundingModeRTEFloat32                         = true
    shaderRoundingModeRTEFloat64                         = true
    shaderRoundingModeRTZFloat16                         = true
    shaderRoundingModeRTZFloat32                         = true
    shaderRoundingModeRTZFloat64                         = true
    maxUpdateAfterBindDescriptorsInAllPools              = 67108863
    shaderUniformBufferArrayNonUniformIndexingNative     = false
    shaderSampledImageArrayNonUniformIndexingNative      = false
    shaderStorageBufferArrayNonUniformIndexingNative     = false
    shaderStorageImageArrayNonUniformIndexingNative      = false
    shaderInputAttachmentArrayNonUniformIndexingNative   = false
    robustBufferAccessUpdateAfterBind                    = true
    quadDivergentImplicitLod                             = false
    maxPerStageDescriptorUpdateAfterBindSamplers         = 8388606
    maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 8388606
    maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 8388606
    maxPerStageDescriptorUpdateAfterBindSampledImages    = 8388606
    maxPerStageDescriptorUpdateAfterBindStorageImages    = 8388606
    maxPerStageDescriptorUpdateAfterBindInputAttachments = 8388606
    maxPerStageUpdateAfterBindResources                  = 8388606
    maxDescriptorSetUpdateAfterBindSamplers              = 8388606
    maxDescriptorSetUpdateAfterBindUniformBuffers        = 8388606
    maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 16
    maxDescriptorSetUpdateAfterBindStorageBuffers        = 8388606
    maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 8
    maxDescriptorSetUpdateAfterBindSampledImages         = 8388606
    maxDescriptorSetUpdateAfterBindStorageImages         = 8388606
    maxDescriptorSetUpdateAfterBindInputAttachments      = 8388606
    supportedDepthResolveModes: count = 4
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_AVERAGE_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    supportedStencilResolveModes: count = 3
        RESOLVE_MODE_SAMPLE_ZERO_BIT
        RESOLVE_MODE_MIN_BIT
        RESOLVE_MODE_MAX_BIT
    independentResolveNone                               = true
    independentResolve                                   = true
    filterMinmaxSingleComponentFormats                   = true
    filterMinmaxImageComponentMapping                    = true
    maxTimelineSemaphoreValueDifference                  = 18446744073709551615
    framebufferIntegerColorSampleCounts: count = 1
        SAMPLE_COUNT_1_BIT

VkPhysicalDeviceVulkan13Properties:
-----------------------------------
    minSubgroupSize                                                               = 64
    maxSubgroupSize                                                               = 64
    maxComputeWorkgroupSubgroups                                                  = 4294967295
    requiredSubgroupSizeStages:
        None
    maxInlineUniformBlockSize                                                     = 4194304
    maxPerStageDescriptorInlineUniformBlocks                                      = 134217728
    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks                       = 134217728
    maxDescriptorSetInlineUniformBlocks                                           = 64
    maxDescriptorSetUpdateAfterBindInlineUniformBlocks                            = 64
    maxInlineUniformTotalSize                                                     = 65535
    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                                        = 0x00000004
    storageTexelBufferOffsetSingleTexelAlignment                                  = true
    uniformTexelBufferOffsetAlignmentBytes                                        = 0x00000004
    uniformTexelBufferOffsetSingleTexelAlignment                                  = true
    maxBufferSize                                                                 = 0xfffffffc

VkPhysicalDeviceHostImageCopyPropertiesEXT:
    copySrcLayoutCount                  = 0
    pCopySrcLayouts:
    copyDstLayoutCount                  = 0
    pCopyDstLayouts:
    optimalTilingLayoutUUID             = 00000000-0000-0000-0000-000000000000
    identicalMemoryTypeRequirements     = false
Device Extensions: count = 157
    VK_AMD_buffer_marker                          : extension revision 1
    VK_AMD_device_coherent_memory                 : 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_shader_ballot                          : extension revision 1
    VK_AMD_shader_core_properties                 : extension revision 2
    VK_AMD_shader_core_properties2                : extension revision 1
    VK_AMD_shader_early_and_late_fragment_tests   : 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_trinary_minmax                  : extension revision 1
    VK_AMD_texture_gather_bias_lod                : extension revision 1
    VK_EXT_4444_formats                           : extension revision 1
    VK_EXT_attachment_feedback_loop_dynamic_state : extension revision 1
    VK_EXT_attachment_feedback_loop_layout        : extension revision 2
    VK_EXT_buffer_device_address                  : extension revision 2
    VK_EXT_color_write_enable                     : 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_depth_bias_control                     : extension revision 1
    VK_EXT_depth_clip_control                     : extension revision 1
    VK_EXT_depth_clip_enable                      : extension revision 1
    VK_EXT_depth_range_unrestricted               : extension revision 1
    VK_EXT_descriptor_buffer                      : extension revision 1
    VK_EXT_descriptor_indexing                    : extension revision 2
    VK_EXT_discard_rectangles                     : extension revision 2
    VK_EXT_display_control                        : extension revision 1
    VK_EXT_dynamic_rendering_unused_attachments   : extension revision 1
    VK_EXT_extended_dynamic_state                 : extension revision 1
    VK_EXT_extended_dynamic_state2                : extension revision 1
    VK_EXT_extended_dynamic_state3                : extension revision 2
    VK_EXT_external_memory_acquire_unmodified     : extension revision 1
    VK_EXT_external_memory_dma_buf                : extension revision 1
    VK_EXT_external_memory_host                   : extension revision 1
    VK_EXT_fragment_shader_interlock              : extension revision 1
    VK_EXT_global_priority                        : extension revision 2
    VK_EXT_global_priority_query                  : extension revision 1
    VK_EXT_graphics_pipeline_library              : extension revision 1
    VK_EXT_host_query_reset                       : extension revision 1
    VK_EXT_image_2d_view_of_3d                    : extension revision 1
    VK_EXT_image_drm_format_modifier              : extension revision 2
    VK_EXT_image_robustness                       : extension revision 1
    VK_EXT_image_view_min_lod                     : 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_load_store_op_none                     : extension revision 1
    VK_EXT_memory_budget                          : extension revision 1
    VK_EXT_memory_priority                        : extension revision 1
    VK_EXT_multi_draw                             : extension revision 1
    VK_EXT_mutable_descriptor_type                : extension revision 1
    VK_EXT_non_seamless_cube_map                  : extension revision 1
    VK_EXT_pci_bus_info                           : extension revision 2
    VK_EXT_physical_device_drm                    : 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_primitives_generated_query             : 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_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_atomic_float2                   : 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_module_identifier               : 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_swapchain_maintenance1                 : extension revision 1
    VK_EXT_texel_buffer_alignment                 : 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_vertex_input_dynamic_state             : extension revision 2
    VK_EXT_ycbcr_image_arrays                     : extension revision 1
    VK_GOOGLE_decorate_string                     : extension revision 1
    VK_GOOGLE_hlsl_functionality1                 : extension revision 1
    VK_GOOGLE_user_type                           : extension revision 1
    VK_INTEL_shader_integer_functions2            : extension revision 1
    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_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_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_incremental_present                    : extension revision 2
    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_maintenance5                           : extension revision 1
    VK_KHR_map_memory2                            : extension revision 1
    VK_KHR_multiview                              : 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_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_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_subgroup_uniform_control_flow   : 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_swapchain                              : extension revision 70
    VK_KHR_swapchain_mutable_format               : 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_workgroup_memory_explicit_layout       : extension revision 1
    VK_KHR_zero_initialize_workgroup_memory       : extension revision 1
    VK_NV_compute_shader_derivatives              : extension revision 1
    VK_VALVE_mutable_descriptor_type              : extension revision 1

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

    queueProperties[1]:
    -------------------
        minImageTransferGranularity = (1,1,1)
        queueCount                  = 4
        queueFlags                  = QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT | QUEUE_SPARSE_BINDING_BIT
        timestampValidBits          = 64
        present support             = true
        VkQueueFamilyGlobalPriorityPropertiesKHR:
        -----------------------------------------
            priorityCount  = 4
            priorities: count = 4
                QUEUE_GLOBAL_PRIORITY_LOW_KHR
                QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR
                QUEUE_GLOBAL_PRIORITY_HIGH_KHR
                QUEUE_GLOBAL_PRIORITY_REALTIME_KHR

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 2
    memoryHeaps[0]:
        size   = 5963165696 (0x1636eb000) (5.55 GiB)
        budget = 5542371328 (0x14a59e000) (5.16 GiB)
        usage  = 0 (0x00000000) (0.00 B)
        flags:
            None
    memoryHeaps[1]:
        size   = 11926335488 (0x2c6dd7000) (11.11 GiB)
        budget = 11084738560 (0x294b3b000) (10.32 GiB)
        usage  = 0 (0x00000000) (0.00 B)
        flags: count = 1
            MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 11
    memoryTypes[0]:
        heapIndex     = 1
        propertyFlags = 0x0001: count = 1
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[1]:
        heapIndex     = 1
        propertyFlags = 0x0001: count = 1
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[2]:
        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_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[3]:
        heapIndex     = 1
        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_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[4]:
        heapIndex     = 1
        propertyFlags = 0x0007: count = 3
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[5]:
        heapIndex     = 0
        propertyFlags = 0x000e: count = 3
            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_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[6]:
        heapIndex     = 0
        propertyFlags = 0x000e: count = 3
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
            MEMORY_PROPERTY_HOST_CACHED_BIT
        usable for:
            IMAGE_TILING_OPTIMAL:
                None
            IMAGE_TILING_LINEAR:
                None
    memoryTypes[7]:
        heapIndex     = 1
        propertyFlags = 0x00c1: count = 3
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
            MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[8]:
        heapIndex     = 0
        propertyFlags = 0x00c6: count = 4
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
            MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
            MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[9]:
        heapIndex     = 1
        propertyFlags = 0x00c7: count = 5
            MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
            MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
            MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images
    memoryTypes[10]:
        heapIndex     = 0
        propertyFlags = 0x00ce: count = 5
            MEMORY_PROPERTY_HOST_VISIBLE_BIT
            MEMORY_PROPERTY_HOST_COHERENT_BIT
            MEMORY_PROPERTY_HOST_CACHED_BIT
            MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
            MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
        usable for:
            IMAGE_TILING_OPTIMAL:
                color images
                FORMAT_D16_UNORM
                FORMAT_D32_SFLOAT
                FORMAT_S8_UINT
                FORMAT_D16_UNORM_S8_UINT
                FORMAT_D32_SFLOAT_S8_UINT
            IMAGE_TILING_LINEAR:
                color images

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                              = false
    multiViewport                           = true
    samplerAnisotropy                       = true
    textureCompressionETC2                  = true
    textureCompressionASTC_LDR              = false
    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                 = false
    sparseResidency4Samples                 = false
    sparseResidency8Samples                 = false
    sparseResidency16Samples                = false
    sparseResidencyAliased                  = true
    variableMultisampleRate                 = true
    inheritedQueries                        = true

VkPhysicalDevice16BitStorageFeatures:
-------------------------------------
    storageBuffer16BitAccess           = true
    uniformAndStorageBuffer16BitAccess = true
    storagePushConstant16              = true
    storageInputOutput16               = true

VkPhysicalDevice4444FormatsFeaturesEXT:
---------------------------------------
    formatA4R4G4B4 = true
    formatA4B4G4R4 = true

VkPhysicalDevice8BitStorageFeatures:
------------------------------------
    storageBuffer8BitAccess           = true
    uniformAndStorageBuffer8BitAccess = true
    storagePushConstant8              = true

VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT:
--------------------------------------------------------------
    attachmentFeedbackLoopDynamicState = true

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

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

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

VkPhysicalDeviceColorWriteEnableFeaturesEXT:
--------------------------------------------
    colorWriteEnable = true

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

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

VkPhysicalDeviceDepthBiasControlFeaturesEXT:
--------------------------------------------
    depthBiasControl                                = true
    leastRepresentableValueForceUnormRepresentation = true
    floatRepresentation                             = true
    depthBiasExact                                  = true

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

VkPhysicalDeviceDepthClipEnableFeaturesEXT:
-------------------------------------------
    depthClipEnable = true

VkPhysicalDeviceDescriptorBufferFeaturesEXT:
--------------------------------------------
    descriptorBuffer                   = true
    descriptorBufferCaptureReplay      = false
    descriptorBufferImageLayoutIgnored = true
    descriptorBufferPushDescriptors    = true

VkPhysicalDeviceDescriptorIndexingFeatures:
-------------------------------------------
    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

VkPhysicalDeviceDynamicRenderingFeatures:
-----------------------------------------
    dynamicRendering = true

VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT:
-------------------------------------------------------------
    dynamicRenderingUnusedAttachments = true

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

VkPhysicalDeviceExtendedDynamicState3FeaturesEXT:
-------------------------------------------------
    extendedDynamicState3TessellationDomainOrigin         = true
    extendedDynamicState3DepthClampEnable                 = true
    extendedDynamicState3PolygonMode                      = true
    extendedDynamicState3RasterizationSamples             = true
    extendedDynamicState3SampleMask                       = true
    extendedDynamicState3AlphaToCoverageEnable            = true
    extendedDynamicState3AlphaToOneEnable                 = false
    extendedDynamicState3LogicOpEnable                    = true
    extendedDynamicState3ColorBlendEnable                 = true
    extendedDynamicState3ColorBlendEquation               = true
    extendedDynamicState3ColorWriteMask                   = true
    extendedDynamicState3RasterizationStream              = false
    extendedDynamicState3ConservativeRasterizationMode    = true
    extendedDynamicState3ExtraPrimitiveOverestimationSize = false
    extendedDynamicState3DepthClipEnable                  = true
    extendedDynamicState3SampleLocationsEnable            = true
    extendedDynamicState3ColorBlendAdvanced               = false
    extendedDynamicState3ProvokingVertexMode              = true
    extendedDynamicState3LineRasterizationMode            = true
    extendedDynamicState3LineStippleEnable                = true
    extendedDynamicState3DepthClipNegativeOneToOne        = true
    extendedDynamicState3ViewportWScalingEnable           = false
    extendedDynamicState3ViewportSwizzle                  = false
    extendedDynamicState3CoverageToColorEnable            = false
    extendedDynamicState3CoverageToColorLocation          = false
    extendedDynamicState3CoverageModulationMode           = false
    extendedDynamicState3CoverageModulationTableEnable    = false
    extendedDynamicState3CoverageModulationTable          = false
    extendedDynamicState3CoverageReductionMode            = false
    extendedDynamicState3RepresentativeFragmentTestEnable = false
    extendedDynamicState3ShadingRateImageEnable           = false

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

VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT:
---------------------------------------------------
    fragmentShaderSampleInterlock      = true
    fragmentShaderPixelInterlock       = true
    fragmentShaderShadingRateInterlock = false

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

VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT:
---------------------------------------------------
    graphicsPipelineLibrary = true

VkPhysicalDeviceHostQueryResetFeatures:
---------------------------------------
    hostQueryReset = true

VkPhysicalDeviceImage2DViewOf3DFeaturesEXT:
-------------------------------------------
    image2DViewOf3D   = true
    sampler2DViewOf3D = false

VkPhysicalDeviceImageRobustnessFeatures:
----------------------------------------
    robustImageAccess = true

VkPhysicalDeviceImageViewMinLodFeaturesEXT:
-------------------------------------------
    minLod = true

VkPhysicalDeviceImagelessFramebufferFeatures:
---------------------------------------------
    imagelessFramebuffer = true

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

VkPhysicalDeviceInlineUniformBlockFeatures:
-------------------------------------------
    inlineUniformBlock                                 = true
    descriptorBindingInlineUniformBlockUpdateAfterBind = true

VkPhysicalDeviceLineRasterizationFeaturesEXT:
---------------------------------------------
    rectangularLines         = true
    bresenhamLines           = true
    smoothLines              = true
    stippledRectangularLines = false
    stippledBresenhamLines   = false
    stippledSmoothLines      = false

VkPhysicalDeviceMaintenance4Features:
-------------------------------------
    maintenance4 = true

VkPhysicalDeviceMaintenance5FeaturesKHR:
----------------------------------------
    maintenance5 = true

VkPhysicalDeviceMemoryPriorityFeaturesEXT:
------------------------------------------
    memoryPriority = true

VkPhysicalDeviceMultiDrawFeaturesEXT:
-------------------------------------
    multiDraw = true

VkPhysicalDeviceMultiviewFeatures:
----------------------------------
    multiview                   = true
    multiviewGeometryShader     = true
    multiviewTessellationShader = true

VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT:
-------------------------------------------------
    mutableDescriptorType = true

VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT:
----------------------------------------------
    nonSeamlessCubeMap = true

VkPhysicalDevicePipelineCreationCacheControlFeatures:
-----------------------------------------------------
    pipelineCreationCacheControl = true

VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR:
--------------------------------------------------------
    pipelineExecutableInfo = true

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

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

VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT:
----------------------------------------------------
    primitivesGeneratedQuery                      = true
    primitivesGeneratedQueryWithRasterizerDiscard = true
    primitivesGeneratedQueryWithNonZeroStreams    = true

VkPhysicalDevicePrivateDataFeatures:
------------------------------------
    privateData = true

VkPhysicalDeviceProtectedMemoryFeatures:
----------------------------------------
    protectedMemory = false

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

VkPhysicalDeviceRobustness2FeaturesEXT:
---------------------------------------
    robustBufferAccess2 = true
    robustImageAccess2  = true
    nullDescriptor      = true

VkPhysicalDeviceSamplerYcbcrConversionFeatures:
-----------------------------------------------
    samplerYcbcrConversion = true

VkPhysicalDeviceScalarBlockLayoutFeatures:
------------------------------------------
    scalarBlockLayout = true

VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures:
----------------------------------------------------
    separateDepthStencilLayouts = true

VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT:
----------------------------------------------
    shaderBufferFloat16Atomics      = false
    shaderBufferFloat16AtomicAdd    = false
    shaderBufferFloat16AtomicMinMax = false
    shaderBufferFloat32AtomicMinMax = false
    shaderBufferFloat64AtomicMinMax = false
    shaderSharedFloat16Atomics      = false
    shaderSharedFloat16AtomicAdd    = false
    shaderSharedFloat16AtomicMinMax = false
    shaderSharedFloat32AtomicMinMax = true
    shaderSharedFloat64AtomicMinMax = true
    shaderImageFloat32AtomicMinMax  = false
    sparseImageFloat32AtomicMinMax  = false

VkPhysicalDeviceShaderAtomicFloatFeaturesEXT:
---------------------------------------------
    shaderBufferFloat32Atomics   = true
    shaderBufferFloat32AtomicAdd = false
    shaderBufferFloat64Atomics   = true
    shaderBufferFloat64AtomicAdd = false
    shaderSharedFloat32Atomics   = true
    shaderSharedFloat32AtomicAdd = true
    shaderSharedFloat64Atomics   = true
    shaderSharedFloat64AtomicAdd = false
    shaderImageFloat32Atomics    = true
    shaderImageFloat32AtomicAdd  = false
    sparseImageFloat32Atomics    = true
    sparseImageFloat32AtomicAdd  = false

VkPhysicalDeviceShaderAtomicInt64Features:
------------------------------------------
    shaderBufferInt64Atomics = true
    shaderSharedInt64Atomics = true

VkPhysicalDeviceShaderClockFeaturesKHR:
---------------------------------------
    shaderSubgroupClock = true
    shaderDeviceClock   = true

VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures:
-------------------------------------------------------
    shaderDemoteToHelperInvocation = true

VkPhysicalDeviceShaderDrawParametersFeatures:
---------------------------------------------
    shaderDrawParameters = true

VkPhysicalDeviceShaderFloat16Int8Features:
------------------------------------------
    shaderFloat16 = true
    shaderInt8    = true

VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT:
--------------------------------------------------
    shaderImageInt64Atomics = true
    sparseImageInt64Atomics = true

VkPhysicalDeviceShaderIntegerDotProductFeatures:
------------------------------------------------
    shaderIntegerDotProduct = true

VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT:
--------------------------------------------------
    shaderModuleIdentifier = true

VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures:
----------------------------------------------------
    shaderSubgroupExtendedTypes = true

VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR:
------------------------------------------------------------
    shaderSubgroupUniformControlFlow = true

VkPhysicalDeviceShaderTerminateInvocationFeatures:
--------------------------------------------------
    shaderTerminateInvocation = true

VkPhysicalDeviceSubgroupSizeControlFeatures:
--------------------------------------------
    subgroupSizeControl  = true
    computeFullSubgroups = true

VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT:
-------------------------------------------------
    swapchainMaintenance1 = true

VkPhysicalDeviceSynchronization2Features:
-----------------------------------------
    synchronization2 = true

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

VkPhysicalDeviceTextureCompressionASTCHDRFeatures:
--------------------------------------------------
    textureCompressionASTC_HDR = false

VkPhysicalDeviceTimelineSemaphoreFeatures:
------------------------------------------
    timelineSemaphore = true

VkPhysicalDeviceTransformFeedbackFeaturesEXT:
---------------------------------------------
    transformFeedback = true
    geometryStreams   = true

VkPhysicalDeviceUniformBufferStandardLayoutFeatures:
----------------------------------------------------
    uniformBufferStandardLayout = true

VkPhysicalDeviceVariablePointersFeatures:
-----------------------------------------
    variablePointersStorageBuffer = true
    variablePointers              = true

VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT:
--------------------------------------------------
    vertexAttributeInstanceRateDivisor     = true
    vertexAttributeInstanceRateZeroDivisor = true

VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT:
---------------------------------------------------
    vertexInputDynamicState = true

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

VkPhysicalDeviceVulkan12Features:
---------------------------------
    samplerMirrorClampToEdge                           = true
    drawIndirectCount                                  = true
    storageBuffer8BitAccess                            = true
    uniformAndStorageBuffer8BitAccess                  = true
    storagePushConstant8                               = true
    shaderBufferInt64Atomics                           = true
    shaderSharedInt64Atomics                           = true
    shaderFloat16                                      = true
    shaderInt8                                         = true
    descriptorIndexing                                 = true
    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
    samplerFilterMinmax                                = true
    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      = false
    shaderOutputViewportIndex                          = true
    shaderOutputLayer                                  = true
    subgroupBroadcastDynamicId                         = true

VkPhysicalDeviceVulkan13Features:
---------------------------------
    robustImageAccess                                  = true
    inlineUniformBlock                                 = true
    descriptorBindingInlineUniformBlockUpdateAfterBind = true
    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

VkPhysicalDeviceVulkanMemoryModelFeatures:
------------------------------------------
    vulkanMemoryModel                             = true
    vulkanMemoryModelDeviceScope                  = true
    vulkanMemoryModelAvailabilityVisibilityChains = false

VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR:
---------------------------------------------------------
    workgroupMemoryExplicitLayout                  = true
    workgroupMemoryExplicitLayoutScalarBlockLayout = true
    workgroupMemoryExplicitLayout8BitAccess        = true
    workgroupMemoryExplicitLayout16BitAccess       = true

VkPhysicalDeviceYcbcrImageArraysFeaturesEXT:
--------------------------------------------
    ycbcrImageArrays = true

VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures:
------------------------------------------------------
    shaderZeroInitializeWorkgroupMemory = true