[Mesa-dev] i965: Turn UBOs as push constants

Abdiel Janulgue abdiel.janulgue at linux.intel.com
Fri Sep 11 01:33:14 PDT 2015


Some updated figures first:

Ue4 Reflections Subway demo
x  fs gather constants disabled
+  fs gather constants enabled

HSW:
    N           Min           Max        Median           Avg        Stddev
x  10       5.09739       6.48963       6.33357      6.197985    0.40742969
+  10       6.56139       6.86579       6.80952      6.758516    0.10267153
Difference at 95.0% confidence
        0.560531 ± 0.279157
        9.04376% ± 4.50399%
        (Student's t, pooled s = 0.297103)

BDW:
    N           Min           Max        Median           Avg        Stddev
x  10       3.64474       3.69746       3.68596       3.67842   0.015452422
+  10       3.77998       3.80967       3.79824      3.795633  0.0079241642
Difference at 95.0% confidence
        0.117213 ± 0.0115377
        3.1865% ± 0.31366%
        (Student's t, pooled s = 0.0122794)

This patch series is taken from my initial gather constants series last April.
Now that the basic i965 resource streamer infrastructure is in place, these are
the remaining bits to enable the gather constants hardware[*]. I've tried to
address the comments from the reviews that happened since then.

Major changes from last posting is we now support GEN8. Also the vec4 backend
gather constant support is probably no longer relevant because of the switch
to NIR. But I've included it here so people interested on implementing it on
the vec4-NIR backend can have a reference point.

The series has no piglit regressions.

[PATCH 01/20] i965: Define gather push constants opcodes
[PATCH 02/20] i965: Enable gather push constants
[PATCH 03/20] i965: Allocate space on the gather pool for plain
[PATCH 04/20] i965: Allocate space on the gather pool for UBO entries
[PATCH 05/20] i965: Store gather table information in the program
[PATCH 06/20] i965: Assign hw-binding table index for each UBO
[PATCH 07/20] i965: Assign hw-binding table index for uniform
[PATCH 08/20] nir: Add glsl_get_array_size() wrapper.
[PATCH 09/20] nir: Add glsl_get_type_without_array() wrapper
[PATCH 10/20] i965: Include UBO parameter sizes in push constant
[PATCH 11/20] i965/fs: Append uniform entries to the gather table
[PATCH 12/20] i965/fs/nir: Append nir_intrinsic_load_ubo entries to
[PATCH 13/20] i965/fs: Pack UBO registers right after uniform
[PATCH 14/20] i965/vec4: Append uniform entries to the gather table
[PATCH 15/20] i965/vec4: Append ir_binop_ubo_load entries to the
[PATCH 16/20] i965/vec4: Pack UBO registers right after uniform
[PATCH 17/20] i965: Upload UBO surfaces before emitting constant
[PATCH 18/20] i965: Program the push constants state using the gather
[PATCH 19/20] i965: Disable gather push constants for null constants
[PATCH 20/20] i965: Enable push constants for UBOs

-Abdiel

--
[*] http://lists.freedesktop.org/archives/mesa-dev/2015-April/082991.html


More information about the mesa-dev mailing list