[Mesa-dev] [PATCH] i965/vec4: Use the sampler for pull constant loads on Broadwell.
Jordan Justen
jljusten at gmail.com
Sat Jun 14 16:52:35 PDT 2014
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
On Sat, Jun 14, 2014 at 12:58 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> We've used the LD sampler message for pull constant loads on earlier
> hardware for some time, and also were already using it for the FS on
> Broadwell. This patch makes us use it for Broadwell VS/GS as well.
>
> I believe that when I wrote this code in 2012, we still used the data
> port in some cases, and I somehow neglected to convert it while
> rebasing.
>
> Improves performance in GLBenchmark 2.7 Egypt by 416.978% +/- 2.25821%
> (n = 17). Many other applications should benefit similarly: this speeds
> up uniform array access in the VS, which is commonly used for skinning
> shaders, among other things.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/drivers/dri/i965/gen8_vec4_generator.cpp | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> No Piglit regressions.
>
> diff --git a/src/mesa/drivers/dri/i965/gen8_vec4_generator.cpp b/src/mesa/drivers/dri/i965/gen8_vec4_generator.cpp
> index 14070cd..82ea45a 100644
> --- a/src/mesa/drivers/dri/i965/gen8_vec4_generator.cpp
> +++ b/src/mesa/drivers/dri/i965/gen8_vec4_generator.cpp
> @@ -444,14 +444,14 @@ gen8_vec4_generator::generate_pull_constant_load(vec4_instruction *inst,
> gen8_instruction *send = next_inst(BRW_OPCODE_SEND);
> gen8_set_dst(brw, send, dst);
> gen8_set_src0(brw, send, offset);
> - gen8_set_dp_message(brw, send, GEN7_SFID_DATAPORT_DATA_CACHE,
> - surf_index,
> - GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ,
> - 0, /* message control */
> - 1, /* mlen */
> - 1, /* rlen */
> - false, /* no header */
> - false); /* EOT */
> + gen8_set_sampler_message(brw, send,
> + surf_index,
> + 0, /* The LD message ignores the sampler unit. */
> + GEN5_SAMPLER_MESSAGE_SAMPLE_LD,
> + 1, /* rlen */
> + 1, /* mlen */
> + false, /* no header */
> + BRW_SAMPLER_SIMD_MODE_SIMD4X2);
>
> brw_mark_surface_used(&prog_data->base, surf_index);
> }
> --
> 1.9.1
>
More information about the mesa-dev
mailing list