diff options
author | Eric Anholt <eric@anholt.net> | 2015-07-28 11:00:58 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-07-28 20:02:16 -0700 |
commit | 2e04492a142102823dfb8fc8599cfd417b84c97a (patch) | |
tree | dcf53fe22badf79bf0b203284e71a626a545a438 /src/gallium/drivers/vc4/vc4_resource.c | |
parent | aefec4fa226d06e4b414170739be18dd24d3eed7 (diff) | |
download | external_mesa3d-2e04492a142102823dfb8fc8599cfd417b84c97a.zip external_mesa3d-2e04492a142102823dfb8fc8599cfd417b84c97a.tar.gz external_mesa3d-2e04492a142102823dfb8fc8599cfd417b84c97a.tar.bz2 |
vc4: Skip re-emitting the shader_rec if it's unchanged.
It's a bunch of work for us to emit it (and its uniforms), more work for
the kernel to validate it, and additional work for the CLE to read
it. Improves es2gears framerate by about 50%.
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_resource.c')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_resource.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_resource.c b/src/gallium/drivers/vc4/vc4_resource.c index cab7640..5d5166f 100644 --- a/src/gallium/drivers/vc4/vc4_resource.c +++ b/src/gallium/drivers/vc4/vc4_resource.c @@ -102,6 +102,12 @@ vc4_resource_transfer_map(struct pipe_context *pctx, if (usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE) { vc4_resource_bo_alloc(rsc); + + /* If it might be bound as one of our vertex buffers, make + * sure we re-emit vertex buffer state. + */ + if (prsc->bind & PIPE_BIND_VERTEX_BUFFER) + vc4->dirty |= VC4_DIRTY_VTXBUF; } else if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) { if (vc4_cl_references_bo(pctx, rsc->bo)) { if ((usage & PIPE_TRANSFER_DISCARD_RANGE) && @@ -110,6 +116,8 @@ vc4_resource_transfer_map(struct pipe_context *pctx, prsc->height0 == box->height && prsc->depth0 == box->depth) { vc4_resource_bo_alloc(rsc); + if (prsc->bind & PIPE_BIND_VERTEX_BUFFER) + vc4->dirty |= VC4_DIRTY_VTXBUF; } else { vc4_flush(pctx); } |