.gitignore | 1 Makefile.am | 8 NEWS | 1035 ++ autogen.sh | 4 configure.ac | 420 - m4/ac_define_dir.m4 | 49 man/intel.man | 175 src/Makefile.am | 83 src/brw_defines.h | 874 -- src/brw_structs.h | 1719 ---- src/common.h | 174 src/compat-api.h | 161 src/i830_3d.c | 225 src/i830_reg.h | 805 -- src/i830_render.c | 876 -- src/i915_3d.c | 110 src/i915_3d.h | 619 - src/i915_pciids.h | 211 src/i915_reg.h | 844 -- src/i915_render.c | 1025 -- src/i915_video.c | 484 - src/i965_3d.c | 438 - src/i965_reg.h | 474 - src/i965_render.c | 2885 ------- src/i965_video.c | 1915 ----- src/intel.h | 647 - src/intel_batchbuffer.c | 294 src/intel_batchbuffer.h | 226 src/intel_device.c | 325 src/intel_display.c | 1701 ---- src/intel_dri.c | 1710 ---- src/intel_driver.c | 1327 --- src/intel_driver.h | 285 src/intel_glamor.c | 231 src/intel_glamor.h | 67 src/intel_hwmc.c | 260 src/intel_hwmc.h | 75 src/intel_list.h | 2 src/intel_memory.c | 284 src/intel_module.c | 521 - src/intel_options.c | 51 src/intel_options.h | 49 src/intel_shadow.c | 198 src/intel_uxa.c | 1339 --- src/intel_video.c | 1776 ---- src/intel_video.h | 95 src/legacy/i810/Makefile.am | 15 src/legacy/i810/i810.h | 17 src/legacy/i810/i810_accel.c | 347 src/legacy/i810/i810_common.h | 2 src/legacy/i810/i810_cursor.c | 6 src/legacy/i810/i810_dga.c | 26 src/legacy/i810/i810_dri.c | 136 src/legacy/i810/i810_driver.c | 715 - src/legacy/i810/i810_hwmc.c | 4 src/legacy/i810/i810_video.c | 115 src/legacy/i810/i810_xaa.c | 320 src/legacy/i810/xvmc/Makefile.am | 4 src/legacy/legacy.h | 2 src/render_program/Makefile.am | 16 src/render_program/exa_wm_src_projective.g7a | 4 src/render_program/exa_wm_src_projective.g7b | 2 src/sna/Makefile.am | 33 src/sna/atomic.h | 89 src/sna/blt.c | 772 +- src/sna/brw/Makefile.am | 60 src/sna/brw/brw.h | 17 src/sna/brw/brw_disasm.c | 1105 ++ src/sna/brw/brw_eu.c | 150 src/sna/brw/brw_eu.h | 2264 +++++ src/sna/brw/brw_eu_emit.c | 2002 +++++ src/sna/brw/brw_eu_util.c | 126 src/sna/brw/brw_sf.c | 54 src/sna/brw/brw_test.c | 60 src/sna/brw/brw_test.h | 46 src/sna/brw/brw_test_gen4.c | 199 src/sna/brw/brw_test_gen5.c | 208 src/sna/brw/brw_test_gen6.c | 209 src/sna/brw/brw_test_gen7.c | 191 src/sna/brw/brw_wm.c | 681 + src/sna/compiler.h | 33 src/sna/fb/Makefile.am | 38 src/sna/fb/README | 1 src/sna/fb/fb.h | 575 + src/sna/fb/fbarc.c | 122 src/sna/fb/fbarcbits.h | 204 src/sna/fb/fbbitmap.c | 188 src/sna/fb/fbblt.c | 321 src/sna/fb/fbbltone.c | 413 + src/sna/fb/fbclip.c | 92 src/sna/fb/fbclip.h | 85 src/sna/fb/fbcopy.c | 225 src/sna/fb/fbfill.c | 221 src/sna/fb/fbgc.c | 198 src/sna/fb/fbglyph.c | 277 src/sna/fb/fbglyphbits.h | 140 src/sna/fb/fbimage.c | 254 src/sna/fb/fbline.c | 179 src/sna/fb/fblinebits.h | 284 src/sna/fb/fbpict.c | 348 src/sna/fb/fbpict.h | 51 src/sna/fb/fbpoint.c | 134 src/sna/fb/fbpointbits.h | 148 src/sna/fb/fbpush.c | 177 src/sna/fb/fbrop.h | 111 src/sna/fb/fbseg.c | 564 + src/sna/fb/fbsegbits.h | 212 src/sna/fb/fbspan.c | 131 src/sna/fb/fbstipple.c | 223 src/sna/fb/fbtile.c | 151 src/sna/fb/fbutil.c | 126 src/sna/fb/sfb.h | 40 src/sna/gen2_render.c | 1110 +- src/sna/gen3_render.c | 2671 +++++-- src/sna/gen4_render.c | 2525 ++---- src/sna/gen4_render.h | 86 src/sna/gen4_source.c | 179 src/sna/gen4_source.h | 22 src/sna/gen4_vertex.c | 3021 +++++++ src/sna/gen4_vertex.h | 16 src/sna/gen5_render.c | 2254 ++--- src/sna/gen5_render.h | 93 src/sna/gen6_render.c | 2906 +++---- src/sna/gen6_render.h | 36 src/sna/gen7_render.c | 3116 +++----- src/sna/gen7_render.h | 232 src/sna/kgem.c | 4423 ++++++++--- src/sna/kgem.h | 444 - src/sna/kgem_debug.c | 47 src/sna/kgem_debug.h | 2 src/sna/kgem_debug_gen2.c | 4 src/sna/kgem_debug_gen3.c | 99 src/sna/kgem_debug_gen4.c | 6 src/sna/kgem_debug_gen5.c | 27 src/sna/kgem_debug_gen6.c | 34 src/sna/kgem_debug_gen7.c | 45 src/sna/sna.h | 534 - src/sna/sna_accel.c | 9492 ++++++++++++++++--------- src/sna/sna_blt.c | 1689 +++- src/sna/sna_composite.c | 505 - src/sna/sna_cpu.c | 116 src/sna/sna_cpuid.h | 86 src/sna/sna_damage.c | 387 - src/sna/sna_damage.h | 55 src/sna/sna_display.c | 3809 +++++++--- src/sna/sna_display_fake.c | 250 src/sna/sna_dri.c | 2615 +++--- src/sna/sna_driver.c | 889 +- src/sna/sna_glyphs.c | 1423 ++- src/sna/sna_gradient.c | 167 src/sna/sna_io.c | 791 +- src/sna/sna_module.h | 4 src/sna/sna_reg.h | 1 src/sna/sna_render.c | 944 +- src/sna/sna_render.h | 293 src/sna/sna_render_inline.h | 170 src/sna/sna_stream.c | 51 src/sna/sna_threads.c | 306 src/sna/sna_tiling.c | 469 - src/sna/sna_transform.c | 41 src/sna/sna_trapezoids.c | 3369 +++++++- src/sna/sna_vertex.c | 37 src/sna/sna_video.c | 498 - src/sna/sna_video.h | 80 src/sna/sna_video_hwmc.c | 191 src/sna/sna_video_hwmc.h | 30 src/sna/sna_video_overlay.c | 471 - src/sna/sna_video_sprite.c | 422 - src/sna/sna_video_textured.c | 364 src/uxa/Makefile.am | 88 src/uxa/brw_defines.h | 881 ++ src/uxa/brw_structs.h | 1723 ++++ src/uxa/common.h | 71 src/uxa/i830_3d.c | 225 src/uxa/i830_reg.h | 805 ++ src/uxa/i830_render.c | 876 ++ src/uxa/i915_3d.c | 110 src/uxa/i915_3d.h | 619 + src/uxa/i915_reg.h | 844 ++ src/uxa/i915_render.c | 1010 ++ src/uxa/i915_video.c | 486 + src/uxa/i965_3d.c | 443 + src/uxa/i965_reg.h | 476 + src/uxa/i965_render.c | 2962 +++++++ src/uxa/i965_video.c | 1939 +++++ src/uxa/intel.h | 688 + src/uxa/intel_batchbuffer.c | 314 src/uxa/intel_batchbuffer.h | 226 src/uxa/intel_display.c | 2124 +++++ src/uxa/intel_dri.c | 1639 ++++ src/uxa/intel_driver.c | 1311 +++ src/uxa/intel_glamor.c | 254 src/uxa/intel_glamor.h | 67 src/uxa/intel_hwmc.c | 260 src/uxa/intel_memory.c | 286 src/uxa/intel_uxa.c | 1420 +++ src/uxa/intel_video.c | 1776 ++++ src/uxa/intel_video.h | 95 src/uxa/uxa-accel.c | 1296 +++ src/uxa/uxa-glamor.h | 65 src/uxa/uxa-glyphs.c | 1053 ++ src/uxa/uxa-priv.h | 440 + src/uxa/uxa-render.c | 2074 +++++ src/uxa/uxa-unaccel.c | 454 + src/uxa/uxa.c | 590 + src/uxa/uxa.h | 599 + src/uxa/uxa_module.h | 6 src/xvmc/Makefile.am | 23 src/xvmc/i915_program.h | 274 src/xvmc/i915_structs.h | 926 -- src/xvmc/i915_xvmc.c | 1225 --- src/xvmc/i915_xvmc.h | 83 src/xvmc/i965_xvmc.c | 882 -- src/xvmc/intel_batchbuffer.c | 139 src/xvmc/intel_batchbuffer.h | 57 src/xvmc/intel_xvmc.c | 1075 -- src/xvmc/intel_xvmc.h | 263 src/xvmc/intel_xvmc_dump.c | 158 src/xvmc/shader/Makefile.am | 1 src/xvmc/shader/mc/Makefile.am | 121 src/xvmc/shader/mc/addidct.g4i | 152 src/xvmc/shader/mc/addidct_igd.g4i | 117 src/xvmc/shader/mc/block_clear.g4i | 140 src/xvmc/shader/mc/dual_prime.g4a | 223 src/xvmc/shader/mc/dual_prime.g4b | 2486 ------ src/xvmc/shader/mc/dual_prime.g4b.gen5 | 2486 ------ src/xvmc/shader/mc/dual_prime_igd.g4a | 223 src/xvmc/shader/mc/dual_prime_igd.g4b | 1234 --- src/xvmc/shader/mc/dual_prime_igd.g4b.gen5 | 1234 --- src/xvmc/shader/mc/field_backward.g4a | 124 src/xvmc/shader/mc/field_backward.g4b | 1341 --- src/xvmc/shader/mc/field_backward.g4b.gen5 | 1341 --- src/xvmc/shader/mc/field_backward_igd.g4a | 86 src/xvmc/shader/mc/field_backward_igd.g4b | 62 src/xvmc/shader/mc/field_backward_igd.g4b.gen5 | 62 src/xvmc/shader/mc/field_f_b.g4a | 223 src/xvmc/shader/mc/field_f_b.g4b | 2486 ------ src/xvmc/shader/mc/field_f_b.g4b.gen5 | 2486 ------ src/xvmc/shader/mc/field_f_b_igd.g4a | 159 src/xvmc/shader/mc/field_f_b_igd.g4b | 121 src/xvmc/shader/mc/field_f_b_igd.g4b.gen5 | 121 src/xvmc/shader/mc/field_forward.g4a | 121 src/xvmc/shader/mc/field_forward.g4b | 1340 --- src/xvmc/shader/mc/field_forward.g4b.gen5 | 1340 --- src/xvmc/shader/mc/field_forward_igd.g4a | 86 src/xvmc/shader/mc/field_forward_igd.g4b | 62 src/xvmc/shader/mc/field_forward_igd.g4b.gen5 | 62 src/xvmc/shader/mc/frame_backward.g4a | 69 src/xvmc/shader/mc/frame_backward.g4b | 716 - src/xvmc/shader/mc/frame_backward.g4b.gen5 | 716 - src/xvmc/shader/mc/frame_backward_igd.g4a | 50 src/xvmc/shader/mc/frame_backward_igd.g4b | 15 src/xvmc/shader/mc/frame_backward_igd.g4b.gen5 | 15 src/xvmc/shader/mc/frame_f_b.g4a | 131 src/xvmc/shader/mc/frame_f_b.g4b | 1257 --- src/xvmc/shader/mc/frame_f_b.g4b.gen5 | 1257 --- src/xvmc/shader/mc/frame_f_b_igd.g4a | 96 src/xvmc/shader/mc/frame_f_b_igd.g4b | 51 src/xvmc/shader/mc/frame_f_b_igd.g4b.gen5 | 51 src/xvmc/shader/mc/frame_forward.g4a | 65 src/xvmc/shader/mc/frame_forward.g4b | 715 - src/xvmc/shader/mc/frame_forward.g4b.gen5 | 715 - src/xvmc/shader/mc/frame_forward_igd.g4a | 30 src/xvmc/shader/mc/frame_forward_igd.g4b | 15 src/xvmc/shader/mc/frame_forward_igd.g4b.gen5 | 15 src/xvmc/shader/mc/ipicture.g4a | 166 src/xvmc/shader/mc/ipicture.g4b | 125 src/xvmc/shader/mc/ipicture.g4b.gen5 | 125 src/xvmc/shader/mc/ipicture_igd.g4a | 105 src/xvmc/shader/mc/ipicture_igd.g4b | 75 src/xvmc/shader/mc/ipicture_igd.g4b.gen5 | 75 src/xvmc/shader/mc/lib_igd.g4a | 133 src/xvmc/shader/mc/lib_igd.g4b | 558 - src/xvmc/shader/mc/lib_igd.g4b.gen5 | 558 - src/xvmc/shader/mc/motion_field_uv.g4i | 46 src/xvmc/shader/mc/motion_field_uv_igd.g4i | 46 src/xvmc/shader/mc/motion_field_y.g4i | 45 src/xvmc/shader/mc/motion_field_y_igd.g4i | 45 src/xvmc/shader/mc/motion_frame_uv.g4i | 29 src/xvmc/shader/mc/motion_frame_uv_igd.g4i | 30 src/xvmc/shader/mc/motion_frame_y.g4i | 57 src/xvmc/shader/mc/motion_frame_y_igd.g4i | 58 src/xvmc/shader/mc/null.g4a | 57 src/xvmc/shader/mc/null.g4b | 17 src/xvmc/shader/mc/null.g4b.gen5 | 17 src/xvmc/shader/mc/read_field_x0y0_uv.g4i | 74 src/xvmc/shader/mc/read_field_x0y0_uv_igd.g4i | 30 src/xvmc/shader/mc/read_field_x0y0_y.g4i | 83 src/xvmc/shader/mc/read_field_x0y0_y_igd.g4i | 35 src/xvmc/shader/mc/read_field_x0y1_uv.g4i | 78 src/xvmc/shader/mc/read_field_x0y1_uv_igd.g4i | 42 src/xvmc/shader/mc/read_field_x0y1_y.g4i | 86 src/xvmc/shader/mc/read_field_x0y1_y_igd.g4i | 42 src/xvmc/shader/mc/read_field_x1y0_uv.g4i | 75 src/xvmc/shader/mc/read_field_x1y0_uv_igd.g4i | 33 src/xvmc/shader/mc/read_field_x1y0_y.g4i | 83 src/xvmc/shader/mc/read_field_x1y0_y_igd.g4i | 35 src/xvmc/shader/mc/read_field_x1y1_uv.g4i | 172 src/xvmc/shader/mc/read_field_x1y1_uv_igd.g4i | 66 src/xvmc/shader/mc/read_field_x1y1_y.g4i | 166 src/xvmc/shader/mc/read_field_x1y1_y_igd.g4i | 64 src/xvmc/shader/mc/read_frame_x0y0_uv.g4i | 73 src/xvmc/shader/mc/read_frame_x0y0_uv_igd.g4i | 28 src/xvmc/shader/mc/read_frame_x0y0_y.g4i | 109 src/xvmc/shader/mc/read_frame_x0y0_y_igd.g4i | 35 src/xvmc/shader/mc/read_frame_x0y1_uv.g4i | 79 src/xvmc/shader/mc/read_frame_x0y1_uv_igd.g4i | 44 src/xvmc/shader/mc/read_frame_x0y1_y.g4i | 113 src/xvmc/shader/mc/read_frame_x0y1_y_igd.g4i | 49 src/xvmc/shader/mc/read_frame_x1y0_uv.g4i | 75 src/xvmc/shader/mc/read_frame_x1y0_uv_igd.g4i | 41 src/xvmc/shader/mc/read_frame_x1y0_y.g4i | 110 src/xvmc/shader/mc/read_frame_x1y0_y_igd.g4i | 43 src/xvmc/shader/mc/read_frame_x1y1_uv.g4i | 159 src/xvmc/shader/mc/read_frame_x1y1_uv_igd.g4i | 71 src/xvmc/shader/mc/read_frame_x1y1_y.g4i | 264 src/xvmc/shader/mc/read_frame_x1y1_y_igd.g4i | 92 src/xvmc/shader/vld/Makefile.am | 74 src/xvmc/shader/vld/addidct.g4i | 152 src/xvmc/shader/vld/do_iq_intra.g4i | 64 src/xvmc/shader/vld/do_iq_non_intra.g4i | 59 src/xvmc/shader/vld/field_backward.g4a | 126 src/xvmc/shader/vld/field_backward.g4b | 553 - src/xvmc/shader/vld/field_backward.g4b.gen5 | 553 - src/xvmc/shader/vld/field_f_b.g4a | 213 src/xvmc/shader/vld/field_f_b.g4b | 1007 -- src/xvmc/shader/vld/field_f_b.g4b.gen5 | 1007 -- src/xvmc/shader/vld/field_forward.g4a | 130 src/xvmc/shader/vld/field_forward.g4b | 555 - src/xvmc/shader/vld/field_forward.g4b.gen5 | 555 - src/xvmc/shader/vld/frame_backward.g4a | 61 src/xvmc/shader/vld/frame_backward.g4b | 369 src/xvmc/shader/vld/frame_backward.g4b.gen5 | 369 src/xvmc/shader/vld/frame_f_b.g4a | 120 src/xvmc/shader/vld/frame_f_b.g4b | 675 - src/xvmc/shader/vld/frame_f_b.g4b.gen5 | 675 - src/xvmc/shader/vld/frame_forward.g4a | 61 src/xvmc/shader/vld/frame_forward.g4b | 369 src/xvmc/shader/vld/frame_forward.g4b.gen5 | 369 src/xvmc/shader/vld/idct.g4i | 147 src/xvmc/shader/vld/ipicture.g4a | 209 src/xvmc/shader/vld/ipicture.g4b | 313 src/xvmc/shader/vld/ipicture.g4b.gen5 | 313 src/xvmc/shader/vld/iq_intra.g4i | 131 src/xvmc/shader/vld/iq_non_intra.g4i | 150 src/xvmc/shader/vld/lib.g4a | 190 src/xvmc/shader/vld/lib.g4b | 307 src/xvmc/shader/vld/lib.g4b.gen5 | 307 src/xvmc/shader/vld/motion_field_uv.g4i | 46 src/xvmc/shader/vld/motion_field_y.g4i | 45 src/xvmc/shader/vld/motion_frame_uv.g4i | 45 src/xvmc/shader/vld/motion_frame_y.g4i | 57 src/xvmc/shader/vld/read_field_x0y0_uv.g4i | 50 src/xvmc/shader/vld/read_field_x0y0_y.g4i | 57 src/xvmc/shader/vld/read_field_x0y1_uv.g4i | 28 src/xvmc/shader/vld/read_field_x0y1_y.g4i | 60 src/xvmc/shader/vld/read_field_x1y0_uv.g4i | 24 src/xvmc/shader/vld/read_field_x1y0_y.g4i | 57 src/xvmc/shader/vld/read_field_x1y1_uv.g4i | 53 src/xvmc/shader/vld/read_field_x1y1_y.g4i | 87 src/xvmc/shader/vld/read_frame_x0y0_uv.g4i | 49 src/xvmc/shader/vld/read_frame_x0y0_y.g4i | 58 src/xvmc/shader/vld/read_frame_x0y1_uv.g4i | 56 src/xvmc/shader/vld/read_frame_x0y1_y.g4i | 61 src/xvmc/shader/vld/read_frame_x1y0_uv.g4i | 42 src/xvmc/shader/vld/read_frame_x1y0_y.g4i | 58 src/xvmc/shader/vld/read_frame_x1y1_uv.g4i | 74 src/xvmc/shader/vld/read_frame_x1y1_y.g4i | 112 src/xvmc/xvmc_vld.c | 1225 --- test/.gitignore | 2 test/Makefile.am | 21 test/basic-rectangle.c | 223 test/basic-string.c | 102 test/dri2-race.c | 113 test/dri2-swap.c | 172 test/dri2.c | 665 + test/dri2.h | 108 test/lowlevel-blt-bench.c | 135 test/mkvsync.sh | 27 test/tearing.mp4 |binary test/test.h | 5 test/test_display.c | 17 uxa/Makefile.am | 23 uxa/uxa-accel.c | 1279 --- uxa/uxa-glamor.h | 65 uxa/uxa-glyphs.c | 945 -- uxa/uxa-priv.h | 440 - uxa/uxa-render.c | 2082 ----- uxa/uxa-unaccel.c | 454 - uxa/uxa.c | 592 - uxa/uxa.h | 599 - xvmc/Makefile.am | 32 xvmc/brw_defines.h | 881 ++ xvmc/brw_structs.h | 1723 ++++ xvmc/i830_reg.h | 805 ++ xvmc/i915_program.h | 274 xvmc/i915_reg.h | 844 ++ xvmc/i915_structs.h | 926 ++ xvmc/i915_xvmc.c | 1225 +++ xvmc/i915_xvmc.h | 82 xvmc/i965_reg.h | 476 + xvmc/i965_xvmc.c | 880 ++ xvmc/intel_batchbuffer.c | 139 xvmc/intel_batchbuffer.h | 57 xvmc/intel_xvmc.c | 1075 ++ xvmc/intel_xvmc.h | 75 xvmc/intel_xvmc_dump.c | 158 xvmc/intel_xvmc_private.h | 264 xvmc/shader/Makefile.am | 1 xvmc/shader/mc/Makefile.am | 121 xvmc/shader/mc/addidct.g4i | 152 xvmc/shader/mc/addidct_igd.g4i | 117 xvmc/shader/mc/block_clear.g4i | 140 xvmc/shader/mc/dual_prime.g4a | 223 xvmc/shader/mc/dual_prime.g4b | 2486 ++++++ xvmc/shader/mc/dual_prime.g4b.gen5 | 2486 ++++++ xvmc/shader/mc/dual_prime_igd.g4a | 223 xvmc/shader/mc/dual_prime_igd.g4b | 1234 +++ xvmc/shader/mc/dual_prime_igd.g4b.gen5 | 1234 +++ xvmc/shader/mc/field_backward.g4a | 124 xvmc/shader/mc/field_backward.g4b | 1341 +++ xvmc/shader/mc/field_backward.g4b.gen5 | 1341 +++ xvmc/shader/mc/field_backward_igd.g4a | 86 xvmc/shader/mc/field_backward_igd.g4b | 62 xvmc/shader/mc/field_backward_igd.g4b.gen5 | 62 xvmc/shader/mc/field_f_b.g4a | 223 xvmc/shader/mc/field_f_b.g4b | 2486 ++++++ xvmc/shader/mc/field_f_b.g4b.gen5 | 2486 ++++++ xvmc/shader/mc/field_f_b_igd.g4a | 159 xvmc/shader/mc/field_f_b_igd.g4b | 121 xvmc/shader/mc/field_f_b_igd.g4b.gen5 | 121 xvmc/shader/mc/field_forward.g4a | 121 xvmc/shader/mc/field_forward.g4b | 1340 +++ xvmc/shader/mc/field_forward.g4b.gen5 | 1340 +++ xvmc/shader/mc/field_forward_igd.g4a | 86 xvmc/shader/mc/field_forward_igd.g4b | 62 xvmc/shader/mc/field_forward_igd.g4b.gen5 | 62 xvmc/shader/mc/frame_backward.g4a | 69 xvmc/shader/mc/frame_backward.g4b | 716 + xvmc/shader/mc/frame_backward.g4b.gen5 | 716 + xvmc/shader/mc/frame_backward_igd.g4a | 50 xvmc/shader/mc/frame_backward_igd.g4b | 15 xvmc/shader/mc/frame_backward_igd.g4b.gen5 | 15 xvmc/shader/mc/frame_f_b.g4a | 131 xvmc/shader/mc/frame_f_b.g4b | 1257 +++ xvmc/shader/mc/frame_f_b.g4b.gen5 | 1257 +++ xvmc/shader/mc/frame_f_b_igd.g4a | 96 xvmc/shader/mc/frame_f_b_igd.g4b | 51 xvmc/shader/mc/frame_f_b_igd.g4b.gen5 | 51 xvmc/shader/mc/frame_forward.g4a | 65 xvmc/shader/mc/frame_forward.g4b | 715 + xvmc/shader/mc/frame_forward.g4b.gen5 | 715 + xvmc/shader/mc/frame_forward_igd.g4a | 30 xvmc/shader/mc/frame_forward_igd.g4b | 15 xvmc/shader/mc/frame_forward_igd.g4b.gen5 | 15 xvmc/shader/mc/ipicture.g4a | 166 xvmc/shader/mc/ipicture.g4b | 125 xvmc/shader/mc/ipicture.g4b.gen5 | 125 xvmc/shader/mc/ipicture_igd.g4a | 105 xvmc/shader/mc/ipicture_igd.g4b | 75 xvmc/shader/mc/ipicture_igd.g4b.gen5 | 75 xvmc/shader/mc/lib_igd.g4a | 133 xvmc/shader/mc/lib_igd.g4b | 558 + xvmc/shader/mc/lib_igd.g4b.gen5 | 558 + xvmc/shader/mc/motion_field_uv.g4i | 46 xvmc/shader/mc/motion_field_uv_igd.g4i | 46 xvmc/shader/mc/motion_field_y.g4i | 45 xvmc/shader/mc/motion_field_y_igd.g4i | 45 xvmc/shader/mc/motion_frame_uv.g4i | 29 xvmc/shader/mc/motion_frame_uv_igd.g4i | 30 xvmc/shader/mc/motion_frame_y.g4i | 57 xvmc/shader/mc/motion_frame_y_igd.g4i | 58 xvmc/shader/mc/null.g4a | 57 xvmc/shader/mc/null.g4b | 17 xvmc/shader/mc/null.g4b.gen5 | 17 xvmc/shader/mc/read_field_x0y0_uv.g4i | 74 xvmc/shader/mc/read_field_x0y0_uv_igd.g4i | 30 xvmc/shader/mc/read_field_x0y0_y.g4i | 83 xvmc/shader/mc/read_field_x0y0_y_igd.g4i | 35 xvmc/shader/mc/read_field_x0y1_uv.g4i | 78 xvmc/shader/mc/read_field_x0y1_uv_igd.g4i | 42 xvmc/shader/mc/read_field_x0y1_y.g4i | 86 xvmc/shader/mc/read_field_x0y1_y_igd.g4i | 42 xvmc/shader/mc/read_field_x1y0_uv.g4i | 75 xvmc/shader/mc/read_field_x1y0_uv_igd.g4i | 33 xvmc/shader/mc/read_field_x1y0_y.g4i | 83 xvmc/shader/mc/read_field_x1y0_y_igd.g4i | 35 xvmc/shader/mc/read_field_x1y1_uv.g4i | 172 xvmc/shader/mc/read_field_x1y1_uv_igd.g4i | 66 xvmc/shader/mc/read_field_x1y1_y.g4i | 166 xvmc/shader/mc/read_field_x1y1_y_igd.g4i | 64 xvmc/shader/mc/read_frame_x0y0_uv.g4i | 73 xvmc/shader/mc/read_frame_x0y0_uv_igd.g4i | 28 xvmc/shader/mc/read_frame_x0y0_y.g4i | 109 xvmc/shader/mc/read_frame_x0y0_y_igd.g4i | 35 xvmc/shader/mc/read_frame_x0y1_uv.g4i | 79 xvmc/shader/mc/read_frame_x0y1_uv_igd.g4i | 44 xvmc/shader/mc/read_frame_x0y1_y.g4i | 113 xvmc/shader/mc/read_frame_x0y1_y_igd.g4i | 49 xvmc/shader/mc/read_frame_x1y0_uv.g4i | 75 xvmc/shader/mc/read_frame_x1y0_uv_igd.g4i | 41 xvmc/shader/mc/read_frame_x1y0_y.g4i | 110 xvmc/shader/mc/read_frame_x1y0_y_igd.g4i | 43 xvmc/shader/mc/read_frame_x1y1_uv.g4i | 159 xvmc/shader/mc/read_frame_x1y1_uv_igd.g4i | 71 xvmc/shader/mc/read_frame_x1y1_y.g4i | 264 xvmc/shader/mc/read_frame_x1y1_y_igd.g4i | 92 xvmc/shader/vld/Makefile.am | 74 xvmc/shader/vld/addidct.g4i | 152 xvmc/shader/vld/do_iq_intra.g4i | 64 xvmc/shader/vld/do_iq_non_intra.g4i | 59 xvmc/shader/vld/field_backward.g4a | 126 xvmc/shader/vld/field_backward.g4b | 553 + xvmc/shader/vld/field_backward.g4b.gen5 | 553 + xvmc/shader/vld/field_f_b.g4a | 213 xvmc/shader/vld/field_f_b.g4b | 1007 ++ xvmc/shader/vld/field_f_b.g4b.gen5 | 1007 ++ xvmc/shader/vld/field_forward.g4a | 130 xvmc/shader/vld/field_forward.g4b | 555 + xvmc/shader/vld/field_forward.g4b.gen5 | 555 + xvmc/shader/vld/frame_backward.g4a | 61 xvmc/shader/vld/frame_backward.g4b | 369 xvmc/shader/vld/frame_backward.g4b.gen5 | 369 xvmc/shader/vld/frame_f_b.g4a | 120 xvmc/shader/vld/frame_f_b.g4b | 675 + xvmc/shader/vld/frame_f_b.g4b.gen5 | 675 + xvmc/shader/vld/frame_forward.g4a | 61 xvmc/shader/vld/frame_forward.g4b | 369 xvmc/shader/vld/frame_forward.g4b.gen5 | 369 xvmc/shader/vld/idct.g4i | 147 xvmc/shader/vld/ipicture.g4a | 209 xvmc/shader/vld/ipicture.g4b | 313 xvmc/shader/vld/ipicture.g4b.gen5 | 313 xvmc/shader/vld/iq_intra.g4i | 131 xvmc/shader/vld/iq_non_intra.g4i | 150 xvmc/shader/vld/lib.g4a | 190 xvmc/shader/vld/lib.g4b | 307 xvmc/shader/vld/lib.g4b.gen5 | 307 xvmc/shader/vld/motion_field_uv.g4i | 46 xvmc/shader/vld/motion_field_y.g4i | 45 xvmc/shader/vld/motion_frame_uv.g4i | 45 xvmc/shader/vld/motion_frame_y.g4i | 57 xvmc/shader/vld/read_field_x0y0_uv.g4i | 50 xvmc/shader/vld/read_field_x0y0_y.g4i | 57 xvmc/shader/vld/read_field_x0y1_uv.g4i | 28 xvmc/shader/vld/read_field_x0y1_y.g4i | 60 xvmc/shader/vld/read_field_x1y0_uv.g4i | 24 xvmc/shader/vld/read_field_x1y0_y.g4i | 57 xvmc/shader/vld/read_field_x1y1_uv.g4i | 53 xvmc/shader/vld/read_field_x1y1_y.g4i | 87 xvmc/shader/vld/read_frame_x0y0_uv.g4i | 49 xvmc/shader/vld/read_frame_x0y0_y.g4i | 58 xvmc/shader/vld/read_frame_x0y1_uv.g4i | 56 xvmc/shader/vld/read_frame_x0y1_y.g4i | 61 xvmc/shader/vld/read_frame_x1y0_uv.g4i | 42 xvmc/shader/vld/read_frame_x1y0_y.g4i | 58 xvmc/shader/vld/read_frame_x1y1_uv.g4i | 74 xvmc/shader/vld/read_frame_x1y1_y.g4i | 112 xvmc/xvmc_vld.c | 1224 +++ 559 files changed, 139257 insertions(+), 98638 deletions(-)
New commits: commit 0cd154039ab02799dc972d93c415e762226df1aa Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Sun Aug 4 10:30:14 2013 +0100 2.21.14 release diff --git a/NEWS b/NEWS index a207c4e..728b6c4 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,21 @@ +Release 2.21.14 (2013-08-04) +============================ +A few updates for the top-end Haswell systems (notably GT3 and GT3e +systems), in particular, setting the appropriate thread counts for the +larger GPU and handling a few scaling issues with the emedded DRAM. More +important than the performance tuning though is a fix for a critical +issue encountered by a few people on gen4/gen5 systems. + + * Initial performance tuning for HSW:GT3e + + * Fix a crash with Planetary Annihilation + + * Disable triple buffering for compositors + + * Reserve space in the exec buffer array for deferred VBOs. + https://bugs.freedesktop.org/show_bug.cgi?id=67504 + + Release 2.21.13 (2013-07-27) ============================ A minor release to repair the build for non-Linux systems, and to undo a diff --git a/configure.ac b/configure.ac index d5705b9..104113e 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-intel], - [2.21.13], + [2.21.14], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-intel]) AC_CONFIG_SRCDIR([Makefile.am]) commit a5bf389908934aa4f9493a4a35b18e4aec9c8103 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Sat Aug 3 14:54:31 2013 +0100 sna: Mark the entire userptr proxy chain as flush/non-reusable Fixes cache bookkeepping when mixing userptr uploads. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 29a5dfc..8d59a2e 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -1909,6 +1909,7 @@ search_snoop_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags) assert(bo->refcnt == 0); assert(bo->snoop); assert(!bo->scanout); + assert(!bo->purged); assert(bo->proxy == NULL); assert(bo->tiling == I915_TILING_NONE); assert(bo->rq == NULL); diff --git a/src/sna/kgem.h b/src/sna/kgem.h index 95f0f7b..4ea8596 100644 --- a/src/sna/kgem.h +++ b/src/sna/kgem.h @@ -647,8 +647,11 @@ static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo) static inline void kgem_bo_mark_unreusable(struct kgem_bo *bo) { - while (bo->proxy) + while (bo->proxy) { + bo->flush = true; bo = bo->proxy; + } + bo->flush = true; bo->reusable = false; } diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 7fef4f2..040c009 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -874,9 +874,8 @@ fallback: sna_pixmap_destroy(pixmap); goto fallback; } - priv->cpu_bo->flush = true; priv->cpu_bo->pitch = pitch; - priv->cpu_bo->reusable = false; + kgem_bo_mark_unreusable(priv->cpu_bo); sna_accel_watch_flush(sna, 1); #ifdef DEBUG_MEMORY sna->debug_memory.cpu_bo_allocs++; @@ -4036,7 +4035,6 @@ try_upload_blt(PixmapPtr pixmap, RegionRec *region, if (src_bo == NULL) return false; - src_bo->flush = true; src_bo->pitch = stride; kgem_bo_mark_unreusable(src_bo); @@ -5300,7 +5298,6 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, src_pixmap->devKind * src_pixmap->drawable.height, true); if (src_bo) { - src_bo->flush = true; src_bo->pitch = src_pixmap->devKind; kgem_bo_mark_unreusable(src_bo); @@ -14512,7 +14509,6 @@ sna_get_image_blt(PixmapPtr pixmap, pitch * (region->extents.y2 - region->extents.y1), false); if (dst_bo) { - dst_bo->flush = true; dst_bo->pitch = pitch; kgem_bo_mark_unreusable(dst_bo); commit 5287660aafe45859c07874c22dca99c1ff5e555a Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Fri Aug 2 13:18:12 2013 +0100 sna: Reserve relocation entries for the deferred VBO Whilst we reserved exec entry slots for the deferred VBO, there were no relocation spaces reserved. So if we submitted a render command followed by a multitude of BLT copies, we could then overrun the relocation array when adding the deferred vbo to the batch. Reported-by: Danny <moondr...@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67504 Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/kgem.h b/src/sna/kgem.h index e726530..95f0f7b 100644 --- a/src/sna/kgem.h +++ b/src/sna/kgem.h @@ -211,8 +211,8 @@ struct kgem { uint16_t reloc__self[256]; uint32_t batch[64*1024-8] page_aligned; - struct drm_i915_gem_exec_object2 exec[256] page_aligned; - struct drm_i915_gem_relocation_entry reloc[4096] page_aligned; + struct drm_i915_gem_exec_object2 exec[384] page_aligned; + struct drm_i915_gem_relocation_entry reloc[8192] page_aligned; #ifdef DEBUG_MEMORY struct { @@ -222,9 +222,11 @@ struct kgem { #endif }; +#define KGEM_MAX_DEFERRED_VBO 16 + #define KGEM_BATCH_RESERVED 1 -#define KGEM_RELOC_RESERVED 4 -#define KGEM_EXEC_RESERVED 1 +#define KGEM_RELOC_RESERVED (KGEM_MAX_DEFERRED_VBO) +#define KGEM_EXEC_RESERVED (1+KGEM_MAX_DEFERRED_VBO) #ifndef ARRAY_SIZE #define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0])) commit 3f04b6f33f05f8a24698f934a23462269b84917d Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Thu Aug 1 14:49:36 2013 +0100 sna/dri: Disable TripleBuffering by default for compositors Ideally, the method of swapping is something that the applications have control over, along with how to synchronise to the vertical refresh. Whilst triple buffering is good to reduce jitter for games (at the cost of an extra frame of latency, usually considered a good tradeoff), it prevents the applications from accurately controlling the presentation of animations. One vocal critique is Owen Taylor, who demands accurate swap control for smooth animations in gnome-shell. For example, http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/ In lieu of application control, just apply a quirk for the compositor. Everyone else will just have to wait for DRI3. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/sna.h b/src/sna/sna.h index d0d2de4..abc8c5b 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -107,6 +107,17 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define SNA_CURSOR_X 64 #define SNA_CURSOR_Y SNA_CURSOR_X +struct sna_client { + int is_compositor; /* only 4 bits used */ +}; + +extern DevPrivateKeyRec sna_client_key; + +pure static inline struct sna_client *sna_client(ClientPtr client) +{ + return __get_private(client, sna_client_key); +} + struct sna_cow { struct kgem_bo *bo; struct list list; diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index a48c8d0..0083b52 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -48,6 +48,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include <xf86drm.h> #include <i915_drm.h> #include <dri2.h> +#include <compositeext.h> #if DRI2INFOREC_VERSION <= 2 #error DRI2 version supported by the Xserver is too old @@ -61,12 +62,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define COLOR_PREFER_TILING_Y 0 enum frame_event_type { + DRI2_WAITMSC = 0, DRI2_SWAP, DRI2_SWAP_WAIT, DRI2_SWAP_THROTTLE, DRI2_FLIP, DRI2_FLIP_THROTTLE, - DRI2_WAITMSC, }; struct sna_dri_frame_event { @@ -1118,11 +1119,6 @@ can_flip(struct sna * sna, return false; } - if (!get_private(front)->scanout) { - DBG(("%s: no, DRI2 drawable not attached at time of creation)\n", - __FUNCTION__)); - return false; - } assert(get_private(front)->pixmap == sna->front); assert(sna_pixmap(sna->front)->gpu_bo == get_private(front)->bo); @@ -1685,6 +1681,34 @@ get_current_msc_for_target(struct sna *sna, CARD64 target_msc, int pipe) return ret; } +static Bool find(pointer value, XID id, pointer cdata) +{ + return TRUE; +} + +static int use_triple_buffer(struct sna *sna, ClientPtr client) +{ + struct sna_client *priv; + + if ((sna->flags & SNA_TRIPLE_BUFFER) == 0) + return DRI2_FLIP; + + /* Hack: Disable triple buffering for compositors */ + +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,12,99,901,0) + priv = sna_client(client); + if (priv->is_compositor == 0) + priv->is_compositor = + LookupClientResourceComplex(client, + CompositeClientWindowType+1, + find, NULL) ? DRI2_FLIP : DRI2_FLIP_THROTTLE; + + return priv->is_compositor; +#else + return DRI2_FLIP_THROTTLE; +#endif +} + static bool sna_dri_schedule_flip(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front, DRI2BufferPtr back, int pipe, @@ -1707,8 +1731,7 @@ sna_dri_schedule_flip(ClientPtr client, DrawablePtr draw, DBG(("%s: performing immediate swap on pipe %d, pending? %d, mode: %d\n", __FUNCTION__, pipe, info != NULL, info ? info->mode : 0)); - if (info && - info->draw == draw) { + if (info && info->draw == draw) { assert(info->type == DRI2_FLIP_THROTTLE); assert(info->front == front); if (info->back != back) { @@ -1734,8 +1757,7 @@ sna_dri_schedule_flip(ClientPtr client, DrawablePtr draw, if (info == NULL) return false; - info->type = sna->flags & SNA_TRIPLE_BUFFER ? DRI2_FLIP_THROTTLE: DRI2_FLIP; - + info->type = use_triple_buffer(sna, client); info->draw = draw; info->client = client; info->event_complete = func; diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index 16dbc91..fc8773b 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -77,6 +77,7 @@ DevPrivateKeyRec sna_pixmap_key; DevPrivateKeyRec sna_gc_key; DevPrivateKeyRec sna_window_key; DevPrivateKeyRec sna_glyph_key; +DevPrivateKeyRec sna_client_key; static void sna_load_palette(ScrnInfoPtr scrn, int numColors, int *indices, @@ -788,6 +789,10 @@ sna_register_all_privates(void) if (!dixRegisterPrivateKey(&sna_window_key, PRIVATE_WINDOW, 3*sizeof(void *))) return FALSE; + + if (!dixRegisterPrivateKey(&sna_client_key, PRIVATE_CLIENT, + sizeof(struct sna_client))) + return FALSE; #else if (!dixRequestPrivate(&sna_pixmap_key, 3*sizeof(void *))) return FALSE; @@ -800,6 +805,9 @@ sna_register_all_privates(void) if (!dixRequestPrivate(&sna_window_key, 3*sizeof(void *))) return FALSE; + + if (!dixRequestPrivate(&sna_client_key, sizeof(struct sna_client))) + return FALSE; #endif return TRUE; commit 0ae07158c3550b418d3596cacda33a64ee653790 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Thu Aug 1 11:01:14 2013 +0100 sna: Add a few more details to the log for mode switching Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 17e2de1..f13b423 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -1386,6 +1386,17 @@ static char *outputs_for_crtc(xf86CrtcPtr crtc, char *outputs, int max) return outputs; } +static const char *rotation_to_str(Rotation rotation) +{ + switch (rotation) { + case RR_Rotate_0: return "normal"; + case RR_Rotate_90: return "right"; + case RR_Rotate_180: return "inverted"; + case RR_Rotate_270: return "left"; + default: return "unknown"; + } +} + static Bool sna_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int x, int y) @@ -1402,13 +1413,11 @@ sna_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, return FALSE; xf86DrvMsg(crtc->scrn->scrnIndex, X_INFO, - "switch to mode %dx%d on pipe %d using %s\n", - mode->HDisplay, mode->VDisplay, sna_crtc->pipe, - outputs_for_crtc(crtc, outputs, sizeof(outputs))); - - DBG(("%s(crtc=%d [pipe=%d] rotation=%d, x=%d, y=%d, mode=%dx%d@%d)\n", - __FUNCTION__, sna_crtc->id, sna_crtc->pipe, rotation, x, y, - mode->HDisplay, mode->VDisplay, mode->Clock)); + "switch to mode %dx%d@%.1f on pipe %d using %s, position (%d, %d), rotation %s\n", + mode->HDisplay, mode->VDisplay, xf86ModeVRefresh(mode), + sna_crtc->pipe, + outputs_for_crtc(crtc, outputs, sizeof(outputs)), + x, y, rotation_to_str(rotation)); assert(mode->HDisplay <= sna->mode.kmode->max_width && mode->VDisplay <= sna->mode.kmode->max_height); commit 246911d742569eed6675698c1e51032ba50917d3 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Thu Aug 1 10:52:44 2013 +0100 sna: Don't force inline string-ops for the general memcpy_blt routine As we need optimal copy code for the general case, where unlike swizzling the run lengths are not known before hand, we need to call the arch specific routines from glibc. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/blt.c b/src/sna/blt.c index 4a33093..4c27678 100644 --- a/src/sna/blt.c +++ b/src/sna/blt.c @@ -138,7 +138,7 @@ xmm_save_128(__m128i *dst, __m128i data) } #endif -fast_memcpy void +fast void memcpy_blt(const void *src, void *dst, int bpp, int32_t src_stride, int32_t dst_stride, int16_t src_x, int16_t src_y, @@ -202,6 +202,14 @@ memcpy_blt(const void *src, void *dst, int bpp, dst_bytes += dst_stride; } while (--height); break; + case 16: + do { + ((uint64_t *)dst_bytes)[0] = ((const uint64_t *)src_bytes)[0]; + ((uint64_t *)dst_bytes)[1] = ((const uint64_t *)src_bytes)[1]; + src_bytes += src_stride; + dst_bytes += dst_stride; + } while (--height); + break; default: do { diff --git a/src/sna/compiler.h b/src/sna/compiler.h index 9c1b2f1..2f5dfc7 100644 --- a/src/sna/compiler.h +++ b/src/sna/compiler.h @@ -66,6 +66,10 @@ #endif #if HAS_GCC(4, 6) && defined(__OPTIMIZE__) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1v8lqk-0002y8...@vasks.debian.org