diff options
author | Russell King <rmk@armlinux.org.uk> | 2017-02-12 17:05:43 +0000 |
---|---|---|
committer | Russell King <rmk@armlinux.org.uk> | 2017-02-12 23:22:38 +0000 |
commit | a7fbdc5e1a841781863738426f611dfa45ada168 (patch) | |
tree | 8366e8ee144155c2d365ae068fd184245c78e7e5 | |
parent | 4454535cf739d0f13eebe7f48744fb3d881dcf34 (diff) |
etnaviv: add etnaviv_pixmap reference counting to batches
Add etnaviv_pixmap reference counting to batches to prevent them being
freed while they are on the batch or fence lists.
Signed-off-by: Russell King <rmk@armlinux.org.uk>
-rw-r--r-- | etnaviv/etnaviv.c | 1 | ||||
-rw-r--r-- | etnaviv/etnaviv_accel.c | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/etnaviv/etnaviv.c b/etnaviv/etnaviv.c index 07ec439..1c96a1e 100644 --- a/etnaviv/etnaviv.c +++ b/etnaviv/etnaviv.c @@ -99,6 +99,7 @@ void etnaviv_retire_vpix(struct etnaviv *etnaviv, struct etnaviv_pixmap *vpix) { xorg_list_del(&vpix->batch_node); vpix->batch_state = B_NONE; + etnaviv_put_vpix(etnaviv, vpix); } void etnaviv_finish_fences(struct etnaviv *etnaviv, uint32_t fence) diff --git a/etnaviv/etnaviv_accel.c b/etnaviv/etnaviv_accel.c index 7177d21..3508cc7 100644 --- a/etnaviv/etnaviv_accel.c +++ b/etnaviv/etnaviv_accel.c @@ -77,6 +77,8 @@ void etnaviv_batch_wait_commit(struct etnaviv *etnaviv, static void etnaviv_batch_add(struct etnaviv *etnaviv, struct etnaviv_pixmap *vPix) { + if (vPix->batch_state == B_NONE) + vPix->refcnt++; switch (vPix->batch_state) { case B_PENDING: break; |