mesa/src/gallium/drivers
Alyssa Rosenzweig 10688257bd panfrost/midgard: Merge embedded constants
In Midgard, a bundle consists of a few ALU instructions. Within the
bundle, there is room for an optional 128-bit constant; this constant is
shared across all instructions in the bundle.

Unfortunately, many instructions want a 128-bit constant all to
themselves (how selfish!). If we run out of space for constants in a
bundle, the bundle has to be broken up, incurring a performance and
space penalty.

As an optimization, the scheduler now analyzes the constants coming in
per-instruction and attempts to merge shared components, adjusting the
swizzle accessing the bundle's constants appropriately. Concretely,
given the GLSL:

   (a * vec4(1.5, 0.5, 0.5, 1.0)) + vec4(1.0, 2.3, 2.3, 0.5)

instead of compiling to the naive two bundles:

   vmul.fmul [temp], [a], r26
   fconstants 1.5, 0.5, 0.5, 1.0

   vadd.fadd [out], [temp], r26
   fconstants 1.0, 2.3, 2.3, 0.5

The scheduler can now fuse into a single (pipelined!) bundle:

   vmul.fmul [temp], [a], r26.xyyz
   vadd.fadd [out], [temp], r26.zwwy
   fconstants 1.5, 0.5, 1.0, 2.3

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
2019-06-26 10:01:36 -07:00
..
etnaviv etnaviv: support GL_ARB_seamless_cubemap_per_texture 2019-06-19 00:39:50 +02:00
freedreno freedreno: correct batch_depends_on() logic 2019-06-26 08:43:02 -07:00
i915 gallium: Change PIPE_CAP_TGSI_FS_FBFETCH bool to PIPE_CAP_FBFETCH count 2019-05-23 08:13:07 -07:00
iris iris: Fix overzealous query object batch flushing. 2019-06-26 09:49:01 -07:00
kmsro Delete autotools 2019-04-15 13:44:29 -07:00
lima lima/ppir: Add fsat op 2019-06-24 16:41:33 +02:00
llvmpipe llvmpipe: make remove_shader_variant static. 2019-06-21 10:27:57 +10:00
nouveau nir: define behavior of nir_op_bfm and nir_op_u/ibfe according to SM5 spec. 2019-06-24 18:42:20 +02:00
panfrost panfrost/midgard: Merge embedded constants 2019-06-26 10:01:36 -07:00
r300 r300g: implement GLSL disk shader caching 2019-06-11 20:49:34 -04:00
r600 ac: add radeon_info::is_amdgpu instead of checking drm_major == 3 2019-06-14 13:31:18 -04:00
radeon ac: add radeon_info::is_amdgpu instead of checking drm_major == 3 2019-06-14 13:31:18 -04:00
radeonsi radeonsi: don't set spi_ps_input_* for monolithic shaders 2019-06-24 21:04:10 -04:00
softpipe gallium: Change PIPE_CAP_TGSI_FS_FBFETCH bool to PIPE_CAP_FBFETCH count 2019-05-23 08:13:07 -07:00
svga svga: Support ARB_buffer_storage 2019-06-20 09:30:22 +02:00
swr swr: fix support for GL_ARB_copy_image extension 2019-06-05 15:26:47 +00:00
tegra Delete autotools 2019-04-15 13:44:29 -07:00
v3d v3d: flush jobs writing to vertex buffers used in the current draw call 2019-06-21 08:06:13 +02:00
vc4 vc4: Enable NIR's lower_fmod option. 2019-06-05 16:45:12 -07:00
virgl virgl: add VIRGL_DEBUG_XFER 2019-06-25 12:01:45 -07:00