diff options
author | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2011-10-10 17:43:39 +0200 |
commit | f4092abdf94af6a99aff944d6264bc1284e8bdd4 (patch) | |
tree | 2ac1c9cc16ceb93edb2c4382c088dac5aeafdf0f /nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_screen.c | |
parent | a840692edc9c6d19cd7c057f68e39c7d95eb767d (diff) | |
download | nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.gz nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.tar.bz2 nx-libs-f4092abdf94af6a99aff944d6264bc1284e8bdd4.zip |
Imported nx-X11-3.1.0-1.tar.gznx-X11/3.1.0-1
Summary: Imported nx-X11-3.1.0-1.tar.gz
Keywords:
Imported nx-X11-3.1.0-1.tar.gz
into Git repository
Diffstat (limited to 'nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_screen.c')
-rw-r--r-- | nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_screen.c | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_screen.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_screen.c new file mode 100644 index 000000000..f1810597e --- /dev/null +++ b/nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_screen.c @@ -0,0 +1,99 @@ +/* + * Author: Max Lingua <sunmax@libero.it> + */ + +#include "s3v_context.h" +#include "s3v_vb.h" +#include "s3v_dri.h" + +s3vScreenPtr s3vCreateScreen( __DRIscreenPrivate *sPriv ) +{ + s3vScreenPtr s3vScreen; + S3VDRIPtr vDRIPriv = (S3VDRIPtr)sPriv->pDevPriv; + +/* int i; */ + + DEBUG(("s3vCreateScreen\n")); + DEBUG(("sPriv->pDevPriv at %p\n", sPriv->pDevPriv)); + DEBUG(("size = %i\n", sizeof(*vDRIPriv))); + + if (sPriv->devPrivSize != sizeof(S3VDRIRec)) { + fprintf(stderr,"\nERROR! sizeof(S3VDRIRec) does not match passed size from device driver\n"); + return GL_FALSE; + } + + /* Allocate the private area */ + s3vScreen = (s3vScreenPtr) CALLOC( sizeof(*s3vScreen) ); + if ( !s3vScreen ) return NULL; + + s3vScreen->regionCount = 4; /* Magic number. Can we fix this? */ + + s3vScreen->regions = _mesa_malloc(s3vScreen->regionCount * + sizeof(s3vRegion)); + DEBUG(("sPriv->fd = %i\nvDRIPriv->dmaBufHandle = %x\n", + sPriv->fd, vDRIPriv->dmaBufHandle)); + + DEBUG(("vDRIPriv->dmaBufSize=%i\nvDRIPriv->dmaBuf=%p\n", + vDRIPriv->dmaBufSize, vDRIPriv->dmaBuf)); + + + /* Get the list of dma buffers */ + s3vScreen->bufs = drmMapBufs(sPriv->fd); + + if (!s3vScreen->bufs) { + DEBUG(("Helter/skelter with drmMapBufs\n")); + return GL_FALSE; + } + + s3vScreen->textureSize = vDRIPriv->texSize; + s3vScreen->logTextureGranularity = vDRIPriv->logTextureGranularity; + s3vScreen->cpp = vDRIPriv->cpp; + s3vScreen->frontOffset = vDRIPriv->frontOffset; + s3vScreen->frontPitch = vDRIPriv->frontPitch; + s3vScreen->backOffset = vDRIPriv->backOffset; + s3vScreen->backPitch = vDRIPriv->frontPitch; /* FIXME: check */ + s3vScreen->depthOffset = vDRIPriv->depthOffset; + s3vScreen->depthPitch = vDRIPriv->frontPitch; + s3vScreen->texOffset = vDRIPriv->texOffset; + + s3vScreen->driScreen = sPriv; + + DEBUG(("vDRIPriv->width =%i; vDRIPriv->deviceID =%x\n", vDRIPriv->width, + vDRIPriv->deviceID)); + DEBUG(("vDRIPriv->mem =%i\n", vDRIPriv->mem)); + DEBUG(("vDRIPriv->fbOffset =%i\n", vDRIPriv->fbOffset)); + DEBUG((" ps3vDRI->fbStride =%i\n", vDRIPriv->fbStride)); + DEBUG(("s3vScreen->cpp = %i\n", s3vScreen->cpp)); + DEBUG(("s3vScreen->backOffset = %x\n", s3vScreen->backOffset)); + DEBUG(("s3vScreen->depthOffset = %x\n", s3vScreen->depthOffset)); + DEBUG(("s3vScreen->texOffset = %x\n", s3vScreen->texOffset)); + DEBUG(("I will return from s3vCreateScreen now\n")); + + DEBUG(("s3vScreen->bufs = 0x%x\n", s3vScreen->bufs)); + return s3vScreen; +} + +/* Destroy the device specific screen private data struct. + */ +void s3vDestroyScreen( __DRIscreenPrivate *sPriv ) +{ + s3vScreenPtr s3vScreen = (s3vScreenPtr)sPriv->private; + + DEBUG(("s3vDestroyScreen\n")); + + /* First, unmap the dma buffers */ +/* + drmUnmapBufs( s3vScreen->bufs ); +*/ + /* Next, unmap all the regions */ +/* while (s3vScreen->regionCount > 0) { + + (void)drmUnmap(s3vScreen->regions[s3vScreen->regionCount].map, + s3vScreen->regions[s3vScreen->regionCount].size); + s3vScreen->regionCount--; + + } + FREE(s3vScreen->regions); */ + if (s3vScreen) + FREE(s3vScreen); +} |