[Mesa-dev] [PATCH 2/6] i965/vec4: Move perf_debug about register spilling into the visitor.
Pohjolainen, Topi
topi.pohjolainen at intel.com
Fri Jul 3 01:11:45 PDT 2015
On Wed, Jul 01, 2015 at 03:03:32PM -0700, Kenneth Graunke wrote:
> This patch makes us only issue the performance warning about register
> spilling if we actually spilled registers. We also use scratch space
> for indirect addressing and the like.
>
> This is basically commit c51163b0cf7aff0375b1a5ea4cb3da9d9e164044 for
> the vec4 backend.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/drivers/dri/i965/brw_gs.c | 4 ----
> src/mesa/drivers/dri/i965/brw_vec4.cpp | 16 +++++++++++++---
> src/mesa/drivers/dri/i965/brw_vs.c | 4 ----
> 3 files changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c
> index 52c7303..7f947e0 100644
> --- a/src/mesa/drivers/dri/i965/brw_gs.c
> +++ b/src/mesa/drivers/dri/i965/brw_gs.c
> @@ -268,10 +268,6 @@ brw_codegen_gs_prog(struct brw_context *brw,
>
> /* Scratch space is used for register spilling */
> if (c.base.last_scratch) {
> - perf_debug("Geometry shader triggered register spilling. "
> - "Try reducing the number of live vec4 values to "
> - "improve performance.\n");
> -
> c.prog_data.base.base.total_scratch
> = brw_get_scratch_size(c.base.last_scratch*REG_SIZE);
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index 2a56564..60f73e2 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -1827,9 +1827,19 @@ vec4_visitor::run(gl_clip_plane *clip_planes)
> }
> }
>
> - while (!reg_allocate()) {
> - if (failed)
> - return false;
> + bool allocated_without_spills = reg_allocate();
> +
> + if (!allocated_without_spills) {
> + compiler->shader_perf_log(log_data,
> + "%s shader triggered register spilling. "
> + "Try reducing the number of live vec4 values "
> + "to improve performance.\n",
> + stage_name);
> +
> + while (!reg_allocate()) {
I tried to understand a little how repeating calls to reg_allocate() differ
from previous in result wise. I didn't really get it but that doesn't really
prevent me from reviewing this patch. This patch preserves the logic while
corresponding to the intent in commit message.
Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> + if (failed)
> + return false;
> + }
> }
>
> opt_schedule_instructions();
> diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
> index 6e9848f..edbcbcf 100644
> --- a/src/mesa/drivers/dri/i965/brw_vs.c
> +++ b/src/mesa/drivers/dri/i965/brw_vs.c
> @@ -196,10 +196,6 @@ brw_codegen_vs_prog(struct brw_context *brw,
>
> /* Scratch space is used for register spilling */
> if (c.base.last_scratch) {
> - perf_debug("Vertex shader triggered register spilling. "
> - "Try reducing the number of live vec4 values to "
> - "improve performance.\n");
> -
> prog_data.base.base.total_scratch
> = brw_get_scratch_size(c.base.last_scratch*REG_SIZE);
>
> --
> 2.4.4
>
> _______________________________________________
> 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