[Mesa-dev] [PATCH 00/36] i965/blorp: Use ISL internally

Jason Ekstrand jason at jlekstrand.net
Thu Jun 30 00:37:19 UTC 2016


This is one more series on the way to making blorp generic enough to be
shared between the two drivers.

The way blorp works right now is that it takes a pair of miptrees and
records a set of tweaks to those miptrees in a side data structure.  At the
last moment, when it goes to emit RENDER_SURFACE_STATE, it applies those
changes.  This series changes things so that it stars with an isl_surf and
then modifies it as needed; by RENDER_SURFACE_STATE emit time, the isl_surf
contains exactly what you want.

This series also changes blorp to use base array slice and base miplevel
wherever possible.  Previously, on everything other than gen8+ textures,
blorp always byte and tile x/y offsets to get at the particular miplevel
and array slice.  This series makes it use offset and other surface hacks
as a last resort only when needed.  This actually ends up fixing a few
tests on gen7 and prevents us from doing illegal things on IVB.

While I like the end result (and will like it more once I get it
generalized further), I don't like the patch series.  A lot of stuff seems
out-of-order and hard to explain because it's a fairly fundamental change.
However, I do believe that it's in more-or-less the right order mostly
regression-free (no, I haven't run Jenkins on every commit).

This series is available here:

https://cgit.freedesktop.org/~jekstrand/mesa/log/?h=review/blorp-isl

Jason Ekstrand (36):
  isl: Fix the parameter names for get_intratile_offset
  i965/miptree: Remove the stencil_as_y_tiled parameter from
    get_tile_masks
  isl/state: Use a valid alignment for 1-D textures
  i965: Add an isl_device to the brw_context
  i965/blorp/clear: Initialize surface info after allocating an MCS
  i965/blorp: Create the isl_surf up-front
  i965/blorp: Remove compute_tile_offsets
  i965/blorp: Get rid of brw_blorp_surface_info::map_stencil_as_y_tiled
  i965/blorp: Make sample count asserts a bit more lazy
  i965/blorp: Get rid of brw_blorp_surface_info::num_samples
  i965/blorp: Use the ISL aux_layout for deciding whether to do an MCS
    fetch
  i965/blorp: Use isl_msaa_layout instead of intel_msaa_layout
  i965/blorp: Get rid of brw_blorp_surface_info::array_layout
  i965/blorp: Refactor interleaved multisample destination handling
  i965/blorp: Move intratile offset calculations out of surface state
    setup
  i965/blorp: Add an isl_view to blorp_surface_info
  isl: Fix get_image_offset_sa_gen4_2d for multisample surfaces
  isl: Add functions for computing surface offsets in samples
  i965/blorp: Use ISL to compute image offsets
  i965/blorp: Move surface offset calculations into a helper
  i965/blorp: Get rid of brw_blorp_surface_info::width/height
  i965/blorp: Use the isl_view from the blorp_surface_info
  isl: Use logical width/height for computing physical slice0 extent
  i965/miptree: Fill out the isl_surf::usage field
  i965/blorp: Map 1-D render targets with DIM_LAYOUT_GEN4_2D as 2D on
    gen9
  i965/blorp: Rework hiz rect alignment calculations
  i965/blorp: Pass the Z component into all texture operations
  i965/blorp: Add a z_offset field to blorp_surface_info
  i965/blorp: Only do offset hacks for fake W-tiling and IMS
  isl: Add asserts for gen8+ X/YOffset rules
  i965/blorp: Use the generic surface state path for gen8 textures
  i965/blorp: Simplify depth buffer state setup a bit
  i965/blorp: Remove unused fields from blorp_surface_info
  isl: Add enum conversions that assert on invalid enums
  isl: Add a #define for DEV_IS_BAYTRAIL
  isl/state: Add an assertion for IVB multisample array textures

 src/intel/isl/isl.c                              |  76 ++--
 src/intel/isl/isl.h                              |  58 ++-
 src/intel/isl/isl_surface_state.c                | 149 ++++---
 src/mesa/drivers/dri/i965/brw_blorp.c            | 297 +++++++-------
 src/mesa/drivers/dri/i965/brw_blorp.h            | 112 +-----
 src/mesa/drivers/dri/i965/brw_blorp_blit.cpp     | 469 +++++++++++++----------
 src/mesa/drivers/dri/i965/brw_blorp_clear.cpp    |  12 +-
 src/mesa/drivers/dri/i965/brw_context.c          |   2 +
 src/mesa/drivers/dri/i965/brw_context.h          |   4 +
 src/mesa/drivers/dri/i965/brw_misc_state.c       |   6 +-
 src/mesa/drivers/dri/i965/brw_state.h            |   8 -
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |  14 +-
 src/mesa/drivers/dri/i965/gen6_blorp.c           |  44 +--
 src/mesa/drivers/dri/i965/gen7_blorp.c           |  48 +--
 src/mesa/drivers/dri/i965/gen8_blorp.c           |  73 +---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c    |  30 +-
 src/mesa/drivers/dri/i965/intel_mipmap_tree.h    |   1 -
 17 files changed, 704 insertions(+), 699 deletions(-)

-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list