[Mesa-dev] [PATCH 19.5/64] isl/state: Don't set RenderTargetViewExtent for texture surfaces
Jason Ekstrand
jason at jlekstrand.net
Sat Jun 18 20:03:42 UTC 2016
The docs specify that this only matters for render targets and surfaces
used with typed dataport messages. On some platforms (gen4-6) the Depth
field has more bits than RenderTargetViewExtent so we can have textures
with more levels than we can render to.
Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Cc: Chad Versace <chad.versace at intel.com>
---
src/intel/isl/isl_surface_state.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index 67ffc05..c654a99 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -262,13 +262,17 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
* For Render Target and Typed Dataport 1D and 2D Surfaces:
* This field must be set to the same value as the Depth field.
*/
- s.RenderTargetViewExtent = s.Depth;
+ if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
+ ISL_SURF_USAGE_STORAGE_BIT))
+ s.RenderTargetViewExtent = s.Depth;
break;
case SURFTYPE_CUBE:
s.MinimumArrayElement = info->view->base_array_layer;
/* Same as SURFTYPE_2D, but divided by 6 */
s.Depth = info->view->array_len / 6 - 1;
- s.RenderTargetViewExtent = s.Depth;
+ if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
+ ISL_SURF_USAGE_STORAGE_BIT))
+ s.RenderTargetViewExtent = s.Depth;
break;
case SURFTYPE_3D:
s.MinimumArrayElement = info->view->base_array_layer;
@@ -286,8 +290,11 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
* indicates the extent of the accessible 'R' coordinates minus 1 on
* the LOD currently being rendered to.
*/
- s.RenderTargetViewExtent = isl_minify(info->surf->logical_level0_px.depth,
- info->view->base_level) - 1;
+ if (info->view->usage & (ISL_SURF_USAGE_RENDER_TARGET_BIT |
+ ISL_SURF_USAGE_STORAGE_BIT)) {
+ s.RenderTargetViewExtent = isl_minify(info->surf->logical_level0_px.depth,
+ info->view->base_level) - 1;
+ }
break;
default:
unreachable("bad SurfaceType");
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list