freedreno/drm: Reference count submits

To merge submits, we'll need drm to internally hold an extra reference
to the submit.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10444>
This commit is contained in:
Rob Clark
2021-04-17 11:23:27 -07:00
committed by Marge Bot
parent 9cb264f966
commit d531c8d22a
3 changed files with 18 additions and 2 deletions
+1
View File
@@ -194,6 +194,7 @@ struct fd_submit_funcs {
};
struct fd_submit {
int32_t refcnt;
struct fd_pipe *pipe;
const struct fd_submit_funcs *funcs;
+15 -2
View File
@@ -33,15 +33,28 @@
struct fd_submit *
fd_submit_new(struct fd_pipe *pipe)
{
return pipe->funcs->submit_new(pipe);
struct fd_submit *submit = pipe->funcs->submit_new(pipe);
submit->refcnt = 1;
return submit;
}
void
fd_submit_del(struct fd_submit *submit)
{
if (!p_atomic_dec_zero(&submit->refcnt))
return;
if (submit->primary)
fd_ringbuffer_del(submit->primary);
return submit->funcs->destroy(submit);
submit->funcs->destroy(submit);
}
struct fd_submit *
fd_submit_ref(struct fd_submit *submit)
{
p_atomic_inc(&submit->refcnt);
return submit;
}
int
+2
View File
@@ -85,6 +85,8 @@ struct fd_submit *fd_submit_new(struct fd_pipe *pipe);
*/
void fd_submit_del(struct fd_submit *submit);
struct fd_submit * fd_submit_ref(struct fd_submit *submit);
/* Allocate a new rb from the submit. */
struct fd_ringbuffer *fd_submit_new_ringbuffer(struct fd_submit *submit,
uint32_t size,