diff options
| author | Ben Skeggs <darktama@iinet.net.au> | 2006-11-21 14:03:06 +0000 | 
|---|---|---|
| committer | Ben Skeggs <darktama@iinet.net.au> | 2006-11-21 14:03:06 +0000 | 
| commit | a75440bcf04efb7a4840e9b0d1f0903b40b952bf (patch) | |
| tree | 0ff57d8ff2dcb2bed547b095b972f41985c49011 | |
| parent | fb6545070418820609a57f4dd975b41c93d499a9 (diff) | |
nouveauCreateDmaObject
| -rw-r--r-- | src/mesa/drivers/dri/nouveau/nouveau_context.c | 1 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/nouveau/nouveau_object.c | 37 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/nouveau/nouveau_object.h | 2 | 
3 files changed, 36 insertions, 4 deletions
| diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index a2ac056010..d3fbdab9f3 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -45,6 +45,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.  #include "nouveau_object.h"  #include "nouveau_fifo.h"  #include "nouveau_tex.h" +#include "nouveau_msg.h"  #include "nv10_swtcl.h"  #include "vblank.h" diff --git a/src/mesa/drivers/dri/nouveau/nouveau_object.c b/src/mesa/drivers/dri/nouveau/nouveau_object.c index 9003fb1eae..fe3b44df69 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_object.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_object.c @@ -3,8 +3,7 @@  #include "nouveau_object.h" -static GLboolean NVDmaCreateContextObject(nouveauContextPtr nmesa, int handle, int class, uint32_t flags, -			      uint32_t dma_in, uint32_t dma_out, uint32_t dma_notifier) +static GLboolean nouveauCreateContextObject(nouveauContextPtr nmesa, int handle, int class, uint32_t flags, uint32_t dma_in, uint32_t dma_out, uint32_t dma_notifier)  {  	drm_nouveau_object_init_t cto;  	int ret; @@ -20,7 +19,27 @@ static GLboolean NVDmaCreateContextObject(nouveauContextPtr nmesa, int handle, i  	return ret == 0;  } -static void nouveauObjectOnSubchannel(nouveauContextPtr nmesa, int handle, int subchannel) +static GLboolean nouveauCreateDmaObject(nouveauContextPtr nmesa, +      					uint32_t handle, +      					uint32_t offset, +					uint32_t size, +					int	 target, +					int	 access) +{ +	drm_nouveau_dma_object_init_t dma; +	int ret; + +	dma.handle = handle; +	dma.target = target; +	dma.access = access; +	dma.offset = offset; +	dma.handle = handle; +	ret = drmCommandWriteRead(nmesa->driFd, DRM_NOUVEAU_DMA_OBJECT_INIT, +				  &dma, sizeof(dma)); +	return ret == 0; +} + +void nouveauObjectOnSubchannel(nouveauContextPtr nmesa, int subchannel, int handle)  {  	BEGIN_RING_SIZE(subchannel, 0, 1);  	OUT_RING(handle); @@ -28,8 +47,18 @@ static void nouveauObjectOnSubchannel(nouveauContextPtr nmesa, int handle, int s  void nouveauObjectInit(nouveauContextPtr nmesa)  { -	NVDmaCreateContextObject(nmesa, Nv3D, nmesa->screen->card->class_3d, 0, 0, 0, 0); +#ifdef NOUVEAU_RING_DEBUG +	return; +#endif + +	nouveauCreateContextObject(nmesa, Nv3D, nmesa->screen->card->class_3d, 0, 0, 0, 0);  	nouveauObjectOnSubchannel(nmesa, NvSub3D, Nv3D); +/* We need to know vram size.. */ +#if 0	 +	nouveauCreateDmaObject( nmesa, NvDmaFB, +				0, (256*1024*1024), +				0 /*NV_DMA_TARGET_FB*/, 0 /*NV_DMA_ACCESS_RW*/); +#endif  } diff --git a/src/mesa/drivers/dri/nouveau/nouveau_object.h b/src/mesa/drivers/dri/nouveau/nouveau_object.h index e9a30d127a..8386f923c3 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_object.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_object.h @@ -7,10 +7,12 @@ void nouveauObjectInit(nouveauContextPtr nmesa);  enum DMAObjects {  	Nv3D                    = 0x80000019, +	NvDmaFB			= 0xD0FB0001  };  enum DMASubchannel {  	NvSub3D		= 7,  }; +extern void nouveauObjectOnSubchannel(nouveauContextPtr nmesa, int subchannel, int handle);  #endif | 
