Refactors related to BO layouts

Submitted by Tomeu Vizoso on March 10, 2019, 6:50 a.m.

Details

Reviewer None
Submitted March 10, 2019, 6:50 a.m.
Last Updated March 11, 2019, 12:40 p.m.
Revision 1

Cover Letter(s)

Revision 1
      Midgard supports (at least) 3 broad classes of resource layouts:

* Linear: slow, but universally supported, uncompressed
* Tiled: good for cache efficiency, uncompressed
* Arm Framebuffer Compression (AFBC): tiled and compressed

We can't render into tiled buffers (for technical reasons), and we can't
manipulate AFBC from software (for practical reasons). But we can do a
little better at formalizing the distinctions between these formats and
implementing some edge cases. For instance, this series fixes support
for linear FBOs (previously, only AFBC was supported).

More work is needed to let layouts switch seemlessly to handle edge
cases, but this series is already a nontrivial improvement (and it *is*
getting long).

Alyssa Rosenzweig (12):
  panfrost: Cleanup needless if in create_bo
  panfrost: Combine has_afbc/tiled in layout enum
  panfrost: Delay color buffer setup
  panfrost: Cleanup zsbuf emit in fragment job
  panfrost: Determine framebuffer format bits late
  panfrost: Refactor layout selection (BO creation)
  panfrost: Allocate dedicated slab for linear BOs
  panfrost: Support linear depth textures
  panfrost: Support linear depth buffers
  panfrost: Document "depth buffer writeback" bit
  panfrost: Identify fragment_extra flags
  panfrost: Make hacks a little more obvious

 .../drivers/panfrost/include/panfrost-job.h   |  16 +-
 src/gallium/drivers/panfrost/pan_context.c    | 267 +++++++++++-------
 src/gallium/drivers/panfrost/pan_resource.c   | 154 ++++++----
 src/gallium/drivers/panfrost/pan_resource.h   |  20 +-
 .../drivers/panfrost/pandecode/decode.c       |  18 +-
 5 files changed, 311 insertions(+), 164 deletions(-)
    

Revisions