[Mesa-dev] [PATCH 28/36] i965/blorp: Add a z_offset field to blorp_surface_info
Jason Ekstrand
jason at jlekstrand.net
Thu Jun 30 00:37:47 UTC 2016
The layer field is in terms of physical layers which isn't quite what the
sampler will want for 2-D MS array textures.
---
src/mesa/drivers/dri/i965/brw_blorp.c | 9 +++++++++
src/mesa/drivers/dri/i965/brw_blorp.h | 3 +++
src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 10 +---------
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c
index a6787ec..4103306 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.c
+++ b/src/mesa/drivers/dri/i965/brw_blorp.c
@@ -203,6 +203,15 @@ brw_blorp_surface_info_init(struct brw_context *brw,
},
};
+ if (brw->gen >= 8 && !is_render_target && info->surf.dim == ISL_SURF_DIM_3D) {
+ /* On gen8+ we use actual 3-D textures so we need to pass the layer
+ * through to the sampler.
+ */
+ info->z_offset = layer / layer_multiplier;
+ } else {
+ info->z_offset = 0;
+ }
+
info->level = level;
info->layer = layer;
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
index aea8456..3beb10e 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -78,6 +78,9 @@ struct brw_blorp_surface_info
struct isl_view view;
+ /* Z offset into a 3-D texture or slice of a 2-D array texture. */
+ uint32_t z_offset;
+
/**
* The miplevel to use.
*/
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index c216300..7b2dd53 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -1775,15 +1775,7 @@ brw_blorp_blit_miptrees(struct brw_context *brw,
brw_blorp_setup_coord_transform(¶ms.wm_push_consts.y_transform,
src_y0, src_y1, dst_y0, dst_y1, mirror_y);
- if (brw->gen >= 8 && params.src.mt->target == GL_TEXTURE_3D) {
- /* On gen8+ we use actual 3-D textures so we need to pass the layer
- * through to the sampler.
- */
- params.wm_push_consts.src_z = params.src.layer;
- } else {
- /* On gen7 and earlier, we fake everything with 2-D textures */
- params.wm_push_consts.src_z = 0;
- }
+ params.wm_push_consts.src_z = params.src.z_offset;
if (brw->gen > 6 && dst_mt->msaa_layout == INTEL_MSAA_LAYOUT_IMS) {
/* We must expand the rectangle we send through the rendering pipeline,
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list