[Mesa-dev] [PATCH 14/22] i965/gen6: Configure w-tiled surfaces as y-tiled

Topi Pohjolainen topi.pohjolainen at intel.com
Mon Jun 9 00:45:48 PDT 2014


Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index d00a65d..30db9f9 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -315,6 +315,7 @@ brw_update_texture_surface(struct gl_context *ctx,
    struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current;
    struct intel_texture_object *intelObj = intel_texture_object(tObj);
    struct intel_mipmap_tree *mt = intelObj->mt;
+   const struct gl_texture_image *firstImage = tObj->Image[0][tObj->BaseLevel];
    struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit);
    uint32_t *surf;
 
@@ -337,6 +338,15 @@ brw_update_texture_surface(struct gl_context *ctx,
    uint32_t tex_format = translate_tex_format(brw, mt->format,
                                               sampler->sRGBDecode);
 
+   if (brw_use_stencil_index_mode(brw, tObj)) {
+      if (firstImage->_BaseFormat == GL_DEPTH_STENCIL)
+         mt = mt->stencil_mt;
+      brw_configure_w_tiled(mt, false, &width, &height, &pitch,
+                            &tiling, &tex_format);
+      min_lod = mt->first_level;
+      mip_count = 0;
+   }
+
    if (for_gather) {
       /* Sandybridge's gather4 message is broken for integer formats.
        * To work around this, we pretend the surface is UNORM for
@@ -704,10 +714,14 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
    surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, 6 * 4, 32,
                           &brw->wm.base.surf_offset[surf_index]);
 
-   format = brw->render_target_format[rb_format];
-   if (unlikely(!brw->format_supported_as_render_target[rb_format])) {
-      _mesa_problem(ctx, "%s: renderbuffer format %s unsupported\n",
-                    __FUNCTION__, _mesa_get_format_name(rb_format));
+   if (is_stencil(irb->mt)) {
+      brw_configure_w_tiled(irb->mt, true, &width, &height, &pitch,
+                            &tiling, &format);
+   } else {
+      format = brw->render_target_format[rb_format];
+      if (unlikely(!brw->format_supported_as_render_target[rb_format]))
+         _mesa_problem(ctx, "%s: renderbuffer format %s unsupported\n",
+		       __FUNCTION__, _mesa_get_format_name(rb_format));
    }
 
    surf[0] = (BRW_SURFACE_2D << BRW_SURFACE_TYPE_SHIFT |
-- 
1.8.3.1



More information about the mesa-dev mailing list