[PATCH v2 0/5] etnaviv: Add sampler TS support

Wladimir J. van der Laan laanwj at gmail.com
Tue Nov 14 09:21:18 UTC 2017


Sampler TS is an hardware optimization that can be used when rendering
to textures. After rendering to a resource with TS enabled, the
texture unit can use this to bypass lookups to empty tiles. This also
means a resolve-in-place can be avoided to flush the TS.

This patch series adds support for sampler TS on hardware that supports
this. It also contains an optimization when not using sampler TS, as
resolve-in-place will now be skipped if a resource has no (valid) TS.

For example the 'shadow' test in on i.mx8qp glmark2 increases in performance
with:

before: [shadow] <default>: FPS: 130 FrameTime: 7.692 ms
after:  [shadow] <default>: FPS: 244 FrameTime: 4.098 ms

Changes since previous version:

- Add a new column to the formats table for the TS format (for all texturable
  formats) instead of a trick based on RS format and name, as that didn't cover
  depth formats correctly.

- Roll the call to etna_resource_has_valid_ts into etna_resource_needs_flush,
  so that resolve-to-self and sampler TS is only used when the resource has a
  valid TS in the first place.

- Add a patch that makes sure that the TS cache is flushed to memory before
  programming the TS with new state (so before rendering to a new surface
  starts). This should prevent missing tile artifacts.

- Remove unused added arguments from etna_update_sampler_source /
  etna_configure_sampler_ts / etna_can_use_sampler_ts

Wladimir J. van der Laan (5):
  etnaviv: rnndb update
  etnaviv: Check that resource has a valid TS in
    etna_resource_needs_flush
  etnaviv: Add TS_SAMPLER formats to etnaviv_format
  etnaviv: Flush TS cache before changing TS configuration
  etnaviv: Add sampler TS support

 src/gallium/drivers/etnaviv/etnaviv_emit.c      |  31 +++++
 src/gallium/drivers/etnaviv/etnaviv_format.c    | 162 +++++++++++++-----------
 src/gallium/drivers/etnaviv/etnaviv_format.h    |   3 +
 src/gallium/drivers/etnaviv/etnaviv_resource.c  |  13 ++
 src/gallium/drivers/etnaviv/etnaviv_resource.h  |   6 +-
 src/gallium/drivers/etnaviv/etnaviv_texture.c   |  74 ++++++++++-
 src/gallium/drivers/etnaviv/etnaviv_texture.h   |   5 +
 src/gallium/drivers/etnaviv/hw/common.xml.h     |   2 +-
 src/gallium/drivers/etnaviv/hw/common_3d.xml.h  |   2 +-
 src/gallium/drivers/etnaviv/hw/state.xml.h      |   4 +-
 src/gallium/drivers/etnaviv/hw/state_3d.xml.h   |  14 +-
 src/gallium/drivers/etnaviv/hw/state_blt.xml.h  |   4 +-
 src/gallium/drivers/etnaviv/hw/texdesc_3d.xml.h |   3 +-
 13 files changed, 233 insertions(+), 90 deletions(-)

-- 
2.7.4



More information about the etnaviv mailing list