libdrm: Changes to 'upstream-unstable'
.gitignore | 2
Makefile.am | 49
README | 85
bsd-core/Makefile | 11
bsd-core/ati_pcigart.c | 219
bsd-core/drm.h | 1
bsd-core/drm/Makefile | 41
bsd-core/drmP.h | 1019 -
bsd-core/drm_agpsupport.c | 466
bsd-core/drm_atomic.h | 88
bsd-core/drm_auth.c | 187
bsd-core/drm_bufs.c | 1110 -
bsd-core/drm_context.c | 320
bsd-core/drm_dma.c | 136
bsd-core/drm_drawable.c | 170
bsd-core/drm_drv.c | 839 -
bsd-core/drm_fops.c | 106
bsd-core/drm_internal.h | 1
bsd-core/drm_ioctl.c | 282
bsd-core/drm_irq.c | 499
bsd-core/drm_linux_list.h | 75
bsd-core/drm_lock.c | 191
bsd-core/drm_memory.c | 110
bsd-core/drm_mode.h | 1
bsd-core/drm_pci.c | 125
bsd-core/drm_sarea.h | 1
bsd-core/drm_scatter.c | 190
bsd-core/drm_sysctl.c | 312
bsd-core/drm_vm.c | 124
bsd-core/i915/Makefile | 23
bsd-core/i915_dma.c | 1
bsd-core/i915_drm.h | 1
bsd-core/i915_drv.c | 158
bsd-core/i915_drv.h | 1
bsd-core/i915_irq.c | 1
bsd-core/i915_mem.c | 1
bsd-core/i915_reg.h | 1
bsd-core/i915_suspend.c | 1
bsd-core/mach64/Makefile | 23
bsd-core/mach64_dma.c | 1
bsd-core/mach64_drm.h | 1
bsd-core/mach64_drv.c | 135
bsd-core/mach64_drv.h | 1
bsd-core/mach64_irq.c | 1
bsd-core/mach64_state.c | 1
bsd-core/mga/Makefile | 23
bsd-core/mga_dma.c | 1
bsd-core/mga_drm.h | 1
bsd-core/mga_drv.c | 172
bsd-core/mga_drv.h | 1
bsd-core/mga_irq.c | 1
bsd-core/mga_state.c | 1
bsd-core/mga_ucode.h | 1
bsd-core/mga_warp.c | 1
bsd-core/nouveau/@ | 1
bsd-core/nouveau/Makefile | 33
bsd-core/nouveau/machine | 1
bsd-core/nouveau_dma.c | 1
bsd-core/nouveau_dma.h | 1
bsd-core/nouveau_drm.h | 1
bsd-core/nouveau_drv.c | 148
bsd-core/nouveau_drv.h | 1
bsd-core/nouveau_fifo.c | 1
bsd-core/nouveau_irq.c | 1
bsd-core/nouveau_mem.c | 1
bsd-core/nouveau_notifier.c | 1
bsd-core/nouveau_object.c | 1
bsd-core/nouveau_reg.h | 1
bsd-core/nouveau_sgdma.c | 357
bsd-core/nouveau_state.c | 1
bsd-core/nouveau_swmthd.c | 1
bsd-core/nouveau_swmthd.h | 1
bsd-core/nv04_fb.c | 1
bsd-core/nv04_fifo.c | 1
bsd-core/nv04_graph.c | 1
bsd-core/nv04_instmem.c | 1
bsd-core/nv04_mc.c | 1
bsd-core/nv04_timer.c | 1
bsd-core/nv10_fb.c | 1
bsd-core/nv10_fifo.c | 1
bsd-core/nv10_graph.c | 1
bsd-core/nv20_graph.c | 1
bsd-core/nv40_fb.c | 1
bsd-core/nv40_fifo.c | 1
bsd-core/nv40_graph.c | 1
bsd-core/nv40_mc.c | 1
bsd-core/nv50_fifo.c | 1
bsd-core/nv50_graph.c | 1
bsd-core/nv50_grctx.h | 1
bsd-core/nv50_instmem.c | 1
bsd-core/nv50_mc.c | 1
bsd-core/r128/Makefile | 23
bsd-core/r128_cce.c | 1
bsd-core/r128_drm.h | 1
bsd-core/r128_drv.c | 133
bsd-core/r128_drv.h | 1
bsd-core/r128_irq.c | 1
bsd-core/r128_state.c | 1
bsd-core/r300_cmdbuf.c | 1
bsd-core/r300_reg.h | 1
bsd-core/radeon/Makefile | 28
bsd-core/radeon_cp.c | 1
bsd-core/radeon_drm.h | 1
bsd-core/radeon_drv.c | 132
bsd-core/radeon_drv.h | 1
bsd-core/radeon_irq.c | 1
bsd-core/radeon_mem.c | 1
bsd-core/radeon_microcode.h | 1
bsd-core/radeon_state.c | 1
bsd-core/savage/Makefile | 23
bsd-core/savage_bci.c | 1
bsd-core/savage_drm.h | 1
bsd-core/savage_drv.c | 118
bsd-core/savage_drv.h | 1
bsd-core/savage_state.c | 1
bsd-core/sis/Makefile | 23
bsd-core/sis_drm.h | 1
bsd-core/sis_drv.c | 112
bsd-core/sis_drv.h | 1
bsd-core/sis_ds.c | 1
bsd-core/sis_ds.h | 1
bsd-core/sis_mm.c | 1
bsd-core/tdfx/Makefile | 23
bsd-core/tdfx_drv.c | 114
bsd-core/tdfx_drv.h | 1
bsd-core/via/Makefile | 24
bsd-core/via_3d_reg.h | 1
bsd-core/via_dma.c | 1
bsd-core/via_drm.h | 1
bsd-core/via_drv.c | 121
bsd-core/via_drv.h | 1
bsd-core/via_ds.c | 1
bsd-core/via_ds.h | 1
bsd-core/via_irq.c | 1
bsd-core/via_map.c | 1
bsd-core/via_mm.c | 1
bsd-core/via_mm.h | 1
bsd-core/via_verifier.c | 1
bsd-core/via_verifier.h | 1
bsd-core/via_video.c | 1
configure.ac | 64
include/Makefile.am | 1
include/drm/Makefile.am | 38
include/drm/drm.h | 782 +
include/drm/drm_mode.h | 268
include/drm/drm_sarea.h | 82
include/drm/i810_drm.h | 281
include/drm/i830_drm.h | 342
include/drm/i915_drm.h | 760 +
include/drm/mach64_drm.h | 256
include/drm/mga_drm.h | 419
include/drm/nouveau_drm.h | 220
include/drm/r128_drm.h | 326
include/drm/radeon_drm.h | 911 +
include/drm/savage_drm.h | 210
include/drm/sis_drm.h | 67
include/drm/via_drm.h | 275
intel/Makefile.am | 50
intel/intel_atomic.h | 78
intel/intel_bufmgr.c | 244
intel/intel_bufmgr.h | 213
intel/intel_bufmgr_fake.c | 1610 ++
intel/intel_bufmgr_gem.c | 1823 +++
intel/intel_bufmgr_priv.h | 268
intel/intel_chipset.h | 77
intel/libdrm_intel.pc.in | 10
intel/mm.c | 271
intel/mm.h | 94
libdrm/ChangeLog | 20
libdrm/Makefile.am | 47
libdrm/TODO | 10
libdrm/intel/Makefile.am | 48
libdrm/intel/intel_atomic.h | 61
libdrm/intel/intel_bufmgr.c | 237
libdrm/intel/intel_bufmgr.h | 212
libdrm/intel/intel_bufmgr_fake.c | 1610 --
libdrm/intel/intel_bufmgr_gem.c | 1699 --
libdrm/intel/intel_bufmgr_priv.h | 254
libdrm/intel/intel_chipset.h | 77
libdrm/intel/mm.c | 271
libdrm/intel/mm.h | 94
libdrm/libdrm_lists.h | 89
libdrm/nouveau/Makefile.am | 39
libdrm/nouveau/libdrm_nouveau.pc.in | 10
libdrm/nouveau/nouveau_bo.c | 603 -
libdrm/nouveau/nouveau_bo.h | 109
libdrm/nouveau/nouveau_channel.c | 126
libdrm/nouveau/nouveau_channel.h | 56
libdrm/nouveau/nouveau_class.h | 8389 --------------
libdrm/nouveau/nouveau_device.c | 194
libdrm/nouveau/nouveau_device.h | 33
libdrm/nouveau/nouveau_drmif.h | 57
libdrm/nouveau/nouveau_grobj.c | 138
libdrm/nouveau/nouveau_grobj.h | 48
libdrm/nouveau/nouveau_notifier.c | 146
libdrm/nouveau/nouveau_notifier.h | 63
libdrm/nouveau/nouveau_private.h | 128
libdrm/nouveau/nouveau_pushbuf.c | 333
libdrm/nouveau/nouveau_pushbuf.h | 177
libdrm/nouveau/nouveau_resource.c | 115
libdrm/nouveau/nouveau_resource.h | 48
libdrm/radeon/Makefile.am | 54
libdrm/radeon/libdrm_radeon.pc.in | 10
libdrm/radeon/radeon_bo.h | 215
libdrm/radeon/radeon_bo_gem.c | 343
libdrm/radeon/radeon_bo_gem.h | 43
libdrm/radeon/radeon_cs.h | 246
libdrm/radeon/radeon_cs_gem.c | 457
libdrm/radeon/radeon_cs_gem.h | 41
libdrm/radeon/radeon_cs_space.c | 234
libdrm/radeon/radeon_track.c | 141
libdrm/radeon/radeon_track.h | 64
libdrm/xf86drm.c | 2512 ----
libdrm/xf86drm.h | 670 -
libdrm/xf86drmHash.c | 428
libdrm/xf86drmMode.c | 669 -
libdrm/xf86drmMode.h | 364
libdrm/xf86drmRandom.c | 208
libdrm/xf86drmSL.c | 480
libdrm/xf86mm.h | 198
libdrm_intel.pc.in | 10
libdrm_lists.h | 89
linux-core/.gitignore | 1
linux-core/Config.in | 17
linux-core/Doxyfile | 1161 -
linux-core/Kconfig | 83
linux-core/Makefile | 336
linux-core/Makefile.kernel | 63
linux-core/README.drm | 25
linux-core/ati_pcigart.c | 199
linux-core/drm-gem.txt | 805 -
linux-core/drm.h | 1
linux-core/drmP.h | 1480 --
linux-core/drm_agpsupport.c | 509
linux-core/drm_auth.c | 189
linux-core/drm_bufs.c | 1608 --
linux-core/drm_compat.c | 153
linux-core/drm_compat.h | 221
linux-core/drm_context.c | 472
linux-core/drm_core.h | 35
linux-core/drm_dma.c | 179
linux-core/drm_drawable.c | 192
linux-core/drm_drv.c | 655 -
linux-core/drm_fops.c | 497
linux-core/drm_gem.c | 444
linux-core/drm_hashtab.c | 202
linux-core/drm_hashtab.h | 67
linux-core/drm_internal.h | 1
linux-core/drm_ioc32.c | 1073 -
linux-core/drm_ioctl.c | 351
linux-core/drm_irq.c | 769 -
linux-core/drm_lock.c | 389
linux-core/drm_memory.c | 366
linux-core/drm_memory.h | 61
linux-core/drm_memory_debug.c | 399
linux-core/drm_memory_debug.h | 379
linux-core/drm_mm.c | 298
linux-core/drm_mode.h | 1
linux-core/drm_os_linux.h | 137
linux-core/drm_pci.c | 177
linux-core/drm_proc.c | 641 -
linux-core/drm_regman.c | 200
linux-core/drm_sarea.h | 1
linux-core/drm_scatter.c | 228
linux-core/drm_sman.c | 353
linux-core/drm_sman.h | 176
linux-core/drm_stub.c | 375
linux-core/drm_sysfs.c | 216
linux-core/drm_vm.c | 672 -
linux-core/drm_vm_nopage_compat.c | 267
linux-core/ffb_context.c | 582 -
linux-core/ffb_drv.c | 329
linux-core/ffb_drv.h | 284
linux-core/i810_dma.c | 1301 --
linux-core/i810_drm.h | 263
linux-core/i810_drv.c | 104
linux-core/i810_drv.h | 242
linux-core/imagine_drv.c | 85
linux-core/linux | 1
linux-core/mach64_dma.c | 1
linux-core/mach64_drm.h | 1
linux-core/mach64_drv.c | 105
linux-core/mach64_drv.h | 1
linux-core/mach64_irq.c | 1
linux-core/mach64_state.c | 1
linux-core/mga_dma.c | 1
linux-core/mga_drm.h | 1
linux-core/mga_drv.c | 152
linux-core/mga_drv.h | 1
linux-core/mga_ioc32.c | 234
linux-core/mga_irq.c | 1
linux-core/mga_state.c | 1
linux-core/mga_ucode.h | 1
linux-core/mga_warp.c | 1
linux-core/nouveau_backlight.c | 268
linux-core/nouveau_bo.c | 296
linux-core/nouveau_dma.c | 1
linux-core/nouveau_dma.h | 1
linux-core/nouveau_drm.h | 1
linux-core/nouveau_drv.c | 120
linux-core/nouveau_drv.h | 1
linux-core/nouveau_fence.c | 119
linux-core/nouveau_fifo.c | 1
linux-core/nouveau_ioc32.c | 72
linux-core/nouveau_irq.c | 1
linux-core/nouveau_mem.c | 1
linux-core/nouveau_notifier.c | 1
linux-core/nouveau_object.c | 1
linux-core/nouveau_reg.h | 1
linux-core/nouveau_sgdma.c | 345
linux-core/nouveau_state.c | 1
linux-core/nouveau_swmthd.c | 1
linux-core/nouveau_swmthd.h | 1
linux-core/nv04_fb.c | 1
linux-core/nv04_fifo.c | 1
linux-core/nv04_graph.c | 1
linux-core/nv04_instmem.c | 1
linux-core/nv04_mc.c | 1
linux-core/nv04_timer.c | 1
linux-core/nv10_fb.c | 1
linux-core/nv10_fifo.c | 1
linux-core/nv10_graph.c | 1
linux-core/nv20_graph.c | 1
linux-core/nv40_fb.c | 1
linux-core/nv40_fifo.c | 1
linux-core/nv40_graph.c | 1
linux-core/nv40_mc.c | 1
linux-core/nv50_fifo.c | 1
linux-core/nv50_graph.c | 1
linux-core/nv50_grctx.h | 1
linux-core/nv50_instmem.c | 1
linux-core/nv50_mc.c | 1
linux-core/r128_cce.c | 1
linux-core/r128_drm.h | 1
linux-core/r128_drv.c | 113
linux-core/r128_drv.h | 1
linux-core/r128_ioc32.c | 222
linux-core/r128_irq.c | 1
linux-core/r128_state.c | 1
linux-core/r300_cmdbuf.c | 1
linux-core/r300_reg.h | 1
linux-core/radeon_cp.c | 1
linux-core/radeon_drm.h | 1
linux-core/radeon_drv.c | 157
linux-core/radeon_drv.h | 1
linux-core/radeon_ioc32.c | 424
linux-core/radeon_irq.c | 1
linux-core/radeon_mem.c | 1
linux-core/radeon_microcode.h | 1
linux-core/radeon_state.c | 1
linux-core/savage_bci.c | 1
linux-core/savage_drm.h | 1
linux-core/savage_drv.c | 96
linux-core/savage_drv.h | 1
linux-core/savage_state.c | 1
linux-core/sis_drm.h | 1
linux-core/sis_drv.c | 127
linux-core/sis_drv.h | 1
linux-core/sis_mm.c | 332
linux-core/tdfx_drv.c | 93
linux-core/tdfx_drv.h | 1
linux-core/via_3d_reg.h | 1
linux-core/via_dma.c | 1
linux-core/via_dmablit.c | 817 -
linux-core/via_dmablit.h | 140
linux-core/via_drm.h | 1
linux-core/via_drv.c | 1
linux-core/via_drv.h | 1
linux-core/via_irq.c | 1
linux-core/via_map.c | 1
linux-core/via_mm.c | 196
linux-core/via_verifier.c | 1
linux-core/via_verifier.h | 1
linux-core/via_video.c | 1
linux-core/xgi_cmdlist.c | 325
linux-core/xgi_cmdlist.h | 66
linux-core/xgi_drm.h | 1
linux-core/xgi_drv.c | 430
linux-core/xgi_drv.h | 118
linux-core/xgi_fb.c | 130
linux-core/xgi_fence.c | 99
linux-core/xgi_ioc32.c | 140
linux-core/xgi_misc.c | 477
linux-core/xgi_misc.h | 37
linux-core/xgi_pcie.c | 127
linux-core/xgi_regs.h | 169
nouveau/Makefile.am | 40
nouveau/libdrm_nouveau.pc.in | 10
nouveau/nouveau_bo.c | 622 +
nouveau/nouveau_bo.h | 112
nouveau/nouveau_channel.c | 126
nouveau/nouveau_channel.h | 56
nouveau/nouveau_class.h | 8515 ++++++++++++++
nouveau/nouveau_device.c | 194
nouveau/nouveau_device.h | 33
nouveau/nouveau_drmif.h | 57
nouveau/nouveau_grobj.c | 138
nouveau/nouveau_grobj.h | 48
nouveau/nouveau_notifier.c | 146
nouveau/nouveau_notifier.h | 63
nouveau/nouveau_private.h | 133
nouveau/nouveau_pushbuf.c | 411
nouveau/nouveau_pushbuf.h | 196
nouveau/nouveau_resource.c | 115
nouveau/nouveau_resource.h | 48
radeon/Makefile.am | 54
radeon/libdrm_radeon.pc.in | 10
radeon/radeon_bo.h | 229
radeon/radeon_bo_gem.c | 343
radeon/radeon_bo_gem.h | 43
radeon/radeon_cs.h | 246
radeon/radeon_cs_gem.c | 458
radeon/radeon_cs_gem.h | 41
radeon/radeon_cs_space.c | 234
radeon/radeon_track.c | 141
radeon/radeon_track.h | 64
scripts/create_bsd_pci_lists.sh | 40
scripts/create_linux_pci_lists.sh | 40
scripts/create_lk_drm.sh | 37
scripts/create_lk_gpu.sh | 58
scripts/drm-scripts-gentree.pl | 254
shared-core/Makefile.am | 41
shared-core/drm.h | 859 -
shared-core/drm_internal.h | 40
shared-core/drm_mode.h | 273
shared-core/drm_pciids.txt | 594 -
shared-core/drm_sarea.h | 84
shared-core/i915_dma.c | 1030 -
shared-core/i915_drm.h | 746 -
shared-core/i915_drv.h | 667 -
shared-core/i915_irq.c | 534
shared-core/i915_mem.c | 386
shared-core/i915_reg.h | 1422 --
shared-core/i915_suspend.c | 520
shared-core/imagine_drv.h | 43
shared-core/mach64_dma.c | 1778 ---
shared-core/mach64_drm.h | 256
shared-core/mach64_drv.h | 860 -
shared-core/mach64_irq.c | 159
shared-core/mach64_state.c | 910 -
shared-core/mga_dma.c | 1169 --
shared-core/mga_drm.h | 425
shared-core/mga_drv.h | 691 -
shared-core/mga_irq.c | 177
shared-core/mga_state.c | 1139 -
shared-core/mga_ucode.h |11645 --------------------
shared-core/mga_warp.c | 198
shared-core/nouveau_dma.c | 173
shared-core/nouveau_dma.h | 96
shared-core/nouveau_drm.h | 216
shared-core/nouveau_drv.h | 626 -
shared-core/nouveau_fifo.c | 602 -
shared-core/nouveau_irq.c | 588 -
shared-core/nouveau_mem.c | 910 -
shared-core/nouveau_notifier.c | 165
shared-core/nouveau_object.c | 1173 --
shared-core/nouveau_reg.h | 601 -
shared-core/nouveau_state.c | 897 -
shared-core/nouveau_swmthd.c | 191
shared-core/nouveau_swmthd.h | 33
shared-core/nv04_fb.c | 23
shared-core/nv04_fifo.c | 138
shared-core/nv04_graph.c | 516
shared-core/nv04_instmem.c | 159
shared-core/nv04_mc.c | 22
shared-core/nv04_timer.c | 53
shared-core/nv10_fb.c | 25
shared-core/nv10_fifo.c | 169
shared-core/nv10_graph.c | 914 -
shared-core/nv20_graph.c | 913 -
shared-core/nv40_fb.c | 62
shared-core/nv40_fifo.c | 209
shared-core/nv40_graph.c | 2190 ---
shared-core/nv40_mc.c | 38
shared-core/nv50_fifo.c | 343
shared-core/nv50_graph.c | 338
shared-core/nv50_grctx.h |20935 ------------------------------------
shared-core/nv50_instmem.c | 331
shared-core/nv50_mc.c | 43
shared-core/r128_cce.c | 933 -
shared-core/r128_drm.h | 326
shared-core/r128_drv.h | 526
shared-core/r128_irq.c | 116
shared-core/r128_state.c | 1681 --
shared-core/r300_cmdbuf.c | 1198 --
shared-core/r300_reg.h | 1778 ---
shared-core/r600_microcode.h |14275 ------------------------
shared-core/radeon_cp.c | 1793 ---
shared-core/radeon_drm.h | 907 -
shared-core/radeon_drv.h | 1470 --
shared-core/radeon_irq.c | 415
shared-core/radeon_mem.c | 302
shared-core/radeon_microcode.h | 1844 ---
shared-core/radeon_state.c | 3263 -----
shared-core/savage_bci.c | 1092 -
shared-core/savage_drm.h | 209
shared-core/savage_drv.h | 575
shared-core/savage_state.c | 1165 --
shared-core/sis_drm.h | 67
shared-core/sis_drv.h | 90
shared-core/sis_ds.c | 299
shared-core/sis_ds.h | 146
shared-core/sis_mm.c | 386
shared-core/tdfx_drv.h | 47
shared-core/via_3d_reg.h | 1650 --
shared-core/via_dma.c | 763 -
shared-core/via_drm.h | 282
shared-core/via_drv.c | 117
shared-core/via_drv.h | 197
shared-core/via_ds.c | 274
shared-core/via_ds.h | 104
shared-core/via_irq.c | 402
shared-core/via_map.c | 139
shared-core/via_mm.c | 347
shared-core/via_mm.h | 40
shared-core/via_verifier.c | 1121 -
shared-core/via_verifier.h | 62
shared-core/via_video.c | 93
shared-core/xgi_drm.h | 137
tests/Makefile.am | 9
tests/modeprint/Makefile.am | 10
tests/modetest/Makefile.am | 10
tests/name_from_fd.c | 58
xf86drm.c | 2534 ++++
xf86drm.h | 716 +
xf86drmHash.c | 428
xf86drmMode.c | 712 +
xf86drmMode.h | 364
xf86drmRandom.c | 208
xf86drmSL.c | 480
xf86mm.h | 198
531 files changed, 28824 insertions(+), 160017 deletions(-)
New commits:
commit db50f5127421ac8f4e3ce4eb7c27d27475781488
Author: Kristian Høgsberg <krh@bitplanet.net>
Date: Thu Dec 3 11:31:27 2009 -0500
Bump to 2.4.16 for release
diff --git a/configure.ac b/configure.ac
index 39bc81e..b884220 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AC_PREREQ(2.60)
-AC_INIT([libdrm], 2.4.15, [dri-devel@lists.sourceforge.net], libdrm)
+AC_INIT([libdrm], 2.4.16, [dri-devel@lists.sourceforge.net], libdrm)
AC_USE_SYSTEM_EXTENSIONS
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2])
commit bef7f88de9a1f40ec82cfd4d80c73802c640e5ed
Author: Kristian Høgsberg <krh@bitplanet.net>
Date: Thu Dec 3 11:27:16 2009 -0500
Enable experimental APIs for distcheck
diff --git a/Makefile.am b/Makefile.am
index de8bfe0..41e5a34 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,6 +20,8 @@
AUTOMAKE_OPTIONS = foreign
+DISTCHECK_CONFIGURE_FLAGS = --enable-nouveau-experimental-api --enable-radeon-experimental-api
+
pkgconfigdir = @pkgconfigdir@
pkgconfig_DATA = libdrm.pc
commit 57473c7f523f476ffa54c34e0c6312ffa66dcc5c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Dec 2 13:36:22 2009 +0000
intel: Free memory before inserting bo into cache.
This has the unfortunate behaviour of releasing our malloc cache, but
the alternative is for X to consume a couple of gigabytes of ram and
die during testing. Fortunately the extra mallocs have little impact on
performance whereas avoiding swap and death, lots.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index ac7297b..571ab5c 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -727,9 +727,6 @@ drm_intel_gem_bo_free(drm_intel_bo *bo)
if (bo_gem->gtt_virtual)
munmap(bo_gem->gtt_virtual, bo_gem->bo.size);
- free(bo_gem->reloc_target_bo);
- free(bo_gem->relocs);
-
/* Close this object */
memset(&close, 0, sizeof(close));
close.handle = bo_gem->gem_handle;
@@ -788,6 +785,16 @@ drm_intel_gem_bo_unreference_final(drm_intel_bo *bo, time_t time)
DBG("bo_unreference final: %d (%s)\n",
bo_gem->gem_handle, bo_gem->name);
+ /* release memory associated with this object */
+ if (bo_gem->reloc_target_bo) {
+ free(bo_gem->reloc_target_bo);
+ bo_gem->reloc_target_bo = NULL;
+ }
+ if (bo_gem->relocs) {
+ free(bo_gem->relocs);
+ bo_gem->relocs = NULL;
+ }
+
bucket = drm_intel_gem_bo_bucket_for_size(bufmgr_gem, bo->size);
/* Put the buffer into our internal cache for reuse if we can. */
tiling_mode = I915_TILING_NONE;
commit 792fed1e2460f96459141b5a628dd5ab4fbb87db
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Dec 2 13:12:39 2009 +0000
intel: Check and propagate errors from building reloc-tree
Instead of forcing the caller to check after every emit_reloc(), we can
flag the object as being in error, propagating that error upwards through
the relocation tree, and failing the eventual batch buffer execution.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 239f36d..ac7297b 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -154,6 +154,11 @@ struct _drm_intel_bo_gem {
char used_as_reloc_target;
/**
+ * Boolean of whether we have encountered an error whilst building the relocation tree.
+ */
+ char has_error;
+
+ /**
* Boolean of whether this buffer can be re-used
*/
char reusable;
@@ -396,6 +401,17 @@ drm_intel_setup_reloc_list(drm_intel_bo *bo)
bo_gem->relocs = malloc(max_relocs *
sizeof(struct drm_i915_gem_relocation_entry));
bo_gem->reloc_target_bo = malloc(max_relocs * sizeof(drm_intel_bo *));
+ if (bo_gem->relocs == NULL || bo_gem->reloc_target_bo == NULL) {
+ bo_gem->has_error = 1;
+
+ free (bo_gem->relocs);
+ bo_gem->relocs = NULL;
+
+ free (bo_gem->reloc_target_bo);
+ bo_gem->reloc_target_bo = NULL;
+
+ return 1;
+ }
return 0;
}
@@ -564,6 +580,7 @@ retry:
bo_gem->validate_index = -1;
bo_gem->reloc_tree_fences = 0;
bo_gem->used_as_reloc_target = 0;
+ bo_gem->has_error = 0;
bo_gem->tiling_mode = I915_TILING_NONE;
bo_gem->swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
bo_gem->reusable = 1;
@@ -1178,10 +1195,22 @@ drm_intel_gem_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) target_bo;
pthread_mutex_lock(&bufmgr_gem->lock);
+ if (bo_gem->has_error) {
+ pthread_mutex_unlock(&bufmgr_gem->lock);
+ return -ENOMEM;
+ }
+
+ if (target_bo_gem->has_error) {
+ bo_gem->has_error = 1;
+ pthread_mutex_unlock(&bufmgr_gem->lock);
+ return -ENOMEM;
+ }
/* Create a new relocation list if needed */
- if (bo_gem->relocs == NULL)
- drm_intel_setup_reloc_list(bo);
+ if (bo_gem->relocs == NULL && drm_intel_setup_reloc_list(bo)) {
+ pthread_mutex_unlock(&bufmgr_gem->lock);
+ return -ENOMEM;
+ }
/* Check overflow */
assert(bo_gem->reloc_count < bufmgr_gem->max_relocs);
@@ -1268,9 +1297,13 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
drm_clip_rect_t * cliprects, int num_cliprects, int DR4)
{
drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr;
+ drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
struct drm_i915_gem_execbuffer execbuf;
int ret, i;
+ if (bo_gem->has_error)
+ return -ENOMEM;
+
pthread_mutex_lock(&bufmgr_gem->lock);
/* Update indices and set up the validate list. */
drm_intel_gem_bo_process_reloc(bo);
commit b73612e4fd69565aa2c5c2e9677f3e0af1945f7d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Dec 2 12:58:00 2009 +0000
intel: Repeat execbuffer after EINTR
EAGAIN cannot be raised by the current code, but the system call maybe
interrupted and so return EINTR.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index bb20f43..239f36d 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -1293,7 +1293,7 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
ret = ioctl(bufmgr_gem->fd,
DRM_IOCTL_I915_GEM_EXECBUFFER,
&execbuf);
- } while (ret != 0 && errno == EAGAIN);
+ } while (ret != 0 && errno == EINTR);
if (ret != 0) {
ret = -errno;
commit acb4aa671507aa181b3ff50ccf26a1c0d705a309
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Dec 2 12:40:26 2009 +0000
intel: Review use of errno.
Hitting this error lead to a segfault:
intel_bufmgr_gem.c:919: Error mapping buffer 48607 (pixmap):
Cannot allocate memory.
because the errno was reused as the function return value after being
reset by the fprintf(), so caller thought the mapping had succeeded. The
convention established by libdrm is that the return value is the
negative errno and that uses of libdrm cannot trust the value of errno
afterwards, but must use the return code.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index e9896e7..bb20f43 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -846,6 +846,7 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
&mmap_arg);
} while (ret == -1 && errno == EINTR);
if (ret != 0) {
+ ret = -errno;
fprintf(stderr,
"%s:%d: Error mapping buffer %d (%s): %s .\n",
__FILE__, __LINE__, bo_gem->gem_handle,
@@ -871,6 +872,7 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
&set_domain);
} while (ret == -1 && errno == EINTR);
if (ret != 0) {
+ ret = -errno;
fprintf(stderr, "%s:%d: Error setting to CPU domain %d: %s\n",
__FILE__, __LINE__, bo_gem->gem_handle,
strerror(errno));
@@ -909,6 +911,7 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
&mmap_arg);
} while (ret == -1 && errno == EINTR);
if (ret != 0) {
+ ret = -errno;
fprintf(stderr,
"%s:%d: Error preparing buffer map %d (%s): %s .\n",
__FILE__, __LINE__,
@@ -923,13 +926,14 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
MAP_SHARED, bufmgr_gem->fd,
mmap_arg.offset);
if (bo_gem->gtt_virtual == MAP_FAILED) {
+ ret = -errno;
fprintf(stderr,
"%s:%d: Error mapping buffer %d (%s): %s .\n",
__FILE__, __LINE__,
bo_gem->gem_handle, bo_gem->name,
strerror(errno));
pthread_mutex_unlock(&bufmgr_gem->lock);
- return errno;
+ return ret;
}
}
@@ -949,6 +953,7 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
} while (ret == -1 && errno == EINTR);
if (ret != 0) {
+ ret = -errno;
fprintf(stderr, "%s:%d: Error setting domain %d: %s\n",
__FILE__, __LINE__, bo_gem->gem_handle,
strerror(errno));
@@ -1077,12 +1082,13 @@ drm_intel_gem_bo_get_subdata(drm_intel_bo *bo, unsigned long offset,
&pread);
} while (ret == -1 && errno == EINTR);
if (ret != 0) {
+ ret = -errno;
fprintf(stderr,
"%s:%d: Error reading data from buffer %d: (%d %d) %s .\n",
__FILE__, __LINE__, bo_gem->gem_handle, (int)offset,
(int)size, strerror(errno));
}
- return 0;
+ return ret;
}
/** Waits for all GPU rendering to the object to have completed. */
@@ -1289,17 +1295,20 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
&execbuf);
} while (ret != 0 && errno == EAGAIN);
- if (ret != 0 && errno == ENOMEM) {
- fprintf(stderr,
- "Execbuffer fails to pin. "
- "Estimate: %u. Actual: %u. Available: %u\n",
- drm_intel_gem_estimate_batch_space(bufmgr_gem->exec_bos,
- bufmgr_gem->
- exec_count),
- drm_intel_gem_compute_batch_space(bufmgr_gem->exec_bos,
- bufmgr_gem->
- exec_count),
- (unsigned int)bufmgr_gem->gtt_size);
+ if (ret != 0) {
+ ret = -errno;
+ if (errno == ENOSPC) {
+ fprintf(stderr,
+ "Execbuffer fails to pin. "
+ "Estimate: %u. Actual: %u. Available: %u\n",
+ drm_intel_gem_estimate_batch_space(bufmgr_gem->exec_bos,
+ bufmgr_gem->
+ exec_count),
+ drm_intel_gem_compute_batch_space(bufmgr_gem->exec_bos,
+ bufmgr_gem->
+ exec_count),
+ (unsigned int)bufmgr_gem->gtt_size);
+ }
}
drm_intel_update_buffer_offsets(bufmgr_gem);
@@ -1317,7 +1326,7 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
bufmgr_gem->exec_count = 0;
pthread_mutex_unlock(&bufmgr_gem->lock);
- return 0;
+ return ret;
}
static int
@@ -1606,7 +1615,7 @@ drm_intel_gem_check_aperture_space(drm_intel_bo **bo_array, int count)
if (bufmgr_gem->available_fences) {
total_fences = drm_intel_gem_total_fences(bo_array, count);
if (total_fences > bufmgr_gem->available_fences)
- return -1;
+ return -ENOSPC;
}
total = drm_intel_gem_estimate_batch_space(bo_array, count);
@@ -1618,7 +1627,7 @@ drm_intel_gem_check_aperture_space(drm_intel_bo **bo_array, int count)
DBG("check_space: overflowed available aperture, "
"%dkb vs %dkb\n",
total / 1024, (int)bufmgr_gem->gtt_size / 1024);
- return -1;
+ return -ENOSPC;
} else {
DBG("drm_check_space: total %dkb vs bufgr %dkb\n", total / 1024,
(int)bufmgr_gem->gtt_size / 1024);
commit 9fec2a8cb28d814da4fdd97b25e9cc5c10768c87
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Dec 2 10:42:51 2009 +0000
intel: Make bo_reference() inline for internal use.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index cf3943c..e9896e7 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -304,7 +304,7 @@ drm_intel_gem_dump_validation_list(drm_intel_bufmgr_gem *bufmgr_gem)
}
}
-static void
+static inline void
drm_intel_gem_bo_reference(drm_intel_bo *bo)
{
drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
commit 9c8ad05e8bb1c954b804e40f2f975fed23c24550
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Dec 2 10:41:39 2009 +0000
intel: Remove the extra reference while validating the reloc tree
Buffers on the relocation tree are guarded by the reference to the batch
object and so do not need an extra reference whilst constructing the
list of execution buffer objects.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 3b4d3cf..cf3943c 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -187,7 +187,6 @@ static int
drm_intel_gem_bo_set_tiling(drm_intel_bo *bo, uint32_t * tiling_mode,
uint32_t stride);
-static void drm_intel_gem_bo_unreference_locked(drm_intel_bo *bo);
static void drm_intel_gem_bo_unreference_locked_timed(drm_intel_bo *bo,
time_t time);
@@ -357,7 +356,6 @@ drm_intel_add_validate_buffer(drm_intel_bo *bo)
bufmgr_gem->exec_objects[index].alignment = 0;
bufmgr_gem->exec_objects[index].offset = 0;
bufmgr_gem->exec_bos[index] = bo;
- drm_intel_gem_bo_reference(bo);
bufmgr_gem->exec_count++;
}
@@ -793,19 +791,6 @@ drm_intel_gem_bo_unreference_final(drm_intel_bo *bo, time_t time)
}
}
-static void drm_intel_gem_bo_unreference_locked(drm_intel_bo *bo)
-{
- drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
-
- assert(atomic_read(&bo_gem->refcount) > 0);
- if (atomic_dec_and_test(&bo_gem->refcount)) {
- struct timespec time;
-
- clock_gettime(CLOCK_MONOTONIC, &time);
- drm_intel_gem_bo_unreference_final(bo, time.tv_sec);
- }
-}
-
static void drm_intel_gem_bo_unreference_locked_timed(drm_intel_bo *bo,
time_t time)
{
@@ -1327,7 +1312,6 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used,
/* Disconnect the buffer from the validate list */
bo_gem->validate_index = -1;
- drm_intel_gem_bo_unreference_locked(bo);
bufmgr_gem->exec_bos[i] = NULL;
}
bufmgr_gem->exec_count = 0;
commit 8ffd2e142e38d19326a40ff66dc99d052ce22100
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Dec 1 13:08:04 2009 +0000
intel: Wrap a few more syscalls with EINTR protection
Having been bitten by a missing EINTR check during mmap_gtt(), I thought
it prudent to add some more protection around the ioctls.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 6a113a6..3b4d3cf 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -413,7 +413,9 @@ drm_intel_gem_bo_busy(drm_intel_bo *bo)
memset(&busy, 0, sizeof(busy));
busy.handle = bo_gem->gem_handle;
- ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
+ do {
+ ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
+ } while (ret == -1 && errno == EINTR);
return (ret == 0 && busy.busy);
}
@@ -545,7 +547,11 @@ retry:
memset(&create, 0, sizeof(create));
create.size = bo_size;
- ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_CREATE, &create);
+ do {
+ ret = ioctl(bufmgr_gem->fd,
Reply to: