- From: Markus Gnauck <gnauckm@gmail.com>
- Date: Wed, 21 Aug 2024 15:10:56 +0200
- To: public-gpu@w3.org
- Message-ID: <CANLx=y7kiYs1mWaYp8ycKThAiUrC=y9LkdCueDGKcvxh0ujuiA@mail.gmail.com>
Thank you very much Corentin for the reply. I understand there are priorities and limitations and that Linux is not (yet) the best way to go with WebGPU dev. I still have high hopes for WebGPU being a "platform-agnostic API" though. Thanks to everyone involved for all your hard work! Regards, Markus On Mon, 19 Aug 2024 at 12:49, Corentin Wallez <cwallez@google.com> wrote: > Hey Markus, > > WebGPU support on Linux is not exactly ready yet. In particular, > interactions between WebGPU and the rest of the page (with the canvas, > copyExternalImageToTexture, etc) are known to be somewhat broken. We want > to ship WebGPU on Linux without flags (and these bugs fixed) eventually but > it is not the top priority at the moment. See > https://issues.chromium.org/u/1/issues/40218893 for the tracking issue > for WebGPU on Linux. So for now I suggest sticking to the Intel GPU if you > need to show something on the swapchain. > > Cheers, > > Corentin > > On Tue, Aug 13, 2024 at 5:15 PM Markus Gnauck <gnauckm@gmail.com> wrote: > >> Hi everyone, >> >> Not sure if the right place to ask for dev support. I did not find >> anything to help me when searching for the problem below, so I thought to >> ask here. My apologies if this is the wrong place! >> >> I'm on Ubuntu 22.04 with the latest Chrome (stable and unstable). My >> notebook has a dedicated GPU which is a GeForce RTX 3050 6GB (Laptop) and >> an integrated Intel Iris Xe. I tried different driver versions etc. in >> troubleshooting the problem, but am currently on nvidia-driver-550. >> >> My WebGPU program runs fine on the integrated GPU (power-preference: >> "low-power"), but it does not on the dedicated RTX ("high-performance"). >> Already a minimal WebGPU init will trigger the problem. It happens when the >> context is asked to provide a view of the current texture >> (context.getCurrentTexture().createView()). The error printed in the >> console of Chrome is the following: >> >> ----------- >> >> Requested allocation size (1228800) is smaller than the image requires >> (1310720). >> at ImportMemory >> (../../third_party/dawn/src/dawn/native/vulkan/external_memory/MemoryServiceImplementationOpaqueFD.cpp:131) >> >> localhost/:1 [Invalid Texture] is invalid. >> - While calling [Invalid Texture].CreateView([TextureViewDescriptor]). >> >> ----------- >> >> Canvas resolution is (in this example) 640x480. Preferred canvas format >> is "bgra8unorm". The same is true for the GPUTexture that comes back from >> context..getCurrentTexture(). I fail to understand where the extra size >> comes from that is required for the image. What am I not providing? Or is >> it something with my drivers? >> >> Interestingly, if I remove the presentation logic (i.e. no blit pass) >> from my program, the nvidia GPU will happily execute the compute shaders >> etc. >> >> I'm somewhat at loss. And since the program is running fine on the >> integrated GPU, I feel something this basic should not go wrong. But since >> I've been using WebGPU only for about a year so far, my experience is >> pretty limited. So anything that points me in the right direction is very >> much appreciated! >> >> Thank you! >> >> Regards, >> Markus >> >> >> Here comes a minimal code example that already triggers above error for >> me: >> >> 1 async function main() >> 2 { >> 3 if(!navigator.gpu) >> 4 throw new Error("No WebGPU"); >> 5 >> 6 // "low-power" does work >> 7 let adapter = await navigator.gpu..requestAdapter({ >> 8 powerPreference: "high-performance" } ); >> 9 >> 10 if(!adapter) >> 11 throw new Error("Failed to request adapter"); >> 12 >> 13 let device = await adapter.requestDevice(); >> 14 if(!device) >> 15 throw new Error("Failed to request device"); >> 16 >> 17 let canvas = document.querySelector("canvas"); >> 18 canvas.width = 640; >> 19 canvas.height = 480; >> 20 >> 21 context = canvas.getContext("webgpu"); >> 22 context.configure({ device, format: >> navigator.gpu.getPreferredCanvasFormat(), >> 23 alphaMode: "opaque" }); >> 24 >> 25 let renderPassDescriptor = { >> 26 colorAttachments: [ >> 27 { view: context.getCurrentTexture().createView(), // Fails with >> error >> 28 clearValue: { r: 1, g: 0, b: 0, a: 1.0 }, >> 29 loadOp: "clear", >> 30 storeOp: "store" } ] >> 31 }; >> 32 } >> 33 >> 34 main(); >> >
Received on Wednesday, 21 August 2024 13:11:13 UTC