dawn-cmake/src/dawn_native
Aleksi Sapon 7f8c91cdde Fix crash from async callback calling Queue::Submit
An async callback which calls Queue::Submit will cause
reentrance in QueueBase::Tick and CreatePipelineAsyncTracker::Tick,
which invalidates the task queue being used by the original call,
and leads to a crash from an invalid pointer.

The Tick functions should remove the tasks from the queues before
the callbacks are called, so invalidation doesn't cause a crash.

Bug: dawn:729

Change-Id: I0d952d51040a3d1a475767400de3333a8b9b0821
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/45900
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-03-30 13:06:17 +00:00
..
d3d12 Propagate errors from Tick in backend::Queue::SubmitImpl 2021-03-30 10:21:36 +00:00
metal Propagate errors from Tick in backend::Queue::SubmitImpl 2021-03-30 10:21:36 +00:00
null Fix crash from async callback calling Queue::Submit 2021-03-30 13:06:17 +00:00
opengl dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
vulkan Propagate errors from Tick in backend::Queue::SubmitImpl 2021-03-30 10:21:36 +00:00
Adapter.cpp Reset Internal D3D12 Device After Test Shutdown 2021-02-24 22:09:30 +00:00
Adapter.h Reset Internal D3D12 Device After Test Shutdown 2021-02-24 22:09:30 +00:00
AttachmentState.cpp Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
AttachmentState.h Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
BUILD.gn Allow Dawn to surface Tint internal compiler errors as uncaptured validation errors 2021-03-25 15:37:44 +00:00
BackendConnection.cpp Add WGPUAdapterProperties and expose it in DawnNative 2020-01-10 13:28:18 +00:00
BackendConnection.h Add WGPUAdapterProperties and expose it in DawnNative 2020-01-10 13:28:18 +00:00
BindGroup.cpp Update BindingInfo to reflect new BindGroupLayoutEntry structure 2020-12-21 20:14:26 +00:00
BindGroup.h Add minimum buffer size validation 2020-06-19 21:39:23 +00:00
BindGroupLayout.cpp Enabled BindGroupLayout deprecation warning and fixed tests it broke. 2021-01-13 22:25:58 +00:00
BindGroupLayout.h Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
BindGroupTracker.h Remove kMaxBindingsPerGroup limit 2020-07-14 22:20:35 +00:00
BindingInfo.cpp Updating BindGroupLayoutEntry interface to match latest spec 2020-12-12 02:09:56 +00:00
BindingInfo.h Update BindingInfo to reflect new BindGroupLayoutEntry structure 2020-12-21 20:14:26 +00:00
BuddyAllocator.cpp Fix two warnings. 2020-04-10 19:04:42 +00:00
BuddyAllocator.h Fix and enable -Wnested-anon-types 2020-04-30 15:58:28 +00:00
BuddyMemoryAllocator.cpp Prevent size overflow for sub-allocation. 2020-06-11 18:58:26 +00:00
BuddyMemoryAllocator.h Add some missing #includes. 2019-10-29 18:40:12 +00:00
Buffer.cpp dawn_native: Use an internal GetQueue that doesn't add a ref 2021-03-29 15:40:55 +00:00
Buffer.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
CMakeLists.txt Allow Dawn to surface Tint internal compiler errors as uncaptured validation errors 2021-03-25 15:37:44 +00:00
CachedObject.cpp Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
CachedObject.h Fix issues with roll into Skia 2020-12-08 16:32:34 +00:00
CommandAllocator.cpp Eagerly destroy CommandBuffer commands after submission 2020-08-13 20:25:39 +00:00
CommandAllocator.h Eagerly destroy CommandBuffer commands after submission 2020-08-13 20:25:39 +00:00
CommandBuffer.cpp API evolution GPUExtent3D.depth -> depthOrArrayLayers (Step 2) 2021-03-22 21:12:36 +00:00
CommandBuffer.h Limit Clear Color Values to 2^24 For Integer Formats 2020-10-01 19:56:49 +00:00
CommandBufferStateTracker.cpp Update RenderPipelineBase to stop depending on deprecated struct types 2021-03-22 22:17:26 +00:00
CommandBufferStateTracker.h No-ops for out of bounds drawIndexed 2021-02-23 16:37:29 +00:00
CommandEncoder.cpp dawn_native: Use an internal GetQueue that doesn't add a ref 2021-03-29 15:40:55 +00:00
CommandEncoder.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
CommandValidation.cpp Validate the texture Aspect enum in ImageCopyTexture 2021-03-24 08:38:32 +00:00
CommandValidation.h Reland "CopyTextureForBrowser: Support color format conversion" 2021-03-23 02:09:37 +00:00
Commands.cpp Query API: Non Precise Occlusion Query 2020-11-18 09:47:52 +00:00
Commands.h Query API: Non-precise occlusion query on Metal 2021-02-02 05:30:50 +00:00
ComputePassEncoder.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
ComputePassEncoder.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
ComputePipeline.cpp Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
ComputePipeline.h Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
CopyTextureForBrowserHelper.cpp dawn_native: Use an internal GetQueue that doesn't add a ref 2021-03-29 15:40:55 +00:00
CopyTextureForBrowserHelper.h Rename Buffer/TextureCopyView to ImageCopyBuffer/Texture. 2021-03-04 18:13:45 +00:00
CreatePipelineAsyncTracker.cpp Fix crash from async callback calling Queue::Submit 2021-03-30 13:06:17 +00:00
CreatePipelineAsyncTracker.h Remove some useless #include files and forward declarations 2021-02-23 01:51:06 +00:00
DawnNative.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Device.cpp Propagate errors from Tick in backend::Queue::SubmitImpl 2021-03-30 10:21:36 +00:00
Device.h Propagate errors from Tick in backend::Queue::SubmitImpl 2021-03-30 10:21:36 +00:00
DynamicUploader.cpp Use typed integers for the ExecutionSerial 2020-09-28 19:35:14 +00:00
DynamicUploader.h Use typed integers for the ExecutionSerial 2020-09-28 19:35:14 +00:00
EncodingContext.cpp Add InjectValidationError to command encoder 2020-11-14 01:24:03 +00:00
EncodingContext.h Add InjectValidationError to command encoder 2020-11-14 01:24:03 +00:00
EnumClassBitmasks.h Track depth/stencil aspects independently 2020-08-06 17:00:29 +00:00
EnumMaskIterator.h EnumMaskIterator: ASSERT when the mask is too big. 2021-01-21 10:11:54 +00:00
Error.cpp Fix AssertAndIgnoreDeviceLossError to handle errors injected by fuzzer 2020-06-16 17:53:38 +00:00
Error.h Fix Vulkan leak if vkMapMemory fails 2021-02-19 18:31:02 +00:00
ErrorData.cpp Separate device lost from internal errors. 2020-04-01 12:07:43 +00:00
ErrorData.h Separate device lost from internal errors. 2020-04-01 12:07:43 +00:00
ErrorInjector.cpp Reland "fuzzing: Add supportsErrorInjection option to DawnWireServerFuzzer" 2020-01-06 19:56:17 +00:00
ErrorInjector.h Reland "fuzzing: Add supportsErrorInjection option to DawnWireServerFuzzer" 2020-01-06 19:56:17 +00:00
ErrorScope.cpp Simplify ErrorScopes 2021-02-19 18:17:22 +00:00
ErrorScope.h Simplify ErrorScopes 2021-02-19 18:17:22 +00:00
Extensions.cpp D3D12: Support per plane views with NV12 textures 2021-02-05 20:11:24 +00:00
Extensions.h D3D12: Support per plane views with NV12 textures 2021-02-05 20:11:24 +00:00
Fence.cpp dawn_native: Use an internal GetQueue that doesn't add a ref 2021-03-29 15:40:55 +00:00
Fence.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Format.cpp Generalize multi-aspect formats 2021-02-16 19:55:09 +00:00
Format.h Generalize multi-aspect formats 2021-02-16 19:55:09 +00:00
Forward.h Query API: QuerySet 2020-06-11 00:34:14 +00:00
Instance.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Instance.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
IntegerTypes.h Use typed integers for the ExecutionSerial 2020-09-28 19:35:14 +00:00
InternalPipelineStore.h Reland "CopyTextureForBrowser: Support color format conversion" 2021-03-23 02:09:37 +00:00
ObjectBase.cpp Make RefCounted derived objects have private destructors 2020-04-06 18:20:02 +00:00
ObjectBase.h Move and improve RefCounted 2020-04-20 17:36:22 +00:00
ObjectContentHasher.cpp Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
ObjectContentHasher.h Rename STRIDE_UNDEFINED to COPY_STRIDE_UNDEFINED 2020-12-16 07:53:30 +00:00
PassResourceUsage.h Do not track global texture usage in PassResourceUsage. 2021-01-22 19:53:46 +00:00
PassResourceUsageTracker.cpp Do not track global texture usage in PassResourceUsage. 2021-01-22 19:53:46 +00:00
PassResourceUsageTracker.h Add validation code for texture subresource usage tracking 2020-05-04 17:10:49 +00:00
PerStage.cpp Make dawn_native use the webgpu.h header 2019-10-23 11:57:41 +00:00
PerStage.h Make dawn_native use the webgpu.h header 2019-10-23 11:57:41 +00:00
PersistentCache.cpp Rename STRIDE_UNDEFINED to COPY_STRIDE_UNDEFINED 2020-12-16 07:53:30 +00:00
PersistentCache.h Rename STRIDE_UNDEFINED to COPY_STRIDE_UNDEFINED 2020-12-16 07:53:30 +00:00
Pipeline.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Pipeline.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
PipelineLayout.cpp GCC: fix name clash cause of multiple BindingInfo definitions 2021-01-29 14:42:54 +00:00
PipelineLayout.h Pipeline caching: refactor object hashing 2020-12-03 18:42:13 +00:00
PooledResourceMemoryAllocator.cpp Rename STRIDE_UNDEFINED to COPY_STRIDE_UNDEFINED 2020-12-16 07:53:30 +00:00
PooledResourceMemoryAllocator.h Pool sub-allocated resource heaps. 2020-08-17 17:47:15 +00:00
ProgrammablePassEncoder.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
ProgrammablePassEncoder.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
QueryHelper.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
QueryHelper.h Remove some useless #include files and forward declarations 2021-02-23 01:51:06 +00:00
QuerySet.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
QuerySet.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Queue.cpp Fix crash from async callback calling Queue::Submit 2021-03-30 13:06:17 +00:00
Queue.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderBundle.cpp dawn_native: Do attachment state validation at encoding time. 2021-01-27 17:20:16 +00:00
RenderBundle.h Remove some useless #include files and forward declarations 2021-02-23 01:51:06 +00:00
RenderBundleEncoder.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderBundleEncoder.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderEncoderBase.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderEncoderBase.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderPassEncoder.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderPassEncoder.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
RenderPipeline.cpp Update RenderPipelineBase to stop depending on deprecated struct types 2021-03-22 22:17:26 +00:00
RenderPipeline.h Update RenderPipelineBase to stop depending on deprecated struct types 2021-03-22 22:17:26 +00:00
ResourceHeap.h Autoformat everything except tests/examples 2020-07-10 18:19:38 +00:00
ResourceHeapAllocator.h Add another missing #include. 2019-10-30 00:19:43 +00:00
ResourceMemoryAllocation.cpp Autoformat everything except tests/examples 2020-07-10 18:19:38 +00:00
ResourceMemoryAllocation.h Residency 2: Create a d3d12::Heap During Direct Allocations 2020-03-09 15:53:19 +00:00
RingBufferAllocator.cpp Use typed integers for the ExecutionSerial 2020-09-28 19:35:14 +00:00
RingBufferAllocator.h Use typed integers for the ExecutionSerial 2020-09-28 19:35:14 +00:00
Sampler.cpp Invalidate sampler with maxAnisotropy = 0 2020-12-30 19:47:33 +00:00
Sampler.h Add maxAnisotropy to GPUSamplerDescriptor 2020-12-24 03:11:17 +00:00
ShaderModule.cpp Allow Dawn to surface Tint internal compiler errors as uncaptured validation errors 2021-03-25 15:37:44 +00:00
ShaderModule.h Use Tint/WGSL unconditionally 2021-03-22 21:23:36 +00:00
SpirvUtils.cpp Update BindingInfo to reflect new BindGroupLayoutEntry structure 2020-12-21 20:14:26 +00:00
SpirvUtils.h Update BindingInfo to reflect new BindGroupLayoutEntry structure 2020-12-21 20:14:26 +00:00
StagingBuffer.cpp Autoformat everything except tests/examples 2020-07-10 18:19:38 +00:00
StagingBuffer.h Autoformat everything except tests/examples 2020-07-10 18:19:38 +00:00
Subresource.cpp D3D12: Support per plane views with NV12 textures 2021-02-05 20:11:24 +00:00
Subresource.h D3D12: Support per plane views with NV12 textures 2021-02-05 20:11:24 +00:00
SubresourceStorage.h Use SubresourceStorage to track per-subresource state. 2021-01-21 11:07:44 +00:00
Surface.cpp Make Surface reference its attached SwapChain 2020-10-27 11:31:26 +00:00
Surface.h Make Surface reference its attached SwapChain 2020-10-27 11:31:26 +00:00
Surface_metal.mm Introduce wgpu::Surface and implement it for HWND, X11 and Metal 2020-01-15 13:14:12 +00:00
SwapChain.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
SwapChain.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Texture.cpp dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
Texture.h dawn_native: Prefix all API methods with API 2021-03-29 14:02:05 +00:00
TintUtils.cpp Allow Dawn to surface Tint internal compiler errors as uncaptured validation errors 2021-03-25 15:37:44 +00:00
TintUtils.h Allow Dawn to surface Tint internal compiler errors as uncaptured validation errors 2021-03-25 15:37:44 +00:00
ToBackend.h Query API: QuerySet 2020-06-11 00:34:14 +00:00
Toggles.cpp D3D12: Add workaround for T2T copy issue on Intel GPUs 2021-03-11 19:34:50 +00:00
Toggles.h D3D12: Add workaround for T2T copy issue on Intel GPUs 2021-03-11 19:34:50 +00:00
XlibXcbFunctions.cpp Reland "Vulkan: Fallback to XCB for Xlib surfaces" 2021-02-11 08:26:38 +00:00
XlibXcbFunctions.h Reland "Vulkan: Fallback to XCB for Xlib surfaces" 2021-02-11 08:26:38 +00:00
dawn_platform.h Vulkan: Fix texture barriers for readonly storage. 2021-01-20 19:39:28 +00:00