Makefile.am | 7 NEWS | 152 + configure.ac | 591 +++- man/intel.man | 34 src/Makefile.am | 78 src/brw_defines.h | 881 ------- src/brw_structs.h | 1723 -------------- src/common.h | 73 src/compat-api.h | 4 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 | 1010 -------- src/i915_video.c | 486 ---- src/i965_3d.c | 443 --- src/i965_reg.h | 476 ---- src/i965_render.c | 2962 ------------------------ src/i965_video.c | 1939 ---------------- src/intel.h | 663 ----- src/intel_batchbuffer.c | 314 -- src/intel_batchbuffer.h | 226 - src/intel_device.c | 90 src/intel_display.c | 2124 ----------------- src/intel_dri.c | 1639 ------------- src/intel_driver.c | 1310 ----------- src/intel_driver.h | 239 -- src/intel_glamor.c | 254 -- src/intel_glamor.h | 67 src/intel_hwmc.c | 260 -- src/intel_hwmc.h | 75 src/intel_memory.c | 286 -- src/intel_module.c | 394 +-- src/intel_options.c | 5 src/intel_options.h | 4 src/intel_uxa.c | 1420 ----------- src/intel_video.c | 1776 -------------- src/intel_video.h | 95 src/legacy/Makefile.am | 2 src/legacy/i810/Makefile.am | 4 src/legacy/i810/i810_accel.c | 1 src/legacy/i810/i810_cursor.c | 1 src/legacy/i810/i810_dga.c | 1 src/legacy/i810/i810_dri.c | 3 src/legacy/i810/i810_driver.c | 1 src/legacy/i810/i810_hwmc.c | 1 src/legacy/i810/i810_memory.c | 1 src/legacy/i810/i810_video.c | 1 src/legacy/i810/i810_wmark.c | 1 src/legacy/i810/i810_xaa.c | 1 src/legacy/i810/xvmc/Makefile.am | 4 src/sna/Makefile.am | 7 src/sna/blt.c | 10 src/sna/brw/Makefile.am | 1 src/sna/compiler.h | 10 src/sna/fb/Makefile.am | 2 src/sna/fb/fbclip.c | 2 src/sna/fb/fbclip.h | 7 src/sna/fb/fbpict.h | 1 src/sna/gen2_render.c | 3 src/sna/gen3_render.c | 61 src/sna/gen4_render.c | 47 src/sna/gen4_vertex.c | 85 src/sna/gen5_render.c | 75 src/sna/gen6_render.c | 158 + src/sna/gen7_render.c | 280 +- src/sna/kgem.c | 675 +++-- src/sna/kgem.h | 48 src/sna/sna.h | 118 src/sna/sna_accel.c | 1695 +++++++++----- src/sna/sna_acpi.c | 223 + src/sna/sna_blt.c | 47 src/sna/sna_composite.c | 312 +- src/sna/sna_cpu.c | 20 src/sna/sna_cpuid.h | 86 src/sna/sna_damage.c | 10 src/sna/sna_damage.h | 13 src/sna/sna_display.c | 805 ++++-- src/sna/sna_display_fake.c | 199 + src/sna/sna_dri.c | 959 ++++---- src/sna/sna_driver.c | 283 +- src/sna/sna_glyphs.c | 538 +++- src/sna/sna_io.c | 158 - src/sna/sna_render.c | 116 src/sna/sna_render.h | 11 src/sna/sna_render_inline.h | 2 src/sna/sna_stream.c | 4 src/sna/sna_threads.c | 11 src/sna/sna_tiling.c | 30 src/sna/sna_trapezoids.c | 83 src/sna/sna_vertex.c | 4 src/sna/sna_video.c | 64 src/sna/sna_video.h | 40 src/sna/sna_video_hwmc.c | 4 src/sna/sna_video_overlay.c | 118 src/sna/sna_video_sprite.c | 132 - src/sna/sna_video_textured.c | 27 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 | 226 + src/uxa/i830_reg.h | 805 ++++++ src/uxa/i830_render.c | 877 +++++++ src/uxa/i915_3d.c | 111 src/uxa/i915_3d.h | 619 +++++ src/uxa/i915_reg.h | 844 +++++++ src/uxa/i915_render.c | 1011 ++++++++ src/uxa/i915_video.c | 487 ++++ src/uxa/i965_3d.c | 443 +++ src/uxa/i965_reg.h | 503 ++++ src/uxa/i965_render.c | 2963 +++++++++++++++++++++++++ src/uxa/i965_video.c | 1940 ++++++++++++++++ src/uxa/intel.h | 690 +++++ src/uxa/intel_batchbuffer.c | 315 ++ src/uxa/intel_batchbuffer.h | 226 + src/uxa/intel_display.c | 2133 +++++++++++++++++ src/uxa/intel_dri.c | 1649 +++++++++++++ src/uxa/intel_driver.c | 1315 +++++++++++ src/uxa/intel_glamor.c | 255 ++ src/uxa/intel_glamor.h | 67 src/uxa/intel_hwmc.c | 260 ++ src/uxa/intel_memory.c | 287 ++ src/uxa/intel_uxa.c | 1421 +++++++++++ src/uxa/intel_video.c | 1782 +++++++++++++++ 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 | 24 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 | 3 test/Makefile.am | 15 test/dri2-test.c | 234 + test/dri2.c | 3 test/virtual.conf | 36 tools/.gitignore | 1 tools/Makefile.am | 44 tools/intel-virtual-output.man | 27 tools/virtual.c | 2727 +++++++++++++++++++++++ uxa/Makefile.am | 23 uxa/uxa-accel.c | 1296 ---------- uxa/uxa-glamor.h | 65 uxa/uxa-glyphs.c | 1053 -------- uxa/uxa-priv.h | 440 --- uxa/uxa-render.c | 2074 ----------------- uxa/uxa-unaccel.c | 454 --- uxa/uxa.c | 590 ---- 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 ++++++++++ 486 files changed, 93195 insertions(+), 82494 deletions(-)
New commits: commit 36d142153b45f4c95d606d14bbbb51d8fdec5d2e Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Sat Sep 28 18:38:12 2013 +0100 2.99.903 snapshot diff --git a/NEWS b/NEWS index f716bc6..159c67c 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,41 @@ +Snapshot 2.99.903 (2013-09-28) +============================== +Lots more stabilization work, not yet peaceful enough to christen 3.0. We +have everything ranging from build fixes for systems like Suse Linux +Enterprise Desktop that like to backport hardware enablement to ancient +packages, to fixes for hardware enabling, and some more performance tuning. + + * Fix VSync on Haswell. + https://bugs.freedesktop.org/show_bug.cgi?id=69119 + + * Disable Y-tiling on gen4 - it too frequently leads to instability. + https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1222203 + + * Disable same EDID detection based on property id - the kernel likes + to reuse ids leading to a failure to detect the right modes on a monitor + change. + + * Avoid issuing multiple DPMS requests to the same encoder (alised to + multiple connectors) to avoid upsetting Haswell and leaving the + screens blank. + + * Honour the user preferrence for the initial mode, even if they are + being silly + https://bugzilla.novell.com/show_bug.cgi?id=841696 + + * Clear the clear hint when apply DRI updates - to prevent some + screenshots from GL windows being left blank. + https://bugs.freedesktop.org/show_bug.cgi?id=69730 + + * Prevent a NULL dereference from trying to undo an non-existent buffer + https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1228677 + + * Handle out-of-memory conditions far more gracefully. If the system is + hard against the memory wall, then the kernel will start issuing + SIGBUS even for CPU mmaps. Untrapped these will cause X to die. + https://bugs.freedesktop.org/show_bug.cgi?id=67889 + + Snapshot 2.99.902 (2013-09-07) ============================== We do not condone or support Canonical in the course of action they have diff --git a/configure.ac b/configure.ac index 7f4ba46..5484c86 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-intel], - [2.99.902], + [2.99.903], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-intel]) AC_CONFIG_SRCDIR([Makefile.am]) commit 2c67e9da5fc4c47f3f67082bd4adaf80d9e7399f Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Sat Sep 28 10:13:25 2013 +0100 sna: Avoid reads from a GTT mmapped upload buffer We now allow LLC machines to also use GTT upload buffers, so we need to be cache when scanning the cache to look for suitable buffers. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 2a5820c..4bd12f6 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -5658,7 +5658,7 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem, assert(bo->mmapped); assert(bo->mmapped == MMAPPED_GTT || kgem->has_llc || bo->base.snoop); - if (!kgem->has_llc && (bo->write & ~flags) & KGEM_BUFFER_INPLACE) { + if ((bo->write & ~flags) & KGEM_BUFFER_INPLACE && !bo->base.snoop) { DBG(("%s: skip write %x buffer, need %x\n", __FUNCTION__, bo->write, flags)); continue; commit 5a5f9b2812a04721f9dbd67552a39c278cdde18b Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Sat Sep 28 08:12:22 2013 +0100 sna: OsSigHandler expects 0 on handled Returning 0 from sigtrap_handler() when we wish to fallback to the core OsSigHandler was precisely the wrong thing to do. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index fd77164..6f56a9e 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -408,7 +408,7 @@ static int sigtrap_handler(int sig) siglongjmp(sigjmp, sig); } - return 0; + return -1; } static void sigtrap_init(void) commit 2893d2b51653cc254000454ad054cd9f0afb1291 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Fri Sep 27 19:52:30 2013 +0100 sna: Fix regression in picture extraction This is a little helper function, that just returns a bool, not the error code used by the render backends. Instead the caller tries an alternative method of extraction before giving up. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index 385a5fd..9ae8352 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -264,6 +264,8 @@ gen2_emit_texture(struct sna *sna, uint32_t texcoordtype; uint32_t filter; + assert(channel->bo); + if (channel->is_affine) texcoordtype = TEXCOORDTYPE_CARTESIAN; else @@ -2569,6 +2571,7 @@ gen2_render_composite_spans(struct sna *sna, case 1: break; } + assert(tmp->base.src.bo || tmp->base.src.is_solid); tmp->prim_emit = gen2_emit_composite_spans_primitive; tmp->base.floats_per_vertex = 3; diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index a009d3e..00a65a9 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -1148,8 +1148,8 @@ can_flip(struct sna * sna, pixmap = get_window_pixmap(win); if (pixmap != sna->front) { - DBG(("%s: no, window is not attached to the front buffer\n", - __FUNCTION__)); + DBG(("%s: no, window (pixmap=%ld) is not attached to the front buffer (pixmap=%ld)\n", + __FUNCTION__, pixmap->drawable.serialNumber, sna->front->drawable.serialNumber)); return false; } diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c index 73d53ba..c023629 100644 --- a/src/sna/sna_render.c +++ b/src/sna/sna_render.c @@ -897,8 +897,10 @@ sna_render_pixmap_partial(struct sna *sna, DBG(("%s (%d, %d)x(%d, %d), pitch %d, max %d\n", __FUNCTION__, x, y, w, h, bo->pitch, sna->render.max_3d_pitch)); - if (bo->pitch > sna->render.max_3d_pitch) + if (bo->pitch > sna->render.max_3d_pitch) { + DBG(("%s: pitch too great %d > %d\n", __FUNCTION__, bo->pitch, sna->render.max_3d_pitch)); return false; + } box.x1 = x; box.y1 = y; @@ -981,7 +983,7 @@ sna_render_pixmap_partial(struct sna *sna, return true; } -static int +static bool sna_render_picture_partial(struct sna *sna, PicturePtr picture, struct sna_composite_channel *channel, @@ -1033,14 +1035,14 @@ sna_render_picture_partial(struct sna *sna, priv = sna_pixmap_force_to_gpu(pixmap, MOVE_READ | MOVE_SOURCE_HINT); if (priv == NULL) - return 0; + return false; bo = priv->gpu_bo; } if (bo->pitch > sna->render.max_3d_pitch) { DBG(("%s: pitch too great %d > %d\n", __FUNCTION__, bo->pitch, sna->render.max_3d_pitch)); - return -1; + return false; } if (bo->tiling) { @@ -1076,14 +1078,14 @@ sna_render_picture_partial(struct sna *sna, if (w <= 0 || h <= 0 || w > sna->render.max_3d_size || h > sna->render.max_3d_size) - return 0; + return false; /* How many tiles across are we? */ channel->bo = kgem_create_proxy(&sna->kgem, bo, box.y1 * bo->pitch + offset, h * bo->pitch); if (channel->bo == NULL) - return 0; + return false; if (channel->transform) { memset(&channel->embedded_transform, @@ -1109,7 +1111,7 @@ sna_render_picture_partial(struct sna *sna, channel->scale[1] = 1.f/h; channel->width = w; channel->height = h; - return 1; + return true; } int commit 4c9265ebff496a4d4f974768e264bd65babff97e Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Fri Sep 27 10:46:40 2013 +0100 sna: Only flush the scanout if we successfully upload it to the GPU Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 9a6f50b..fd77164 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -15476,9 +15476,9 @@ static void sna_accel_flush(struct sna *sna) sna_accel_disarm_timer(sna, FLUSH_TIMER); sna->kgem.busy = busy; - if (priv) { - sna_pixmap_force_to_gpu(priv->pixmap, - MOVE_READ | MOVE_ASYNC_HINT); + if (priv && + sna_pixmap_force_to_gpu(priv->pixmap, + MOVE_READ | MOVE_ASYNC_HINT)) { kgem_scanout_flush(&sna->kgem, priv->gpu_bo); assert(!priv->cpu); } commit 47ac44159c0e3ea0c84510f1d58ac140344b5e69 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Fri Sep 27 10:19:47 2013 +0100 sna: Make sure we do not try to upload indirectly if the GPU is wedged Otherwise we trigger assertions and may end up with corruption. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/sna_io.c b/src/sna/sna_io.c index d66668c..0988d3d 100644 --- a/src/sna/sna_io.c +++ b/src/sna/sna_io.c @@ -729,6 +729,9 @@ bool sna_write_boxes(struct sna *sna, PixmapPtr dst, box, nbox)) return true; + if (wedged(sna)) + return false; + can_blt = kgem_bo_can_blt(kgem, dst_bo) && (box[0].x2 - box[0].x1) * dst->drawable.bitsPerPixel < 8 * (MAXSHORT - 4); extents = box[0]; commit 7206d0bb916fa69690a5f4fdcc5e7e81787c6c16 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Fri Sep 27 10:01:34 2013 +0100 sna: Disable the promotion of large bo as flush We can rely on our aperture and idleness tracking to appropriate flush batches. Marking the large bo as flush interferes with the treatment of flush for externally named bo, such as DRI/PRIME. Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 4a82d4a..2a5820c 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -4019,7 +4019,6 @@ struct kgem_bo *kgem_create_2d(struct kgem *kgem, assert(bo->pitch*kgem_aligned_height(kgem, height, bo->tiling) <= kgem_bo_size(bo)); assert_tiling(kgem, bo); bo->refcnt = 1; - bo->flush = true; return bo; } @@ -4387,12 +4386,6 @@ create: return NULL; } - if (bucket >= NUM_CACHE_BUCKETS) { - DBG(("%s: marking large bo for automatic flushing\n", - __FUNCTION__)); - bo->flush = true; - } - bo->unique_id = kgem_get_unique_id(kgem); if (tiling == I915_TILING_NONE || gem_set_tiling(kgem->fd, handle, tiling, pitch)) { commit 6ac1ac98c28d38b539f465c5ac488d879f1c2ab6 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Thu Sep 26 23:23:47 2013 +0000 sna: Catch SIGBUS to prevent X death We know that when we access either a CPU or GTT mmap we are vulernable to receiving a SIGBUS. In fact, we can catch these and abort the operation preventing X and all of its clients from randomly dieing. This helps for instance if you try and use a 1GiB frontbuffer on a 2GiB machine... For complete protection, we also need to catch signals for all GTT maps, such as VBO and staging buffers. (TBD) Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/src/sna/sna.h b/src/sna/sna.h index d389026..f7c5315 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -69,6 +69,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <libudev.h> #endif +#include <signal.h> +#include <setjmp.h> + #include "compiler.h" #if HAS_DEBUG_FULL @@ -973,4 +976,16 @@ void sna_image_composite(pixman_op_t op, uint16_t width, uint16_t height); +extern jmp_buf sigjmp; +extern volatile sig_atomic_t sigtrap; + +#define sigtrap_assert() assert(sigtrap == 0) +#define sigtrap_get() sigsetjmp(sigjmp, ++sigtrap) + +static inline void sigtrap_put(void) +{ + --sigtrap; + sigtrap_assert(); +} + #endif /* _SNA_H */ diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index d7a0828..9a6f50b 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -397,6 +397,25 @@ static void assert_pixmap_damage(PixmapPtr p) #endif #endif +jmp_buf sigjmp; +volatile sig_atomic_t sigtrap; + +static int sigtrap_handler(int sig) +{ + if (sigtrap) { + /* XXX rate-limited squawk? */ + sigtrap = 0; + siglongjmp(sigjmp, sig); + } + + return 0; +} + +static void sigtrap_init(void) +{ + OsRegisterSigWrapper(sigtrap_handler); +} + inline static bool sna_fill_init_blt(struct sna_fill_op *fill, struct sna *sna, @@ -1837,6 +1856,7 @@ _sna_pixmap_move_to_cpu(PixmapPtr pixmap, unsigned int flags) assert(flags & (MOVE_READ | MOVE_WRITE)); assert_pixmap_damage(pixmap); + sigtrap_assert(); priv = sna_pixmap(pixmap); if (priv == NULL) { @@ -2126,6 +2146,7 @@ done: assert(pixmap->devKind); assert_pixmap_damage(pixmap); assert(has_coherent_ptr(sna, sna_pixmap(pixmap))); + sigtrap_assert(); return true; } @@ -2256,6 +2277,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable, assert_drawable_contains_box(drawable, ®ion->extents); } assert(flags & (MOVE_WRITE | MOVE_READ)); + sigtrap_assert(); if (box_empty(®ion->extents)) return true; @@ -2744,6 +2766,7 @@ out: assert(pixmap->devKind); assert_pixmap_damage(pixmap); assert(has_coherent_ptr(sna, sna_pixmap(pixmap))); + sigtrap_assert(); return true; } @@ -2766,6 +2789,8 @@ sna_drawable_move_to_cpu(DrawablePtr drawable, unsigned flags) drawable->width, drawable->height, dx, dy, flags)); + sigtrap_assert(); + region.extents.x1 = drawable->x + dx; region.extents.y1 = drawable->y + dy; region.extents.x2 = region.extents.x1 + drawable->width; @@ -2841,6 +2866,7 @@ static inline struct sna_pixmap * sna_pixmap_mark_active(struct sna *sna, struct sna_pixmap *priv) { assert(priv->gpu_bo); + sigtrap_assert(); DBG(("%s: pixmap=%ld, handle=%u\n", __FUNCTION__, priv->pixmap->drawable.serialNumber, priv->gpu_bo->handle)); @@ -2889,6 +2915,8 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl __FUNCTION__, pixmap->drawable.serialNumber, box->x1, box->y1, box->x2, box->y2, flags)); + sigtrap_assert(); + priv = __sna_pixmap_for_gpu(sna, pixmap, flags); if (priv == NULL) return NULL; @@ -3606,6 +3634,8 @@ sna_pixmap_move_to_gpu(PixmapPtr pixmap, unsigned flags) pixmap->usage_hint, flags)); + sigtrap_assert(); + priv = __sna_pixmap_for_gpu(sna, pixmap, flags); if (priv == NULL) return NULL; @@ -3830,6 +3860,8 @@ static bool must_check sna_gc_move_to_cpu(GCPtr gc, DBG(("%s, changes=%lx\n", __FUNCTION__, changes)); + sigtrap_assert(); + assert(gc->ops == (GCOps *)&sna_gc_ops); gc->ops = (GCOps *)&sna_gc_ops__cpu; @@ -4091,12 +4123,16 @@ try_upload_blt(PixmapPtr pixmap, RegionRec *region, __FUNCTION__, x, y, w, h, RegionNumRects(region))); - ok = sna->render.copy_boxes(sna, GXcopy, - pixmap, src_bo, -x, -y, - pixmap, priv->gpu_bo, 0, 0, - RegionRects(region), - RegionNumRects(region), - COPY_LAST); + if (sigtrap_get() == 0) { + ok = sna->render.copy_boxes(sna, GXcopy, + pixmap, src_bo, -x, -y, + pixmap, priv->gpu_bo, 0, 0, + RegionRects(region), + RegionNumRects(region), + COPY_LAST); + sigtrap_put(); + } else + ok = false; kgem_bo_sync__cpu(&sna->kgem, src_bo); assert(src_bo->rq == NULL); @@ -4201,6 +4237,9 @@ try_upload_tiled_x(PixmapPtr pixmap, RegionRec *region, DBG(("%s: upload(%d, %d, %d, %d) x %d\n", __FUNCTION__, x, y, w, h, n)); + if (sigtrap_get()) + return false; + if (priv->gpu_bo->tiling) { do { memcpy_to_tiled_x(&sna->kgem, bits, dst, @@ -4223,6 +4262,8 @@ try_upload_tiled_x(PixmapPtr pixmap, RegionRec *region, -- 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/e1vr0rh-00023d...@vasks.debian.org