summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@armlinux.org.uk>2017-02-12 17:05:43 +0000
committerRussell King <rmk@armlinux.org.uk>2017-02-12 23:22:38 +0000
commita7fbdc5e1a841781863738426f611dfa45ada168 (patch)
tree8366e8ee144155c2d365ae068fd184245c78e7e5
parent4454535cf739d0f13eebe7f48744fb3d881dcf34 (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.c1
-rw-r--r--etnaviv/etnaviv_accel.c2
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;