You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the replay bug:
This is a replay of webgpu content running on linux with the RADV driver. WebGPU renders into a swapchain image created by chromium. It is then passed to a compositor in chromium. Both components are Vulkan running with their own VkInstance and VkDevice.
[gfxrecon] FATAL - API call at index: 4261 thread: 1 vkAllocateMemory returned error value VK_ERROR_INVALID_EXTERNAL_HANDLE that does not match the result from the capture file: VK_SUCCESS. Replay cannot continue.
Replay has encountered a fatal error and cannot continue: an external handle is not a valid handle of the specified type
It looks like at some point vkGetMemoryFdKHR() returns a -1 file descriptor but I could be getting confused looking at the output.
note: chromium might be doing graphics stuff in multiple processes, looking at the gfxr-convert output I think everything is in 1 process and captured but I'm not 100% sure.
Verify before submission:
Was trimming enabled? no
Was replayer renamed if necessary? no
Was --sync used if title is known to need forced synchronization? no
Build Environment:
Please include the SHA and PR or branch name used in capture and also used to build the replayer.
1.3.290 SDK
To Reproduce
Steps to reproduce the behavior:
Get the .gfxr file attached to the issue.
. Run gfxrecon-replay with gfxrecon_capture_frames_1_through_5000_20240916T105521.gfxr, no arguments
Screenshots:
Does not run long enough for screenshots.
System environment:
Capture and replay on the same system running Ubuntu 24.04 with the RADV driver
I think the problem is in the replay where fd 75 is valid but fd 76 is not. The chromium code includes this:
descriptor.memoryFD = dup(memory_fd_.get());
That is most likely what makes fd 76 point to the same external memory as fd 75.
I'm guessing that gfxreconstruct doesn't call dup() and it doesn't really need to unless it wants to keep some control of the fd (which chromium apparently does). So it seems like getting this application to work would require recording dup() and probably some other system calls to know when this is happening.
beau-lunarg
added
the
P2
A high-priority code maintenance issue or a functional problem that is recoverable or not a crash.
label
Sep 23, 2024
Describe the replay bug:
This is a replay of webgpu content running on linux with the RADV driver. WebGPU renders into a swapchain image created by chromium. It is then passed to a compositor in chromium. Both components are Vulkan running with their own VkInstance and VkDevice.
It looks like at some point
vkGetMemoryFdKHR()
returns a -1 file descriptor but I could be getting confused looking at the output.note: chromium might be doing graphics stuff in multiple processes, looking at the
gfxr-convert
output I think everything is in 1 process and captured but I'm not 100% sure.Verify before submission:
Build Environment:
Please include the SHA and PR or branch name used in capture and also used to build the replayer.
1.3.290 SDK
To Reproduce
Steps to reproduce the behavior:
.gfxr
file attached to the issue.Screenshots:
Does not run long enough for screenshots.
System environment:
Capture and replay on the same system running Ubuntu 24.04 with the RADV driver
Title configuration:
life
branch of https://github.com/jeremyg-lunarg/webgpu-electronWith npm and node.js installed:
npm install
npm run start
Additional information (optional):
The text was updated successfully, but these errors were encountered: