⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s3v_screen.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
字号:
/* * 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);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -