[Mesa-dev] [PATCH v2 24/32] intel/isl: Add initial data-structure support for miptails
Jason Ekstrand
jason at jlekstrand.net
Fri Oct 12 18:46:54 UTC 2018
This commit just adds a miptail start field to isl_surf and wires it up
in the RENDER_SURFACE_STATE and 3DSTATE_DEPTH code. We also add a
minimum miptail LOD so that client drivers have a knob to control the
miptails a bit.
---
src/intel/isl/isl.c | 1 +
src/intel/isl/isl.h | 11 +++++++++++
src/intel/isl/isl_emit_depth_stencil.c | 2 +-
src/intel/isl/isl_surface_state.c | 5 +----
4 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index 3d0741bc207..4a8380ad540 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -1653,6 +1653,7 @@ isl_surf_init_s(const struct isl_device *dev,
.row_pitch_B = row_pitch_B,
.array_pitch_el_rows = array_pitch_el_rows,
.array_pitch_span = array_pitch_span,
+ .miptail_start_level = 15,
.usage = info->usage,
};
diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
index 213f5b408e2..4fb212e33d5 100644
--- a/src/intel/isl/isl.h
+++ b/src/intel/isl/isl.h
@@ -1145,6 +1145,9 @@ struct isl_surf_init_info {
/** Lower bound for isl_surf::alignment, in bytes. */
uint32_t min_alignment_B;
+ /** Lower bound for where to start the miptail */
+ uint32_t min_miptail_start_level;
+
/**
* Exact value for isl_surf::row_pitch. Ignored if zero. isl_surf_init()
* will fail if this is misaligned or out of bounds.
@@ -1219,6 +1222,14 @@ struct isl_surf {
enum isl_array_pitch_span array_pitch_span;
+ /**
+ * Level at which the miptail starts.
+ *
+ * This value is inclusive in the sense that the miptail contains this
+ * level.
+ */
+ uint32_t miptail_start_level;
+
/** Copy of isl_surf_init_info::usage. */
isl_surf_usage_flags_t usage;
};
diff --git a/src/intel/isl/isl_emit_depth_stencil.c b/src/intel/isl/isl_emit_depth_stencil.c
index b07da781be8..c1a40ee20f0 100644
--- a/src/intel/isl/isl_emit_depth_stencil.c
+++ b/src/intel/isl/isl_emit_depth_stencil.c
@@ -115,7 +115,7 @@ isl_genX(emit_depth_stencil_hiz_s)(const struct isl_device *dev, void *batch,
/* We don't use miptails yet. The PRM recommends that you set "Mip Tail
* Start LOD" to 15 to prevent the hardware from trying to use them.
*/
- db.MipTailStartLOD = 15;
+ db.MipTailStartLOD = info->depth_surf->miptail_start_level;
#elif GEN_GEN >= 7
/* Gen7+ depth is always Y-tiled. We don't even have a bit for it */
#else
diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index abd4767acd7..b3e51d6f5e0 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -423,10 +423,7 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
}
#if GEN_GEN >= 9
- /* We don't use miptails yet. The PRM recommends that you set "Mip Tail
- * Start LOD" to 15 to prevent the hardware from trying to use them.
- */
- s.MipTailStartLOD = 15;
+ s.MipTailStartLOD = info->surf->miptail_start_level;
#endif
#if GEN_GEN >= 6
--
2.19.1
More information about the mesa-dev
mailing list