- 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