freedreno: shadow textures if possible to avoid stall/flush
authorRob Clark <robdclark@gmail.com>
Wed, 29 Jun 2016 17:51:26 +0000 (13:51 -0400)
committerRob Clark <robdclark@gmail.com>
Sat, 30 Jul 2016 13:23:42 +0000 (09:23 -0400)
commit7105774babc4d23623c3547cd19122a55c1090db
tree31d72e3f9f7d8b3dcf9c34225ae9c468443720f3
parentdcde4cd114e906f5c4372dbb6758026c9222cd2a
freedreno: shadow textures if possible to avoid stall/flush

To make batch re-ordering useful, we need to be able to create shadow
resources to avoid a flush/stall in transfer_map().  For example,
uploading new texture contents or updating a UBO mid-batch.  In these
cases, we want to clone the buffer, and update the new buffer, leaving
the old buffer (whose reference is held by cmdstream) as a shadow.

This is done by blitting the remaining other levels (and whatever part
of current level that is not discarded) from the old/shadow buffer to
the new one.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/freedreno_context.h
src/gallium/drivers/freedreno/freedreno_resource.c
src/gallium/drivers/freedreno/freedreno_util.h