-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Description
draw_indexed_indirect and multi_draw_indexed_indirect produce no output on Meta Quest 3 (Adreno 740 GPU) when using wgpu's Vulkan backend through OpenXR. No errors are reported - the draw calls simply render nothing. Direct draw_indexed calls with identical parameters work correctly.
Platform
Device: Meta Quest 3 and 2
GPU: Qualcomm Adreno 740 / Adreno 650
OS: Android (Quest OS)
wgpu version: 27.0.0 and 28.0.0 (both tested)
Backend: Vulkan
Repro steps
This works (renders correctly):
rustpass.set_index_buffer(index_buf.slice(..), wgpu::IndexFormat::Uint32);
pass.draw_indexed(0..50000, 0, 0..1);
This doesn't
let indirect_data: [u32; 5] = [
50000, // index_count
1, // instance_count
0, // first_index
0, // base_vertex
0, // first_instance
];
let indirect_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
label: Some("Indirect"),
contents: bytemuck::cast_slice(&indirect_data),
usage: wgpu::BufferUsages::INDIRECT,
});
pass.set_index_buffer(index_buf.slice(..), wgpu::IndexFormat::Uint32);
pass.draw_indexed_indirect(&indirect_buffer, 0);
It does work when testing on Linux/Windows on desktop with OpenXR
Possible causes?
- Driver bug?
Validation
Unable to enable Vulkan validation layers on Quest - they conflict with OpenXR device creation and prevent the app from starting.
This is related to a project I am working on to let people run browser js/webgpu code natively: https://github.com/zonkypop/lattice - hoping to get webxr+webgpu working for the Steam Frame 🥸
Metadata
Metadata
Assignees
Labels
Type
Projects
Status