[Mesa-dev] i965: Use ISL for auxiliary buffer layout
Topi Pohjolainen
topi.pohjolainen at gmail.com
Mon Jan 16 09:13:35 UTC 2017
This series is a step towards using ISL instead of current
intel_mipnap_tree/brw_tex_layout logic in i965. First 11 patches
simplify the workspace for the rest and more functional changes.
Next seven patches introduce simple on-demand calculators for
stencil and hiz offsets on gen6. On gen6 hardware doesn't support
mipmaps for stencil or hiz. Driver works around this by offsetting
hiz/stencil surfaces to desired level-of-detail. Current logic
relies on pre-computed offset table which is replaced by helpers
functions calculating the offsets when needed. This drops dependency
to intel_mipnap_tree.
Patch 22 prepares ISL to provide large enough auxiliary size for
MCS on gen7 and on gen8. I started seeing intermittent failures (once
in 10 subsequent runs) with
"texelFetch fs sampler2DMSArray 4 98x1x9-98x129x9 -auto -fbo" with
IVB, HSW and BDW, but not with SKL. After some debugging I tracked
this down to SKL using vertical alignment of four requiring 4608
bytes (and driver allocated two pages). Earlier gens used vertical
alignment of one and only allocated one page. More details in the
patch.
I included patch 21 for consistency sake as to me it seems we are
missing something of that sort.
Patch 23 starts using ISL for MCS and the rest for HIZ.
I tried to make individual steps as small as possible adding
temporary asserts checking that newly added calculations matched
the current.
Topi Pohjolainen (27):
i965/meta: Remove unused brw_get_rb_for_slice()
i965/miptree: Remove redundant check for null texture
i965: Remove check for hiz on earlier gens than SNB
i965/gen6: Remove check for stencil format
i965: Replace open coded with intel_miptree_get_image_offset()
i965/blorp/gen6: Simplify hiz surface setup
i965/gen6: Simplify hiz surface setup
i965/blorp/gen6: Remove dead code in hiz setup
i965/gen6: Remove dead code in hiz surface setup
i965/blorp/gen6: Drop unnecessary stencil/hiz surf dimension adjust
i965/hiz/gen6: Stop setting false qpitch
i965/gen6: Calculate stencil offset on demand
i965/gen6: Calculate hiz offset on demand
i965/blorp/gen6: Use on-demand stencil/hiz offset resolvers
i965/gen6: Drop miptrees in depth/stencil offset resolvers
i965/blorp/gen6: Set aux pitch directly
i965/gen6/hiz: Add direct buffer size resolver
i965/gen6: Allocate hiz directly without miptree
i965/miptree: Refactor aux surface allocation
i965/miptree: Refactor ISL aux usage resolver
intel/isl/gen7: Add CCS alignment restrictions
intel/isl: Apply render target alignment constraints for MCS
i965/miptree: Use ISL for MCS layouts
i965/miptree: Drop MIPTREE_LAYOUT_ACCELERATED_UPLOAD in mcs init
i965/miptree/gen7+: Use ISL for HIZ layouts
i965/blorp: Use hiz surface instead of creating copy
i965: Use stored hiz surface instead of creating copy
src/intel/isl/isl_gen7.c | 55 +++
src/intel/isl/isl_gen8.c | 16 +
src/intel/isl/isl_gen9.c | 16 +
src/mesa/drivers/dri/i965/brw_blorp.c | 108 ++---
src/mesa/drivers/dri/i965/brw_context.h | 6 -
src/mesa/drivers/dri/i965/brw_meta_util.c | 44 --
src/mesa/drivers/dri/i965/brw_meta_util.h | 5 -
src/mesa/drivers/dri/i965/brw_misc_state.c | 23 +-
src/mesa/drivers/dri/i965/brw_tex_layout.c | 131 ++++++
src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 13 +-
src/mesa/drivers/dri/i965/gen6_depth_state.c | 45 +-
src/mesa/drivers/dri/i965/gen7_misc_state.c | 5 +-
src/mesa/drivers/dri/i965/gen8_depth_state.c | 6 +-
src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 548 ++++++-----------------
src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 45 +-
src/mesa/drivers/dri/i965/intel_pixel_read.c | 16 +-
16 files changed, 472 insertions(+), 610 deletions(-)
--
2.5.5
More information about the mesa-dev
mailing list