mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 07:00:11 +01:00
aux/trace: move fence_server calls outside the locked area
Multiple contexts can use those causing deadlocks if e.g. fence_get_fd
gets called before fence_server_signal on another thread on the same
pipe_fence_handle.
Cc: mesa-stable
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36819>
(cherry picked from commit d9c3bbb08c)
This commit is contained in:
parent
ca5259ec32
commit
7eab15d9c8
3 changed files with 6 additions and 9 deletions
|
|
@ -1754,7 +1754,7 @@
|
|||
"description": "aux/trace: move fence_server calls outside the locked area",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -1659,13 +1659,13 @@ trace_context_fence_server_sync(struct pipe_context *_pipe,
|
|||
struct trace_context *tr_ctx = trace_context(_pipe);
|
||||
struct pipe_context *pipe = tr_ctx->pipe;
|
||||
|
||||
pipe->fence_server_sync(pipe, fence);
|
||||
|
||||
trace_dump_call_begin("pipe_context", "fence_server_sync");
|
||||
|
||||
trace_dump_arg(ptr, pipe);
|
||||
trace_dump_arg(ptr, fence);
|
||||
|
||||
pipe->fence_server_sync(pipe, fence);
|
||||
|
||||
trace_dump_call_end();
|
||||
}
|
||||
|
||||
|
|
@ -1677,13 +1677,13 @@ trace_context_fence_server_signal(struct pipe_context *_pipe,
|
|||
struct trace_context *tr_ctx = trace_context(_pipe);
|
||||
struct pipe_context *pipe = tr_ctx->pipe;
|
||||
|
||||
pipe->fence_server_signal(pipe, fence);
|
||||
|
||||
trace_dump_call_begin("pipe_context", "fence_server_signal");
|
||||
|
||||
trace_dump_arg(ptr, pipe);
|
||||
trace_dump_arg(ptr, fence);
|
||||
|
||||
pipe->fence_server_signal(pipe, fence);
|
||||
|
||||
trace_dump_call_end();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -949,15 +949,12 @@ trace_screen_fence_get_fd(struct pipe_screen *_screen,
|
|||
{
|
||||
struct trace_screen *tr_scr = trace_screen(_screen);
|
||||
struct pipe_screen *screen = tr_scr->screen;
|
||||
int result;
|
||||
int result = screen->fence_get_fd(screen, fence);
|
||||
|
||||
trace_dump_call_begin("pipe_screen", "fence_get_fd");
|
||||
|
||||
trace_dump_arg(ptr, screen);
|
||||
trace_dump_arg(ptr, fence);
|
||||
|
||||
result = screen->fence_get_fd(screen, fence);
|
||||
|
||||
trace_dump_ret(int, result);
|
||||
|
||||
trace_dump_call_end();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue