📄 trident_state.c
字号:
} #if 0 tmesa->dirty |= (TRIDENT_UPLOAD_CONTEXT | TRIDENT_UPLOAD_MISC | TRIDENT_UPLOAD_CLIPRECTS);#endif } UNLOCK_HARDWARE(tmesa); if ( mask ) _swrast_Clear( ctx, mask, all, cx, cy, cw, ch );}static void tridentDDShadeModel( GLcontext *ctx, GLenum mode ){ tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); GLuint s = tmesa->commandD;#define TRIDENT_FLAT_SHADE 0x000000E0#define TRIDENT_FLAT_SHADE_VERTEX_C 0x00000060#define TRIDENT_FLAT_SHADE_GOURAUD 0x00000080 s &= ~TRIDENT_FLAT_SHADE; switch ( mode ) { case GL_FLAT: s |= TRIDENT_FLAT_SHADE_VERTEX_C; break; case GL_SMOOTH: s |= TRIDENT_FLAT_SHADE_GOURAUD; break; default: return; } if ( tmesa->commandD != s ) { tmesa->commandD = s; tmesa->dirty |= TRIDENT_UPLOAD_COMMAND_D; }}static voidtridentCalcViewport( GLcontext *ctx ){ tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); const GLfloat *v = ctx->Viewport._WindowMap.m; GLfloat *m = tmesa->hw_viewport; /* See also trident_translate_vertex. */ m[MAT_SX] = v[MAT_SX]; m[MAT_TX] = v[MAT_TX] + tmesa->drawX + SUBPIXEL_X; m[MAT_SY] = - v[MAT_SY]; m[MAT_TY] = - v[MAT_TY] + tmesa->driDrawable->h + tmesa->drawY + SUBPIXEL_Y;#if 0 m[MAT_SZ] = v[MAT_SZ] * tmesa->depth_scale; m[MAT_TZ] = v[MAT_TZ] * tmesa->depth_scale;#else m[MAT_SZ] = v[MAT_SZ]; m[MAT_TZ] = v[MAT_TZ];#endif tmesa->SetupNewInputs = ~0;}static void tridentDDViewport( GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height ){ tridentCalcViewport( ctx );}static void tridentDDDepthRange( GLcontext *ctx, GLclampd nearval, GLclampd farval ){ tridentCalcViewport( ctx );}static voidtridentSetCliprects( tridentContextPtr tmesa, GLenum mode ){ __DRIdrawablePrivate *dPriv = tmesa->driDrawable; switch ( mode ) { case GL_FRONT_LEFT: if (dPriv->numClipRects == 0) { static drm_clip_rect_t zeroareacliprect = {0,0,0,0}; tmesa->numClipRects = 1; tmesa->pClipRects = &zeroareacliprect; } else { tmesa->numClipRects = dPriv->numClipRects; tmesa->pClipRects = (drm_clip_rect_t *)dPriv->pClipRects; } tmesa->drawX = dPriv->x; tmesa->drawY = dPriv->y; break; case GL_BACK_LEFT: if ( dPriv->numBackClipRects == 0 ) { if (dPriv->numClipRects == 0) { static drm_clip_rect_t zeroareacliprect = {0,0,0,0}; tmesa->numClipRects = 1; tmesa->pClipRects = &zeroareacliprect; } else { tmesa->numClipRects = dPriv->numClipRects; tmesa->pClipRects = (drm_clip_rect_t *)dPriv->pClipRects; tmesa->drawX = dPriv->x; tmesa->drawY = dPriv->y; } } else { tmesa->numClipRects = dPriv->numBackClipRects; tmesa->pClipRects = (drm_clip_rect_t *)dPriv->pBackClipRects; tmesa->drawX = dPriv->backX; tmesa->drawY = dPriv->backY; } break; default: return; }#if 0 tmesa->dirty |= TRIDENT_UPLOAD_CLIPRECTS;#endif}#if 0static GLboolean tridentDDSetDrawBuffer( GLcontext *ctx, GLenum mode ){ tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); int found = GL_TRUE; if ( tmesa->DrawBuffer != mode ) { tmesa->DrawBuffer = mode; switch ( mode ) { case GL_FRONT_LEFT: tridentFallback( tmesa, TRIDENT_FALLBACK_DRAW_BUFFER, GL_FALSE ); tmesa->drawOffset = tmesa->tridentScreen->frontOffset; tmesa->drawPitch = tmesa->tridentScreen->frontPitch; tridentSetCliprects( tmesa, GL_FRONT_LEFT ); break; case GL_BACK_LEFT: tridentFallback( tmesa, TRIDENT_FALLBACK_DRAW_BUFFER, GL_FALSE ); tmesa->drawOffset = tmesa->tridentScreen->backOffset; tmesa->drawPitch = tmesa->tridentScreen->backPitch; tridentSetCliprects( tmesa, GL_BACK_LEFT ); break; default: tridentFallback( tmesa, TRIDENT_FALLBACK_DRAW_BUFFER, GL_TRUE ); found = GL_FALSE; break; }#if 0 tmesa->setup.dst_off_pitch = (((tmesa->drawPitch/8) << 22) | (tmesa->drawOffset >> 3)); tmesa->dirty |= MACH64_UPLOAD_DST_OFF_PITCH | MACH64_UPLOAD_CONTEXT;#endif } return found;}static void tridentDDClearColor( GLcontext *ctx, const GLchan color[4] ){ tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); tmesa->ClearColor = tridentPackColor( tmesa->tridentScreen->cpp, color[0], color[1], color[2], color[3] );}#endifstatic voidtridentDDUpdateState( GLcontext *ctx, GLuint new_state ){ _swrast_InvalidateState( ctx, new_state ); _swsetup_InvalidateState( ctx, new_state ); _ac_InvalidateState( ctx, new_state ); _tnl_InvalidateState( ctx, new_state ); TRIDENT_CONTEXT(ctx)->new_gl_state |= new_state;}/* Initialize the context's hardware state. */void tridentDDInitState( tridentContextPtr tmesa ){ tmesa->new_state = 0; switch ( tmesa->glCtx->Visual.depthBits ) { case 16: tmesa->depth_scale = 1.0 / (GLfloat)0xffff; break; case 24: tmesa->depth_scale = 1.0 / (GLfloat)0xffffff; break; }}void tridentDDUpdateHWState( GLcontext *ctx ){ tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); int new_state = tmesa->new_state; if ( new_state ) { tmesa->new_state = 0;#if 0 /* Update the various parts of the context's state. */ if ( new_state & GAMMA_NEW_ALPHA ) tridentUpdateAlphaMode( ctx ); if ( new_state & GAMMA_NEW_DEPTH ) tridentUpdateZMode( ctx ); if ( new_state & GAMMA_NEW_FOG ) gammaUpdateFogAttrib( ctx ); if ( new_state & GAMMA_NEW_CLIP ) gammaUpdateClipping( ctx ); if ( new_state & GAMMA_NEW_POLYGON ) gammaUpdatePolygon( ctx ); if ( new_state & GAMMA_NEW_CULL ) gammaUpdateCull( ctx ); if ( new_state & GAMMA_NEW_MASKS ) gammaUpdateMasks( ctx ); if ( new_state & GAMMA_NEW_STIPPLE ) gammaUpdateStipple( ctx );#endif } /* HACK ! */#if 0 gammaEmitHwState( tmesa );#endif}/* Initialize the driver's state functions. */void tridentDDInitStateFuncs( GLcontext *ctx ){ ctx->Driver.UpdateState = tridentDDUpdateState; ctx->Driver.Clear = tridentDDClear; ctx->Driver.DepthRange = tridentDDDepthRange; ctx->Driver.ShadeModel = tridentDDShadeModel; ctx->Driver.Viewport = tridentDDViewport; /* Pixel path fallbacks. */ ctx->Driver.Accum = _swrast_Accum; ctx->Driver.Bitmap = _swrast_Bitmap; ctx->Driver.CopyPixels = _swrast_CopyPixels; ctx->Driver.DrawPixels = _swrast_DrawPixels; ctx->Driver.ReadPixels = _swrast_ReadPixels; ctx->Driver.ResizeBuffers = _mesa_resize_framebuffer; /* Swrast hooks for imaging extensions: */ ctx->Driver.CopyColorTable = _swrast_CopyColorTable; ctx->Driver.CopyColorSubTable = _swrast_CopyColorSubTable; ctx->Driver.CopyConvolutionFilter1D = _swrast_CopyConvolutionFilter1D; ctx->Driver.CopyConvolutionFilter2D = _swrast_CopyConvolutionFilter2D;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -