[Mesa-dev] [PATCH 1/2] r600g, radeonsi: add debug flags which disable tiling
Alex Deucher
alexdeucher at gmail.com
Sun Jul 27 19:52:37 PDT 2014
On Fri, Jul 25, 2014 at 6:52 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
> ---
> src/gallium/drivers/radeon/r600_pipe_common.c | 6 ++++--
> src/gallium/drivers/radeon/r600_pipe_common.h | 21 +++++++++++----------
> src/gallium/drivers/radeon/r600_texture.c | 10 +++++++++-
> 3 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c
> index 6535992..b132e04 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.c
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.c
> @@ -233,8 +233,6 @@ static const struct debug_named_value common_debug_options[] = {
> { "vm", DBG_VM, "Print virtual addresses when creating resources" },
> { "trace_cs", DBG_TRACE_CS, "Trace cs and write rlockup_<csid>.c file with faulty cs" },
>
> - /* features */
> - { "nodma", DBG_NO_ASYNC_DMA, "Disable asynchronous DMA" },
>
> /* shaders */
> { "fs", DBG_FS, "Print fetch shaders" },
> @@ -243,9 +241,13 @@ static const struct debug_named_value common_debug_options[] = {
> { "ps", DBG_PS, "Print pixel shaders" },
> { "cs", DBG_CS, "Print compute shaders" },
>
> + /* features */
> + { "nodma", DBG_NO_ASYNC_DMA, "Disable asynchronous DMA" },
> { "hyperz", DBG_HYPERZ, "Enable Hyper-Z" },
> /* GL uses the word INVALIDATE, gallium uses the word DISCARD */
> { "noinvalrange", DBG_NO_DISCARD_RANGE, "Disable handling of INVALIDATE_RANGE map flags" },
> + { "no2d", DBG_NO_2D_TILING, "Disable 2D tiling" },
> + { "notiling", DBG_NO_TILING, "Disable tiling" },
>
> DEBUG_NAMED_VALUE_END /* must be last */
> };
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
> index cee9622..5348b8d 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.h
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.h
> @@ -80,17 +80,18 @@
> #define DBG_COMPUTE (1 << 2)
> #define DBG_VM (1 << 3)
> #define DBG_TRACE_CS (1 << 4)
> +/* shader logging */
> +#define DBG_FS (1 << 5)
> +#define DBG_VS (1 << 6)
> +#define DBG_GS (1 << 7)
> +#define DBG_PS (1 << 8)
> +#define DBG_CS (1 << 9)
> /* features */
> -#define DBG_NO_ASYNC_DMA (1 << 5)
> -/* shaders */
> -#define DBG_FS (1 << 8)
> -#define DBG_VS (1 << 9)
> -#define DBG_GS (1 << 10)
> -#define DBG_PS (1 << 11)
> -#define DBG_CS (1 << 12)
> -/* features */
> -#define DBG_HYPERZ (1 << 13)
> -#define DBG_NO_DISCARD_RANGE (1 << 14)
> +#define DBG_NO_ASYNC_DMA (1 << 10)
> +#define DBG_HYPERZ (1 << 11)
> +#define DBG_NO_DISCARD_RANGE (1 << 12)
> +#define DBG_NO_2D_TILING (1 << 13)
> +#define DBG_NO_TILING (1 << 14)
> /* The maximum allowed bit is 15. */
>
> #define R600_MAP_BUFFER_ALIGNMENT 64
> diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
> index 6dd84a4..34ecfab 100644
> --- a/src/gallium/drivers/radeon/r600_texture.c
> +++ b/src/gallium/drivers/radeon/r600_texture.c
> @@ -737,6 +737,13 @@ static unsigned r600_choose_tiling(struct r600_common_screen *rscreen,
> * Compressed textures must always be tiled. */
> if (!(templ->flags & R600_RESOURCE_FLAG_FORCE_TILING) &&
> !util_format_is_compressed(templ->format)) {
> + /* Not everything can be linear, so we cannot enforce it
> + * for all textures. */
> + if ((rscreen->debug_flags & DBG_NO_TILING) &&
> + (!util_format_is_depth_or_stencil(templ->format) ||
> + !(templ->flags & R600_RESOURCE_FLAG_FLUSHED_DEPTH)))
> + return RADEON_SURF_MODE_LINEAR_ALIGNED;
> +
> /* Tiling doesn't work with the 422 (SUBSAMPLED) formats on R600+. */
> if (desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED)
> return RADEON_SURF_MODE_LINEAR_ALIGNED;
> @@ -763,7 +770,8 @@ static unsigned r600_choose_tiling(struct r600_common_screen *rscreen,
> }
>
> /* Make small textures 1D tiled. */
> - if (templ->width0 <= 16 || templ->height0 <= 16)
> + if (templ->width0 <= 16 || templ->height0 <= 16 ||
> + (rscreen->debug_flags & DBG_NO_2D_TILING))
> return RADEON_SURF_MODE_1D;
>
> /* The allocator will switch to 1D if needed. */
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list