mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
Push a number of global variables into the viaContext struct.
Remove the bogus 'current_vmesa' pointer.
This commit is contained in:
parent
1d27084043
commit
302c5694c6
5 changed files with 65 additions and 60 deletions
|
|
@ -65,7 +65,6 @@
|
|||
#include "vblank.h"
|
||||
#include "utils.h"
|
||||
|
||||
viaContextPtr current_mesa;
|
||||
#ifdef DEBUG
|
||||
GLuint VIA_DEBUG = 0;
|
||||
#endif
|
||||
|
|
@ -78,7 +77,6 @@ GLuint idle = 0;
|
|||
hash_element hash_table[HASH_TABLE_SIZE][HASH_TABLE_DEPTH];
|
||||
#endif
|
||||
/*=* John Sheng [2003.5.31] agp tex *=*/
|
||||
extern GLuint agpFullCount;
|
||||
|
||||
static GLboolean
|
||||
AllocateBuffer(viaContextPtr vmesa)
|
||||
|
|
@ -204,7 +202,8 @@ calculate_buffer_parameters( viaContextPtr vmesa )
|
|||
+ extra;
|
||||
vmesa->back.size = vmesa->back.pitch * vmesa->driDrawable->h;
|
||||
|
||||
if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent backbuffer: w = %d h = %d bpp = %d sizs = %d\n",
|
||||
if (VIA_DEBUG) fprintf(stderr, "%s backbuffer: w = %d h = %d bpp = %d sizs = %d\n",
|
||||
__FUNCTION__,
|
||||
vmesa->back.pitch,
|
||||
vmesa->driDrawable->h,
|
||||
8 << shift,
|
||||
|
|
@ -224,7 +223,8 @@ calculate_buffer_parameters( viaContextPtr vmesa )
|
|||
(void) memset( & vmesa->depth, 0, sizeof( vmesa->depth ) );
|
||||
}
|
||||
|
||||
if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent depthbuffer: w = %d h = %d bpp = %d sizs = %d\n",
|
||||
if (VIA_DEBUG) fprintf(stderr, "%s depthbuffer: w = %d h = %d bpp = %d sizs = %d\n",
|
||||
__FUNCTION__,
|
||||
vmesa->depth.pitch,
|
||||
vmesa->driDrawable->h,
|
||||
vmesa->depth.bpp,
|
||||
|
|
@ -254,10 +254,9 @@ calculate_buffer_parameters( viaContextPtr vmesa )
|
|||
|
||||
void viaReAllocateBuffers(GLframebuffer *drawbuffer)
|
||||
{
|
||||
GLcontext *ctx;
|
||||
viaContextPtr vmesa = current_mesa;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
viaContextPtr vmesa = VIA_CONTEXT(ctx);
|
||||
|
||||
ctx = vmesa->glCtx;
|
||||
ctx->DrawBuffer->Width = drawbuffer->Width;
|
||||
ctx->DrawBuffer->Height = drawbuffer->Height;
|
||||
|
||||
|
|
@ -273,11 +272,11 @@ void viaReAllocateBuffers(GLframebuffer *drawbuffer)
|
|||
|
||||
if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);
|
||||
}
|
||||
static void viaBufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height)
|
||||
|
||||
{
|
||||
/* MESA5.0 */
|
||||
viaContextPtr vmesa = current_mesa;
|
||||
static void viaBufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
viaContextPtr vmesa = VIA_CONTEXT(ctx);
|
||||
*width = vmesa->driDrawable->w;
|
||||
*height = vmesa->driDrawable->h;
|
||||
}
|
||||
|
|
@ -406,7 +405,6 @@ viaCreateContext(const __GLcontextModes *mesaVis,
|
|||
driParseConfigFiles (&vmesa->optionCache, &viaScreen->optionCache,
|
||||
sPriv->myNum, "via");
|
||||
|
||||
current_mesa = vmesa;
|
||||
/* pick back buffer */
|
||||
if (mesaVis->doubleBufferMode) {
|
||||
vmesa->hasBack = GL_TRUE;
|
||||
|
|
@ -657,12 +655,12 @@ viaDestroyContext(__DRIcontextPrivate *driContextPriv)
|
|||
viaContextPtr vmesa = (viaContextPtr)driContextPriv->driverPrivate;
|
||||
if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
|
||||
assert(vmesa); /* should never be null */
|
||||
viaFlushPrimsLocked(vmesa);
|
||||
/* viaFlushPrimsLocked(vmesa); */
|
||||
WAIT_IDLE
|
||||
|
||||
if (vmesa) {
|
||||
/*=* John Sheng [2003.5.31] agp tex *=*/
|
||||
if(VIA_DEBUG) fprintf(stderr, "agpFullCount = %d\n", agpFullCount);
|
||||
if(VIA_DEBUG) fprintf(stderr, "agpFullCount = %d\n", vmesa->agpFullCount);
|
||||
|
||||
_swsetup_DestroyContext(vmesa->glCtx);
|
||||
_tnl_DestroyContext(vmesa->glCtx);
|
||||
|
|
@ -927,8 +925,6 @@ viaMakeCurrent(__DRIcontextPrivate *driContextPriv,
|
|||
if (driContextPriv) {
|
||||
viaContextPtr vmesa = (viaContextPtr)driContextPriv->driverPrivate;
|
||||
|
||||
current_mesa = vmesa;
|
||||
|
||||
if (VIA_DEBUG) fprintf(stderr, "viaMakeCurrent: w = %d\n", vmesa->driDrawable->w);
|
||||
|
||||
if ( vmesa->driDrawable != driDrawPriv ) {
|
||||
|
|
@ -963,8 +959,13 @@ void viaGetLock(viaContextPtr vmesa, GLuint flags)
|
|||
__DRIscreenPrivate *psp;
|
||||
pdp = dPriv;
|
||||
psp = sPriv;
|
||||
if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
|
||||
if (VIA_DEBUG) fprintf(stderr, "drmGetLock - in\n");
|
||||
if (VIA_DEBUG) {
|
||||
fprintf(stderr, "%s - in\n", __FUNCTION__);
|
||||
fprintf(stderr, "is: %x non-contend: %x want: %x\n",
|
||||
*(GLuint *)vmesa->driHwLock, vmesa->hHWContext,
|
||||
(DRM_LOCK_HELD|vmesa->hHWContext));
|
||||
}
|
||||
|
||||
drmGetLock(vmesa->driFd, vmesa->hHWContext, flags);
|
||||
|
||||
DRI_VALIDATE_DRAWABLE_INFO( sPriv, dPriv );
|
||||
|
|
@ -972,11 +973,7 @@ void viaGetLock(viaContextPtr vmesa, GLuint flags)
|
|||
if (sarea->ctxOwner != me) {
|
||||
vmesa->uploadCliprects = GL_TRUE;
|
||||
sarea->ctxOwner = me;
|
||||
vmesa->dirty |= (VIA_UPLOAD_CTX |
|
||||
VIA_UPLOAD_BUFFERS |
|
||||
VIA_UPLOAD_TEX0 |
|
||||
VIA_UPLOAD_TEX1 |
|
||||
VIA_UPLOAD_CLIPRECTS);
|
||||
vmesa->needUploadAllState = 1;
|
||||
}
|
||||
|
||||
viaXMesaWindowMoved(vmesa);
|
||||
|
|
|
|||
|
|
@ -292,6 +292,9 @@ struct via_context_t {
|
|||
GLuint* agpBase;
|
||||
GLuint drawType;
|
||||
|
||||
GLuint nDoneFirstFlip;
|
||||
GLuint agpFullCount;
|
||||
|
||||
/* Configuration cache
|
||||
*/
|
||||
driOptionCache optionCache;
|
||||
|
|
|
|||
|
|
@ -77,11 +77,7 @@ v * copy of this software and associated documentation files (the "Software"),
|
|||
typedef enum {VIABLIT_TRANSCOPY, VIABLIT_COPY, VIABLIT_FILL} ViaBlitOps;
|
||||
|
||||
|
||||
GLuint FrameCount = 0;
|
||||
GLuint dmaLow = 0;
|
||||
/*=* John Sheng [2003.5.31] flip *=*/
|
||||
GLuint nFirstSwap = GL_TRUE;
|
||||
GLuint nFirstFlip = GL_TRUE;
|
||||
#define SetReg2DAGP(nReg, nData) { \
|
||||
*((GLuint *)(vb)) = ((nReg) >> 2) | 0xF0000000; \
|
||||
*((GLuint *)(vb) + 1) = (nData); \
|
||||
|
|
@ -475,10 +471,10 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
|
|||
}
|
||||
SetReg2DAGP(0x214, nBackBase);
|
||||
viaFlushPrimsLocked(vmesa);*/
|
||||
if (nFirstFlip) {
|
||||
if (!vmesa->nDoneFirstFlip) {
|
||||
*((volatile GLuint *)((GLuint)vmesa->regMMIOBase + 0x43c)) = 0x00fe0000;
|
||||
*((volatile GLuint *)((GLuint)vmesa->regMMIOBase + 0x440)) = 0x00001004;
|
||||
nFirstFlip = GL_FALSE;
|
||||
vmesa->nDoneFirstFlip = GL_TRUE;
|
||||
}
|
||||
*((GLuint *)((GLuint)vmesa->regMMIOBase + 0x214)) = nBackBase;
|
||||
}
|
||||
|
|
@ -486,14 +482,14 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
|
|||
else {
|
||||
viaFlushPrimsLocked(vmesa);
|
||||
vb = viaCheckDma(vmesa, 8 * 4);
|
||||
if (nFirstFlip) {
|
||||
if (!vmesa->nDoneFirstFlip) {
|
||||
*vb++ = HALCYON_HEADER2;
|
||||
*vb++ = 0x00fe0000;
|
||||
*vb++ = 0x0000000e;
|
||||
*vb++ = 0x0000000e;
|
||||
vmesa->dmaLow += 16;
|
||||
|
||||
nFirstFlip = GL_FALSE;
|
||||
vmesa->nDoneFirstFlip = GL_FALSE;
|
||||
}
|
||||
nBackBase = (vmesa->back.offset );
|
||||
|
||||
|
|
@ -580,6 +576,10 @@ void viaFlushPrimsLocked(viaContextPtr vmesa)
|
|||
GLuint *vb = viaCheckDma(vmesa, 0);
|
||||
int i;
|
||||
|
||||
if (*(GLuint *)vmesa->driHwLock != (DRM_LOCK_HELD|vmesa->hHWContext) &&
|
||||
*(GLuint *)vmesa->driHwLock != (DRM_LOCK_HELD|DRM_LOCK_CONT|vmesa->hHWContext))
|
||||
fprintf(stderr, "%s called without lock held\n", __FUNCTION__);
|
||||
|
||||
if (vmesa->dmaLow == DMA_OFFSET) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -635,20 +635,7 @@ void viaFlushPrimsLocked(viaContextPtr vmesa)
|
|||
else if (nbox > VIA_NR_SAREA_CLIPRECTS) {
|
||||
vmesa->uploadCliprects = GL_TRUE;
|
||||
}
|
||||
/*=* John Sheng [2003.5.31] flip *=*/
|
||||
/*
|
||||
if (VIA_DEBUG) {
|
||||
GLuint i;
|
||||
GLuint *data = (GLuint *)vmesa->dmaAddr;
|
||||
for (i = 0; i < vmesa->dmaLow; i += 16) {
|
||||
fprintf(stderr, "%08x ", *data++);
|
||||
fprintf(stderr, "%08x ", *data++);
|
||||
fprintf(stderr, "%08x ", *data++);
|
||||
fprintf(stderr, "%08x\n", *data++);
|
||||
}
|
||||
fprintf(stderr, "******************************************\n");
|
||||
}
|
||||
*/
|
||||
|
||||
if (!nbox || !vmesa->uploadCliprects) {
|
||||
if (nbox == 1)
|
||||
sarea->nbox = 0;
|
||||
|
|
@ -1294,7 +1281,6 @@ void viaDoSwapPBuffers(viaContextPtr vmesa)
|
|||
#define VIA_CMDBUF_MAX_LAG 50000
|
||||
|
||||
int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf)
|
||||
|
||||
{
|
||||
GLuint *pnBuf;
|
||||
GLuint *pnEnd;
|
||||
|
|
@ -1372,15 +1358,24 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf)
|
|||
bSiz.size = VIA_CMDBUF_MAX_LAG;
|
||||
while ( -EAGAIN == (ret = drmCommandWriteRead(vmesa->driFd, DRM_VIA_CMDBUF_SIZE,
|
||||
&bSiz, sizeof(bSiz))));
|
||||
if (ret)
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, "viaCommandBufferLag");
|
||||
if (ret) {
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, __FUNCTION__);
|
||||
abort();
|
||||
}
|
||||
while ( -EAGAIN == (ret = drmCommandWrite(vmesa->driFd, DRM_VIA_CMDBUFFER,
|
||||
&bufI, sizeof(bufI))));
|
||||
if (ret) {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
if (ret) {
|
||||
if (vmesa->useAgp) WAIT_IDLE;
|
||||
|
||||
/* for (i = 0; */
|
||||
|
||||
if (drmCommandWrite(vmesa->driFd, DRM_VIA_PCICMD, &bufI, sizeof(bufI))) {
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, "viaCommandBufferFlush");
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, __FUNCTION__);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1450,16 +1445,22 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf)
|
|||
bSiz.size = VIA_CMDBUF_MAX_LAG;
|
||||
while ( -EAGAIN == (ret = drmCommandWriteRead(vmesa->driFd, DRM_VIA_CMDBUF_SIZE,
|
||||
&bSiz, sizeof(bSiz))));
|
||||
if (ret)
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, "viaCommandBufferLag");
|
||||
while ( -EAGAIN == (ret = drmCommandWrite(vmesa->driFd, DRM_VIA_CMDBUFFER,
|
||||
&bufI, sizeof(bufI))));
|
||||
if (ret) {
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, __FUNCTION__);
|
||||
abort();
|
||||
}
|
||||
while ( -EAGAIN == (ret = drmCommandWrite(vmesa->driFd, DRM_VIA_CMDBUFFER,
|
||||
&bufI, sizeof(bufI))));
|
||||
if (ret) {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
if (vmesa->useAgp) WAIT_IDLE;
|
||||
if (drmCommandWrite(vmesa->driFd, DRM_VIA_PCICMD, &bufI, sizeof(bufI))) {
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, "viaCommandBufferFlush");
|
||||
_mesa_error(vmesa->glCtx, GL_INVALID_OPERATION, __FUNCTION__);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,8 +60,6 @@ DRI_CONF_END;
|
|||
static const GLuint __driNConfigOptions = 3;
|
||||
|
||||
|
||||
extern viaContextPtr current_mesa;
|
||||
|
||||
#ifdef USE_NEW_INTERFACE
|
||||
static PFNGLXCREATECONTEXTMODES create_context_modes = NULL;
|
||||
#endif /* USE_NEW_INTERFACE */
|
||||
|
|
@ -221,10 +219,17 @@ viaCreateBuffer(__DRIscreenPrivate *driScrnPriv,
|
|||
const __GLcontextModes *mesaVis,
|
||||
GLboolean isPixmap)
|
||||
{
|
||||
viaContextPtr vmesa = current_mesa;
|
||||
/* KW: Bogus: Do this sort of thing in MakeCurrent or similar.
|
||||
*/
|
||||
viaContextPtr vmesa;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
if (ctx)
|
||||
vmesa = VIA_CONTEXT(ctx);
|
||||
|
||||
if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);
|
||||
/*=* John Sheng [2003.7.2] for visual config & patch viewperf *=*/
|
||||
if (mesaVis->depthBits == 32 && vmesa->depthBits == 16) {
|
||||
if (vmesa && mesaVis->depthBits == 32 && vmesa->depthBits == 16) {
|
||||
vmesa->depthBits = mesaVis->depthBits;
|
||||
vmesa->depth.size *= 2;
|
||||
vmesa->depth.pitch *= 2;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@
|
|||
#include "via_ioctl.h"
|
||||
#include "via_fb.h"
|
||||
/*=* John Sheng [2003.5.31] agp tex *=*/
|
||||
GLuint agpFullCount = 0;
|
||||
|
||||
void viaDestroyTexObj(viaContextPtr vmesa, viaTextureObjectPtr t)
|
||||
{
|
||||
|
|
@ -410,7 +409,7 @@ void viaUploadTexImages(viaContextPtr vmesa, viaTextureObjectPtr t)
|
|||
if (via_alloc_texture(vmesa, t))
|
||||
break;
|
||||
|
||||
agpFullCount++;
|
||||
vmesa->agpFullCount++;
|
||||
if (vmesa->TexObjList.prev == vmesa->CurrentTexObj[0] ||
|
||||
vmesa->TexObjList.prev == vmesa->CurrentTexObj[1]) {
|
||||
if (VIA_DEBUG) fprintf(stderr, "Hit bound texture in upload\n");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue