xf86-video-intel/src/render_program
Damien Lespiau b3ba758a01 uxa/gen7: Don't use a message register to store vl
Turns out the "new" assembler that uses mesa's opcode emission hits the
path that automatically transforms MRF registers into GRF ones in the
exa_wm_src_projective shader.

The diff with the new assembler is:

$ intel-gen4disasm -g7 -
-   { 0x00600041, 0x208077be, 0x008d03c0, 0x008d0180 },
+   { 0x00600041, 0x2e8077bd, 0x008d03c0, 0x008d0180 },
mul(8)      m4<1>F          g30<8,8,1>F     g12<8,8,1>F     { align1 };
mul(8)      g116<1>F        g30<8,8,1>F     g12<8,8,1>F     { align1 };

Of course, message registers are no more in gen7, so the shader is
trying to do something shaddy (ahem!).

Instead of using m4, let's make exa_wm_src_projective use g68 for v (aka
vl) which makes sense since:

1/ vh is g69
2/ exa_wm_src_affine uses g68 for vl already

This commit changes the generated assembly, here's the decoded diff:

$ intel-gen4disasm -g7 -
-   { 0x00600041, 0x208077be, 0x008d03c0, 0x008d0180 },
+   { 0x00600041, 0x288077bd, 0x008d03c0, 0x008d0180 },
mul(8)      m4<1>F          g30<8,8,1>F     g12<8,8,1>F     { align1 };
mul(8)      g68<1>F         g30<8,8,1>F     g12<8,8,1>F     { align1 };

Cc: Kenneth Graunke <kenneth@whitecape.org>
Reported-by: Xiang, Haihao <haihao.xiang@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-02-18 13:46:47 +00:00
..
Makefile.am build: Make generation of gen code depend on intel-gen4asm 2013-02-04 20:38:08 +00:00
exa_sf.g4a
exa_sf.g4b
exa_sf.g4b.gen5
exa_sf.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_sf.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_sf_mask.g4a
exa_sf_mask.g4b
exa_sf_mask.g4b.gen5
exa_sf_mask.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_sf_mask.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm.g4i
exa_wm_affine.g4i
exa_wm_affine.g6i Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_ca.g4a
exa_wm_ca.g4b
exa_wm_ca.g4b.gen5
exa_wm_ca.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_ca.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_ca.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_ca.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_ca_srcalpha.g4a
exa_wm_ca_srcalpha.g4b
exa_wm_ca_srcalpha.g4b.gen5
exa_wm_ca_srcalpha.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_ca_srcalpha.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_ca_srcalpha.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_ca_srcalpha.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_affine.g4a
exa_wm_mask_affine.g4b
exa_wm_mask_affine.g4b.gen5
exa_wm_mask_affine.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_affine.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_affine.g6a Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_mask_affine.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_affine.g7a render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_affine.g7b render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_projective.g4a
exa_wm_mask_projective.g4b
exa_wm_mask_projective.g4b.gen5
exa_wm_mask_projective.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_projective.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_projective.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_projective.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_projective.g7a render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_projective.g7b render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_sample_a.g4a render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_a.g4b render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_a.g4b.gen5 render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_a.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_sample_a.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_sample_a.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_a.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_a.g7a render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_sample_a.g7b render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_sample_argb.g4a render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_argb.g4b render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_argb.g4b.gen5 render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_argb.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_sample_argb.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_mask_sample_argb.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_argb.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_mask_sample_argb.g7a render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_mask_sample_argb.g7b render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_noca.g4a
exa_wm_noca.g4b
exa_wm_noca.g4b.gen5
exa_wm_noca.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_noca.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_noca.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_noca.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_projective.g4i
exa_wm_sample_planar.g4i Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_src_affine.g4a
exa_wm_src_affine.g4b
exa_wm_src_affine.g4b.gen5
exa_wm_src_affine.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_affine.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_affine.g6a Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_src_affine.g6b Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_src_affine.g7a Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_src_affine.g7b Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_src_projective.g4a
exa_wm_src_projective.g4b
exa_wm_src_projective.g4b.gen5
exa_wm_src_projective.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_projective.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_projective.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_src_projective.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_src_projective.g7a uxa/gen7: Don't use a message register to store vl 2013-02-18 13:46:47 +00:00
exa_wm_src_projective.g7b uxa/gen7: Don't use a message register to store vl 2013-02-18 13:46:47 +00:00
exa_wm_src_sample_a.g4a render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_src_sample_a.g4b render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_src_sample_a.g4b.gen5 render: fix send instruction used in sampling fragments 2010-11-02 14:28:55 +08:00
exa_wm_src_sample_a.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_sample_a.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_sample_a.g6a render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_src_sample_a.g6b render: fragments for composite on Sandybridge 2010-11-02 14:28:55 +08:00
exa_wm_src_sample_a.g7a render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_src_sample_a.g7b render: New Ivybridge assembly programs for render acceleration. 2011-07-28 15:00:17 -07:00
exa_wm_src_sample_argb.g4a Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_src_sample_argb.g4b Xv: Send instruction doesn't use implied move when sampling YUV surface 2010-11-01 08:45:51 +08:00
exa_wm_src_sample_argb.g4b.gen5 Xv: Send instruction doesn't use implied move when sampling YUV surface 2010-11-01 08:45:51 +08:00
exa_wm_src_sample_argb.g4i Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_src_sample_argb.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_sample_argb.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_sample_argb.g6a Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_src_sample_argb.g6b Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_src_sample_argb.g7a Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_src_sample_argb.g7b Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_src_sample_planar.g4a Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_src_sample_planar.g4b Xv: Send instruction doesn't use implied move when sampling YUV surface 2010-11-01 08:45:51 +08:00
exa_wm_src_sample_planar.g4b.gen5 Xv: Send instruction doesn't use implied move when sampling YUV surface 2010-11-01 08:45:51 +08:00
exa_wm_src_sample_planar.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_sample_planar.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_src_sample_planar.g6a Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_src_sample_planar.g6b Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_src_sample_planar.g7a Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_src_sample_planar.g7b Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_write.g4a
exa_wm_write.g4b
exa_wm_write.g4b.gen5
exa_wm_write.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_write.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_write.g6a Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_write.g6b render: use headerless render target write 2010-11-02 14:28:55 +08:00
exa_wm_write.g6i Xv: separate fragments from M4 macros 2011-06-24 09:42:07 +08:00
exa_wm_write.g7a Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_write.g7b Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_xy.g4a
exa_wm_xy.g4b
exa_wm_xy.g4b.gen5
exa_wm_xy.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_xy.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_yuv_rgb.g4a
exa_wm_yuv_rgb.g4b
exa_wm_yuv_rgb.g4b.gen5
exa_wm_yuv_rgb.g5a src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_yuv_rgb.g5b src/sna/gen5: Replace the precompiled shaders 2011-11-24 18:24:37 +00:00
exa_wm_yuv_rgb.g6a Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_yuv_rgb.g6b Xv: fragments for xv on Sandybridge. 2010-11-01 08:46:14 +08:00
exa_wm_yuv_rgb.g7a Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00
exa_wm_yuv_rgb.g7b Xv: New shaders for Xv on Ivybridge 2011-06-24 09:42:10 +08:00