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

📄 sis_context.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
📖 第 1 页 / 共 2 页
字号:
       * needed for sisDDDeleteTexture, since it needs to call the FB/AGP free       * function.       */      /* smesa->glCtx->DriverCtx = NULL; */      _mesa_destroy_context(smesa->glCtx);   }   FREE( smesa );}GLbooleansisMakeCurrent( __DRIcontextPrivate *driContextPriv,                __DRIdrawablePrivate *driDrawPriv,                __DRIdrawablePrivate *driReadPriv ){   if ( driContextPriv ) {      GET_CURRENT_CONTEXT(ctx);      sisContextPtr oldSisCtx = ctx ? SIS_CONTEXT(ctx) : NULL;      sisContextPtr newSisCtx = (sisContextPtr) driContextPriv->driverPrivate;      struct gl_framebuffer *drawBuffer, *readBuffer;      if ( newSisCtx != oldSisCtx) {         newSisCtx->GlobalFlag = GFLAG_ALL;      }      newSisCtx->driDrawable = driDrawPriv;      drawBuffer = (GLframebuffer *)driDrawPriv->driverPrivate;      readBuffer = (GLframebuffer *)driReadPriv->driverPrivate;      _mesa_make_current( newSisCtx->glCtx, drawBuffer, readBuffer );      sisUpdateBufferSize( newSisCtx );      sisUpdateClipping( newSisCtx->glCtx );   } else {      _mesa_make_current( NULL, NULL, NULL );   }   return GL_TRUE;}GLbooleansisUnbindContext( __DRIcontextPrivate *driContextPriv ){   return GL_TRUE;}voidsis_update_render_state( sisContextPtr smesa ){   __GLSiSHardware *prev = &smesa->prev;   mWait3DCmdQueue (45);   if (smesa->GlobalFlag & GFLAG_ENABLESETTING) {      if (!smesa->clearTexCache) {	 MMIO(REG_3D_TEnable, prev->hwCapEnable);      } else {	 MMIO(REG_3D_TEnable, prev->hwCapEnable | MASK_TextureCacheClear);	 MMIO(REG_3D_TEnable, prev->hwCapEnable);	 smesa->clearTexCache = GL_FALSE;      }   }   if (smesa->GlobalFlag & GFLAG_ENABLESETTING2)      MMIO(REG_3D_TEnable2, prev->hwCapEnable2);   /* Z Setting */   if (smesa->GlobalFlag & GFLAG_ZSETTING)   {      MMIO(REG_3D_ZSet, prev->hwZ);      MMIO(REG_3D_ZStWriteMask, prev->hwZMask);      MMIO(REG_3D_ZAddress, prev->hwOffsetZ);   }   /* Alpha Setting */   if (smesa->GlobalFlag & GFLAG_ALPHASETTING)      MMIO(REG_3D_AlphaSet, prev->hwAlpha);   if (smesa->GlobalFlag & GFLAG_DESTSETTING) {      MMIO(REG_3D_DstSet, prev->hwDstSet);      MMIO(REG_3D_DstAlphaWriteMask, prev->hwDstMask);      MMIO(REG_3D_DstAddress, prev->hwOffsetDest);   }   /* Line Setting */#if 0   if (smesa->GlobalFlag & GFLAG_LINESETTING)       MMIO(REG_3D_LinePattern, prev->hwLinePattern);#endif   /* Fog Setting */   if (smesa->GlobalFlag & GFLAG_FOGSETTING)   {      MMIO(REG_3D_FogSet, prev->hwFog);      MMIO(REG_3D_FogInverseDistance, prev->hwFogInverse);      MMIO(REG_3D_FogFarDistance, prev->hwFogFar);      MMIO(REG_3D_FogFactorDensity, prev->hwFogDensity);   }   /* Stencil Setting */   if (smesa->GlobalFlag & GFLAG_STENCILSETTING) {      MMIO(REG_3D_StencilSet, prev->hwStSetting);      MMIO(REG_3D_StencilSet2, prev->hwStSetting2);   }   /* Miscellaneous Setting */   if (smesa->GlobalFlag & GFLAG_DSTBLEND)      MMIO(REG_3D_DstBlendMode, prev->hwDstSrcBlend);   if (smesa->GlobalFlag & GFLAG_CLIPPING) {      MMIO(REG_3D_ClipTopBottom, prev->clipTopBottom);      MMIO(REG_3D_ClipLeftRight, prev->clipLeftRight);   }  smesa->GlobalFlag &= ~GFLAG_RENDER_STATES;}voidsis_update_texture_state (sisContextPtr smesa){   __GLSiSHardware *prev = &smesa->prev;   mWait3DCmdQueue (55);   if (smesa->clearTexCache || (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS)) {      MMIO(REG_3D_TEnable, prev->hwCapEnable | MASK_TextureCacheClear);      MMIO(REG_3D_TEnable, prev->hwCapEnable);      smesa->clearTexCache = GL_FALSE;   }   /* Texture Setting */   if (smesa->GlobalFlag & CFLAG_TEXTURERESET)      MMIO(REG_3D_TextureSet, prev->texture[0].hwTextureSet);   if (smesa->GlobalFlag & GFLAG_TEXTUREMIPMAP)      MMIO(REG_3D_TextureMip, prev->texture[0].hwTextureMip);  /*  MMIO(REG_3D_TextureTransparencyColorHigh, prev->texture[0].hwTextureClrHigh);  MMIO(REG_3D_TextureTransparencyColorLow, prev->texture[0].hwTextureClrLow);  */   if (smesa->GlobalFlag & GFLAG_TEXBORDERCOLOR)      MMIO(REG_3D_TextureBorderColor, prev->texture[0].hwTextureBorderColor);   if (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS) {      switch ((prev->texture[0].hwTextureSet & MASK_TextureLevel) >> 8)      {      case 11:         MMIO(REG_3D_TextureAddress11, prev->texture[0].texOffset11);      case 10:         MMIO(REG_3D_TextureAddress10, prev->texture[0].texOffset10);         MMIO(REG_3D_TexturePitch10, prev->texture[0].texPitch10);      case 9:         MMIO(REG_3D_TextureAddress9, prev->texture[0].texOffset9);      case 8:         MMIO(REG_3D_TextureAddress8, prev->texture[0].texOffset8);         MMIO(REG_3D_TexturePitch8, prev->texture[0].texPitch89);      case 7:         MMIO(REG_3D_TextureAddress7, prev->texture[0].texOffset7);      case 6:         MMIO(REG_3D_TextureAddress6, prev->texture[0].texOffset6);         MMIO(REG_3D_TexturePitch6, prev->texture[0].texPitch67);      case 5:         MMIO(REG_3D_TextureAddress5, prev->texture[0].texOffset5);      case 4:         MMIO(REG_3D_TextureAddress4, prev->texture[0].texOffset4);         MMIO(REG_3D_TexturePitch4, prev->texture[0].texPitch45);      case 3:         MMIO(REG_3D_TextureAddress3, prev->texture[0].texOffset3);      case 2:         MMIO(REG_3D_TextureAddress2, prev->texture[0].texOffset2);         MMIO(REG_3D_TexturePitch2, prev->texture[0].texPitch23);      case 1:         MMIO(REG_3D_TextureAddress1, prev->texture[0].texOffset1);      case 0:	  MMIO(REG_3D_TextureAddress0, prev->texture[0].texOffset0);	  MMIO(REG_3D_TexturePitch0, prev->texture[0].texPitch01);      }   }   if (smesa->GlobalFlag & CFLAG_TEXTURERESET_1)      MMIO(REG_3D_Texture1Set, prev->texture[1].hwTextureSet);   if (smesa->GlobalFlag & GFLAG_TEXTUREMIPMAP_1)      MMIO(REG_3D_Texture1Mip, prev->texture[1].hwTextureMip);   if (smesa->GlobalFlag & GFLAG_TEXBORDERCOLOR_1) {      MMIO(REG_3D_Texture1BorderColor,	    prev->texture[1].hwTextureBorderColor);   }   if (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS_1) {      switch ((prev->texture[1].hwTextureSet & MASK_TextureLevel) >> 8)      {      case 11:         MMIO(REG_3D_Texture1Address11, prev->texture[1].texOffset11);      case 10:         MMIO(REG_3D_Texture1Address10, prev->texture[1].texOffset10);         MMIO(REG_3D_Texture1Pitch10, prev->texture[1].texPitch10);      case 9:         MMIO(REG_3D_Texture1Address9, prev->texture[1].texOffset9);      case 8:         MMIO(REG_3D_Texture1Address8, prev->texture[1].texOffset8);         MMIO(REG_3D_Texture1Pitch8, prev->texture[1].texPitch89);      case 7:         MMIO(REG_3D_Texture1Address7, prev->texture[1].texOffset7);      case 6:         MMIO(REG_3D_Texture1Address6, prev->texture[1].texOffset6);         MMIO(REG_3D_Texture1Pitch6, prev->texture[1].texPitch67);      case 5:         MMIO(REG_3D_Texture1Address5, prev->texture[1].texOffset5);      case 4:         MMIO(REG_3D_Texture1Address4, prev->texture[1].texOffset4);         MMIO(REG_3D_Texture1Pitch4, prev->texture[1].texPitch45);      case 3:         MMIO(REG_3D_Texture1Address3, prev->texture[1].texOffset3);      case 2:         MMIO(REG_3D_Texture1Address2, prev->texture[1].texOffset2);         MMIO(REG_3D_Texture1Pitch2, prev->texture[1].texPitch23);      case 1:         MMIO(REG_3D_Texture1Address1, prev->texture[1].texOffset1);      case 0:         MMIO(REG_3D_Texture1Address0, prev->texture[1].texOffset0);         MMIO(REG_3D_Texture1Pitch0, prev->texture[1].texPitch01);      }   }   /* texture environment */   if (smesa->GlobalFlag & GFLAG_TEXTUREENV) {      MMIO(REG_3D_TextureBlendFactor, prev->hwTexEnvColor);      MMIO(REG_3D_TextureColorBlendSet0, prev->hwTexBlendColor0);      MMIO(REG_3D_TextureAlphaBlendSet0, prev->hwTexBlendAlpha0);   }   if (smesa->GlobalFlag & GFLAG_TEXTUREENV_1) {      MMIO(REG_3D_TextureBlendFactor, prev->hwTexEnvColor);      MMIO(REG_3D_TextureColorBlendSet1, prev->hwTexBlendColor1);      MMIO(REG_3D_TextureAlphaBlendSet1, prev->hwTexBlendAlpha1);   }   smesa->GlobalFlag &= ~GFLAG_TEXTURE_STATES;}voidsis6326_update_render_state( sisContextPtr smesa ){   __GLSiSHardware *prev = &smesa->prev;   mWait3DCmdQueue (45);   if (smesa->GlobalFlag & GFLAG_ENABLESETTING) {      if (!smesa->clearTexCache) {	 MMIO(REG_6326_3D_TEnable, prev->hwCapEnable);      } else {	 MMIO(REG_6326_3D_TEnable, prev->hwCapEnable & ~S_ENABLE_TextureCache);	 MMIO(REG_6326_3D_TEnable, prev->hwCapEnable);	 smesa->clearTexCache = GL_FALSE;      }   }   /* Z Setting */   if (smesa->GlobalFlag & GFLAG_ZSETTING) {      MMIO(REG_6326_3D_ZSet, prev->hwZ);      MMIO(REG_6326_3D_ZAddress, prev->hwOffsetZ);   }   /* Alpha Setting */   if (smesa->GlobalFlag & GFLAG_ALPHASETTING)      MMIO(REG_6326_3D_AlphaSet, prev->hwAlpha);   if (smesa->GlobalFlag & GFLAG_DESTSETTING) {      MMIO(REG_6326_3D_DstSet, prev->hwDstSet);      MMIO(REG_6326_3D_DstAddress, prev->hwOffsetDest);   }   /* Fog Setting */   if (smesa->GlobalFlag & GFLAG_FOGSETTING) {      MMIO(REG_6326_3D_FogSet, prev->hwFog);   }   /* Miscellaneous Setting */   if (smesa->GlobalFlag & GFLAG_DSTBLEND)      MMIO(REG_6326_3D_DstSrcBlendMode, prev->hwDstSrcBlend);   if (smesa->GlobalFlag & GFLAG_CLIPPING) {      MMIO(REG_6326_3D_ClipTopBottom, prev->clipTopBottom);      MMIO(REG_6326_3D_ClipLeftRight, prev->clipLeftRight);   }  smesa->GlobalFlag &= ~GFLAG_RENDER_STATES;}voidsis6326_update_texture_state (sisContextPtr smesa){   __GLSiSHardware *prev = &smesa->prev;   mWait3DCmdQueue (55);   if (smesa->clearTexCache || (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS)) {      MMIO(REG_6326_3D_TEnable, prev->hwCapEnable & ~S_ENABLE_TextureCache);      MMIO(REG_6326_3D_TEnable, prev->hwCapEnable);      smesa->clearTexCache = GL_FALSE;   }   /* Texture Setting */   if (smesa->GlobalFlag & CFLAG_TEXTURERESET)      MMIO(REG_6326_3D_TextureSet, prev->texture[0].hwTextureSet);   if (smesa->GlobalFlag & GFLAG_TEXTUREMIPMAP)      MMIO(REG_6326_3D_TextureWidthHeight, prev->texture[0].hwTexWidthHeight);  /*  MMIO(REG_3D_TextureTransparencyColorHigh, prev->texture[0].hwTextureClrHigh);  MMIO(REG_3D_TextureTransparencyColorLow, prev->texture[0].hwTextureClrLow);  */   if (smesa->GlobalFlag & GFLAG_TEXBORDERCOLOR)      MMIO(REG_6326_3D_TextureBorderColor, prev->texture[0].hwTextureBorderColor);   if (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS) {      switch ((prev->texture[0].hwTextureSet & MASK_6326_TextureLevel) >> 8)      {      case 9:         MMIO(REG_6326_3D_TextureAddress9, prev->texture[0].texOffset9);         /* FALLTHROUGH */      case 8:         MMIO(REG_6326_3D_TextureAddress8, prev->texture[0].texOffset8);         MMIO(REG_6326_3D_TexturePitch89, prev->texture[0].texPitch89);         /* FALLTHROUGH */      case 7:         MMIO(REG_6326_3D_TextureAddress7, prev->texture[0].texOffset7);         /* FALLTHROUGH */      case 6:         MMIO(REG_6326_3D_TextureAddress6, prev->texture[0].texOffset6);         MMIO(REG_6326_3D_TexturePitch67, prev->texture[0].texPitch67);         /* FALLTHROUGH */      case 5:         MMIO(REG_6326_3D_TextureAddress5, prev->texture[0].texOffset5);         /* FALLTHROUGH */      case 4:         MMIO(REG_6326_3D_TextureAddress4, prev->texture[0].texOffset4);         MMIO(REG_6326_3D_TexturePitch45, prev->texture[0].texPitch45);         /* FALLTHROUGH */      case 3:         MMIO(REG_6326_3D_TextureAddress3, prev->texture[0].texOffset3);         /* FALLTHROUGH */      case 2:         MMIO(REG_6326_3D_TextureAddress2, prev->texture[0].texOffset2);         MMIO(REG_6326_3D_TexturePitch23, prev->texture[0].texPitch23);         /* FALLTHROUGH */      case 1:         MMIO(REG_6326_3D_TextureAddress1, prev->texture[0].texOffset1);         /* FALLTHROUGH */      case 0:	 MMIO(REG_6326_3D_TextureAddress0, prev->texture[0].texOffset0);	 MMIO(REG_6326_3D_TexturePitch01, prev->texture[0].texPitch01);	 break;      }   }   /* texture environment */   if (smesa->GlobalFlag & GFLAG_TEXTUREENV) {      MMIO(REG_6326_3D_TextureBlendSet, prev->hwTexBlendSet);   }   smesa->GlobalFlag &= ~GFLAG_TEXTURE_STATES;}

⌨️ 快捷键说明

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