[Mesa-dev] [PATCH 10/12] i965: Push stencil alignment w/a down to brw_miptree_layout()
Ian Romanick
idr at freedesktop.org
Fri Mar 1 11:00:53 PST 2013
On 02/28/2013 03:45 PM, Chad Versace wrote:
> Miptree creation has a workaround for separate stencil buffers. After the
> layout is created, we override the tiling to I915_NONE and align it 64x64,
> the size of a W-tile.
>
> Before this patch, the workaround occurs in an odd place:
> intel_miptree_create(). After brw_miptree_layout() creates the layout,
> intel_miptree_create() overrides the tiling and alignment as needed.
>
> Rather than override something after it has been set, it's safer to just
> set it correctly in the first place. To do that, this patch pushes down
> the workaround into brw_miptree_layout().
>
> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
> ---
> src/mesa/drivers/dri/i965/brw_tex_layout.c | 7 +++++++
> src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 14 ++------------
> 2 files changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
> index 1428396..633e598 100644
> --- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
> +++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
> @@ -184,6 +184,13 @@ brw_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree *mt)
> }
> break;
> }
> +
> + if (mt->format == MESA_FORMAT_S8) {
> + /* Align to the size of a W tile, 64x64. */
> + mt->total_width = ALIGN(mt->total_width, 64);
> + mt->total_height = ALIGN(mt->total_height, 64);
> + }
> +
> DBG("%s: %dx%dx%d\n", __FUNCTION__,
> mt->total_width, mt->total_height, mt->cpp);
> }
> diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> index e3eae11..77923d7 100644
> --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
> @@ -397,7 +397,6 @@ intel_miptree_create(struct intel_context *intel,
> bool force_y_tiling)
> {
> struct intel_mipmap_tree *mt;
> - GLuint total_width, total_height;
> gl_format mt_format, etc_format;
>
> intel_miptree_select_formats(format, &mt_format, &etc_format);
> @@ -413,23 +412,14 @@ intel_miptree_create(struct intel_context *intel,
> return NULL;
> }
>
> - total_width = mt->total_width;
> - total_height = mt->total_height;
> -
> - if (format == MESA_FORMAT_S8) {
> - /* Align to size of W tile, 64x64. */
> - total_width = ALIGN(total_width, 64);
> - total_height = ALIGN(total_height, 64);
> - }
> -
intel_miptree_create is used by other Intel drivers. Is this going to
cause a change on i915? I know that those GPUs don't have W-tiling.
> uint32_t tiling = intel_miptree_choose_tiling(intel, format, width0,
> num_samples, force_y_tiling);
> mt->etc_format = etc_format;
> mt->region = intel_region_alloc(intel->intelScreen,
> tiling,
> mt->cpp,
> - total_width,
> - total_height,
> + mt->total_width,
> + mt->total_height,
> expect_accelerated_upload);
> mt->offset = 0;
>
>
More information about the mesa-dev
mailing list