xserver-xorg-video-intel: Changes to 'upstream-unstable'
.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 <chris@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 <chris@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 <chris@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 <chris@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 <moondrake@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67504
Signed-off-by: Chris Wilson <chris@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 <chris@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 <chris@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 <chris@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 <chris@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 <chris@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 <chris@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__)
Reply to: