summaryrefslogtreecommitdiff
path: root/linux-core/drmP.h
AgeCommit message (Expand)Author
2006-09-29Add support for tracking drawable information to coreMichel Dänzer
2006-09-29Add support for interrupt triggered driver callback with lock held to DRM core.Michel Dänzer
2006-09-29Add support for secondary vertical blank interrupt to DRM core.Michel Dänzer
2006-09-29Fix buffer manager takedown error.Thomas Hellstrom
2006-09-28Hook up DRM_IOCTL_UPDATE_DRAW ioctl.Michel Dänzer
2006-09-28Add support for tracking drawable information to coreMichel Dänzer
2006-09-28Add support for interrupt triggered driver callback with lock held to DRM core.Michel Dänzer
2006-09-28Add support for secondary vertical blank interrupt to DRM core.Michel Dänzer
2006-09-26Allow for a driver to overload the ttm backend object methods.Thomas Hellstrom
2006-09-25Add /proc filesystem buffer / fence object accounting.Thomas Hellstrom
2006-09-22bug 5942: add stubs for drm_mtrr_add/del for non-MTRR configured linuxFelix Kuhling
2006-09-20Allow for 64-bit map handles of ttms and buffer objects.Thomas Hellstrom
2006-09-18drm: put domain number back to 0, domain support is seriously fubar..Dave Airlie
2006-09-15Allow a "native type" to be associated with a fence sequence.Thomas Hellstrom
2006-09-15Some bugfixes.Thomas Hellstrom
2006-09-12More bugfixes.Thomas Hellstrom
2006-09-08Various bugfixes.Thomas Hellstrom
2006-09-06Put the PCI device/vendor id in the drm_device_t.Eric Anholt
2006-09-05Fence all unfenced buffers function.Thomas Hellstrom
2006-09-04Make memory caches global so that they can be used withThomas Hellstrom
2006-09-01Bugfixes,Thomas Hellstrom
2006-08-31Validation and fencing.Thomas Hellstrom
2006-08-31Remove the buffer manager mutex. Use dev->struct_mutex instead.Thomas Hellstrom
2006-08-31More mapping synchronization.Thomas Hellstrom
2006-08-30Buffer object binding.Thomas Hellstrom
2006-08-30Remove the buffer object hint field and use it onlyThomas Hellstrom
2006-08-30Memory manager init and takedown.Thomas Hellstrom
2006-08-30Buffer object reply fill in.Thomas Hellstrom
2006-08-29Checkpoint commit. Buffer object flags and IOCTL argument list.Thomas Hellstrom
2006-08-29Checkpoint ttm addition to buffer objects.Thomas Hellstrom
2006-08-2964-bit IOCTL integer (Michel Dänzer & Brian Paul)Thomas Hellstrom
2006-08-28Proper TTM dereferencingThomas Hellstrom
2006-08-28Buffer object idle and mapping synchronization.Thomas Hellstrom
2006-08-28Add a 64-bit drm unsigned type for 64-bit clean IOCTLS.Thomas Hellstrom
2006-08-28Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into drm-...Thomas Hellstrom
2006-08-28drm: lots of small cleanups and whitespace issues fixed upDave Airlie
2006-08-28remove local copies of pci domain/bus/slot/numDave Airlie
2006-08-27Have TTM create and reference ioctl call return the actual TTM size.Thomas Hellstrom
2006-08-27ttm create / destroy / ref / unref ioctl.Thomas Hellstrom
2006-08-25ttm and buffer objects ioctl stubs.Thomas Hellstrom
2006-08-25Checkpoint commitThomas Hellstrom
2006-08-22ttm code cleanup.Thomas Hellstrom
2006-08-22Add a fence object class field for future use (For example VSYNC fence objects)Thomas Hellstrom
2006-08-22AGP backends for TTM.Thomas Hellstrom
2006-08-22Bring in stripped TTM functionality.Thomas Hellstrom
2006-08-21Remove some accidently included TTM code.Thomas Hellstrom
2006-08-21Add missing fence type define.Thomas Hellstrom
2006-08-21User / Kernel space fence objects (device-independent part).Thomas Hellstrom
2006-08-21Generic DRM support base-class support for user-space objects, likeThomas Hellstrom
2006-07-24switch drm to use Linux mutexes instead of semaphore.Dave Airlie
pt">; /* Insert NOPS for NOUVEAU_DMA_SKIPS */ dchan->free -= NOUVEAU_DMA_SKIPS; dchan->push_free = NOUVEAU_DMA_SKIPS; for (i=0; i < NOUVEAU_DMA_SKIPS; i++) OUT_RING(0); /* NV_MEMORY_TO_MEMORY_FORMAT requires a notifier */ if ((ret = nouveau_notifier_alloc(dchan->chan, NvNotify0, 1, &dchan->notify0_offset))) { DRM_ERROR("Error allocating NvNotify0: %d\n", ret); return ret; } /* We use NV_MEMORY_TO_MEMORY_FORMAT for buffer moves */ if (dev_priv->card_type < NV_50) grclass = NV_MEMORY_TO_MEMORY_FORMAT; else grclass = NV50_MEMORY_TO_MEMORY_FORMAT; if ((ret = nouveau_gpuobj_gr_new(dchan->chan, grclass, &gpuobj))) { DRM_ERROR("Error creating NvM2MF: %d\n", ret); return ret; } if ((ret = nouveau_gpuobj_ref_add(dev, dchan->chan, NvM2MF, gpuobj, NULL))) { DRM_ERROR("Error referencing NvM2MF: %d\n", ret); return ret; } dchan->m2mf_dma_source = NvDmaFB; dchan->m2mf_dma_destin = NvDmaFB; BEGIN_RING(NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_NAME, 1); OUT_RING (NvM2MF); BEGIN_RING(NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_SET_DMA_NOTIFY, 1); OUT_RING (NvNotify0); BEGIN_RING(NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_SET_DMA_SOURCE, 2); OUT_RING (dchan->m2mf_dma_source); OUT_RING (dchan->m2mf_dma_destin); FIRE_RING(); return 0; } void nouveau_dma_channel_takedown(struct drm_device *dev) { struct drm_nouveau_private *dev_priv = dev->dev_private; struct nouveau_drm_channel *dchan = &dev_priv->channel; DRM_DEBUG("\n"); if (dchan->chan) { nouveau_fifo_free(dchan->chan); dchan->chan = NULL; } } #define READ_GET() ((NV_READ(dchan->chan->get) - \ dchan->chan->pushbuf_base) >> 2) #define WRITE_PUT(val) do { \ NV_WRITE(dchan->chan->put, \ ((val) << 2) + dchan->chan->pushbuf_base); \ } while(0) int nouveau_dma_wait(struct drm_device *dev, int size) { struct drm_nouveau_private *dev_priv = dev->dev_private; struct nouveau_drm_channel *dchan = &dev_priv->channel; uint32_t get; while (dchan->free < size) { get = READ_GET(); if (dchan->put >= get) { dchan->free = dchan->max - dchan->cur; if (dchan->free < size) { dchan->push_free = 1; OUT_RING(0x20000000|dchan->chan->pushbuf_base); if (get <= NOUVEAU_DMA_SKIPS) { /*corner case - will be idle*/ if (dchan->put <= NOUVEAU_DMA_SKIPS) WRITE_PUT(NOUVEAU_DMA_SKIPS + 1); do { get = READ_GET(); } while (get <= NOUVEAU_DMA_SKIPS); } WRITE_PUT(NOUVEAU_DMA_SKIPS); dchan->cur = dchan->put = NOUVEAU_DMA_SKIPS; dchan->free = get - (NOUVEAU_DMA_SKIPS + 1); } } else { dchan->free = get - dchan->cur - 1; } } return 0; }