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

📄 intel_context.c

📁 mesa-6.5-minigui源码
💻 C
📖 第 1 页 / 共 2 页
字号:
   intel->bm = bm_intel_Attach( intel );#if 0   bmInitPool(intel->bm,              intel->intelScreen->tex.offset, /* low offset */              intel->intelScreen->tex.map, /* low virtual */              intel->intelScreen->tex.size,	      DRM_MM_TT);#endif   /* XXX FBO: these have to go away!    * FBO regions should be setup when creating the drawable. */   /* These are still static, but create regions for them.      */   intel->front_region =       intel_region_create_static(intel,				 DRM_MM_TT,				 intelScreen->front.offset,				 intelScreen->front.map,				 intelScreen->cpp,				 intelScreen->front.pitch,				 intelScreen->height);   intel->back_region =       intel_region_create_static(intel,				 DRM_MM_TT,				 intelScreen->back.offset,				 intelScreen->back.map,				 intelScreen->cpp,				 intelScreen->back.pitch,				 intelScreen->height);   /* Still assuming front.cpp == depth.cpp    */   intel->depth_region =       intel_region_create_static(intel,				 DRM_MM_TT,				 intelScreen->depth.offset,				 intelScreen->depth.map,				 intelScreen->cpp,				 intelScreen->depth.pitch,				 intelScreen->height);      intel->batch = intel_batchbuffer_alloc( intel );   intel_bufferobj_init( intel );   intel_fbo_init( intel );   if (intel->ctx.Mesa_DXTn) {     _mesa_enable_extension( ctx, "GL_EXT_texture_compression_s3tc" );     _mesa_enable_extension( ctx, "GL_S3_s3tc" );   }   else if (driQueryOptionb (&intelScreen->optionCache, "force_s3tc_enable")) {     _mesa_enable_extension( ctx, "GL_EXT_texture_compression_s3tc" );   }<<<<<<< intel_context.c/*    driInitTextureObjects( ctx, & intel->swapped, *//* 			  DRI_TEXMGR_DO_TEXTURE_1D | *//* 			  DRI_TEXMGR_DO_TEXTURE_2D |  *//* 			  DRI_TEXMGR_DO_TEXTURE_RECT ); */   intelInitBatchBuffer(&intel->ctx);   intel->prim.flush = intel_emit_invarient_state;=======>>>>>>> 1.20.2.25   intel->prim.primitive = ~0;#if DO_DEBUG   INTEL_DEBUG  = driParseDebugString( getenv( "INTEL_DEBUG" ),				       debug_control );#endif   if (getenv("INTEL_NO_RAST")) {      fprintf(stderr, "disabling 3D rasterization\n");      FALLBACK(intel, INTEL_FALLBACK_USER, 1);    }   return GL_TRUE;}void intelDestroyContext(__DRIcontextPrivate *driContextPriv){   struct intel_context *intel = (struct intel_context *) driContextPriv->driverPrivate;   assert(intel); /* should never be null */   if (intel) {      GLboolean   release_texture_heaps;      intel->vtbl.destroy( intel );      release_texture_heaps = (intel->ctx.Shared->RefCount == 1);      _swsetup_DestroyContext (&intel->ctx);      _tnl_DestroyContext (&intel->ctx);      _ac_DestroyContext (&intel->ctx);      _swrast_DestroyContext (&intel->ctx);      intel->Fallback = 0;	/* don't call _swrast_Flush later */      intel_batchbuffer_free(intel->batch);            if ( release_texture_heaps ) {         /* This share group is about to go away, free our private          * texture object data.          */	 fprintf(stderr, "do something to free texture heaps\n");      }      /* free the Mesa context */      _mesa_free_context_data(&intel->ctx);   }}GLboolean intelUnbindContext(__DRIcontextPrivate *driContextPriv){   return GL_TRUE;}GLboolean intelMakeCurrent(__DRIcontextPrivate *driContextPriv,			  __DRIdrawablePrivate *driDrawPriv,			  __DRIdrawablePrivate *driReadPriv){   if (driContextPriv) {      struct intel_context *intel = (struct intel_context *) driContextPriv->driverPrivate;      GLframebuffer *drawFb = (GLframebuffer *) driDrawPriv->driverPrivate;      GLframebuffer *readFb = (GLframebuffer *) driReadPriv->driverPrivate;      if ( intel->driDrawable != driDrawPriv ) {	 /* Shouldn't the readbuffer be stored also? */	 driDrawableInitVBlank( driDrawPriv, intel->vblank_flags );	 intel->driDrawable = driDrawPriv;	 intelWindowMoved( intel );      }      /* XXX FBO temporary fix-ups! */      /* if the renderbuffers don't have regions, init them from the context */      {         struct intel_renderbuffer *irbFront            = intel_get_renderbuffer(drawFb, BUFFER_FRONT_LEFT);         struct intel_renderbuffer *irbBack            = intel_get_renderbuffer(drawFb, BUFFER_BACK_LEFT);         struct intel_renderbuffer *irbDepth            = intel_get_renderbuffer(drawFb, BUFFER_DEPTH);         struct intel_renderbuffer *irbStencil            = intel_get_renderbuffer(drawFb, BUFFER_STENCIL);         if (irbFront && !irbFront->region) {            intel_region_reference(&irbFront->region, intel->front_region);         }         if (irbBack && !irbBack->region) {            intel_region_reference(&irbBack->region, intel->back_region);         }         if (irbDepth && !irbDepth->region) {            intel_region_reference(&irbDepth->region, intel->depth_region);         }         if (irbStencil && !irbStencil->region) {            intel_region_reference(&irbStencil->region, intel->depth_region);         }      }      _mesa_make_current(&intel->ctx, drawFb, readFb);      intel_draw_buffer(&intel->ctx, drawFb);   }   else {      _mesa_make_current(NULL, NULL, NULL);   }   return GL_TRUE;}<<<<<<< intel_context.c/** * Use the information in the sarea to update the screen parameters * related to screen rotation. */static voidintelUpdateScreenRotation(intelContextPtr intel,                          __DRIscreenPrivate *sPriv,                          drmI830Sarea *sarea){   intelScreenPrivate *intelScreen = (intelScreenPrivate *)sPriv->private;   intelRegion *colorBuf;   intelUnmapScreenRegions(intelScreen);   intelUpdateScreenFromSAREA(intelScreen, sarea);   /* update the current hw offsets for the color and depth buffers */   if (intel->ctx.DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT)      colorBuf = &intelScreen->back;   else      colorBuf = &intelScreen->front;   intel->vtbl.update_color_z_regions(intel, colorBuf, &intelScreen->depth);   if (!intelMapScreenRegions(sPriv)) {      fprintf(stderr, "ERROR Remapping screen regions!!!\n");   }}void intelGetLock( intelContextPtr intel, GLuint flags )=======void intelGetLock( struct intel_context *intel, GLuint flags )>>>>>>> 1.20.2.25{   __DRIdrawablePrivate *dPriv = intel->driDrawable;   __DRIscreenPrivate *sPriv = intel->driScreen;   intelScreenPrivate *intelScreen = (intelScreenPrivate *)sPriv->private;   drmI830Sarea * sarea = intel->sarea;<<<<<<< intel_context.c   unsigned   i;=======   int me = intel->hHWContext;>>>>>>> 1.20.2.25   drmGetLock(intel->driFd, intel->hHWContext, flags);   /* If the window moved, may need to set a new cliprect now.    *    * NOTE: This releases and regains the hw lock, so all state    * checking must be done *after* this call:    */   if (dPriv)      DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv);<<<<<<< intel_context.c   if (dPriv && intel->lastStamp != dPriv->lastStamp) {      intelWindowMoved( intel );      intel->lastStamp = dPriv->lastStamp;   }   /* If we lost context, need to dump all registers to hardware.    * Note that we don't care about 2d contexts, even if they perform    * accelerated commands, so the DRI locking in the X server is even    * more broken than usual.=======   /* Lost context?>>>>>>> 1.20.2.25    */<<<<<<< intel_context.c   if (sarea->width != intelScreen->width ||       sarea->height != intelScreen->height ||       sarea->rotation != intelScreen->current_rotation) {      intelUpdateScreenRotation(intel, sPriv, sarea);      /* This will drop the outstanding batchbuffer on the floor */      intel->batch.ptr -= (intel->batch.size - intel->batch.space);      intel->batch.space = intel->batch.size;      /* lose all primitives */      intel->prim.primitive = ~0;      intel->prim.start_ptr = 0;      intel->prim.flush = 0;      intel->vtbl.lost_hardware( intel );       intel->lastStamp = 0; /* force window update */      /* Release batch buffer       */      intelDestroyBatchBuffer(&intel->ctx);      intelInitBatchBuffer(&intel->ctx);      intel->prim.flush = intel_emit_invarient_state;      /* Still need to reset the global LRU?       */      intel_driReinitTextureHeap( intel->texture_heaps[0], intel->intelScreen->tex.size );=======   if (sarea->ctxOwner != me) {      intel->perf_boxes |= I830_BOX_LOST_CONTEXT;      sarea->ctxOwner = me;>>>>>>> 1.20.2.25   }   /* Drawable changed?    */<<<<<<< intel_context.c   for ( i = 0 ; i < intel->nr_heaps ; i++ ) {      DRI_AGE_TEXTURES( intel->texture_heaps[ i ] );   }}=======   if (dPriv && intel->lastStamp != dPriv->lastStamp) {      intelWindowMoved( intel );      intel->lastStamp = dPriv->lastStamp;   }}>>>>>>> 1.20.2.25<<<<<<< intel_context.cvoid intelSwapBuffers( __DRIdrawablePrivate *dPriv ){   if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {      intelContextPtr intel;      GLcontext *ctx;      intel = (intelContextPtr) dPriv->driContextPriv->driverPrivate;      ctx = &intel->ctx;      if (ctx->Visual.doubleBufferMode) {         intelScreenPrivate *screen = intel->intelScreen;	 _mesa_notifySwapBuffers( ctx );  /* flush pending rendering comands */	 if ( 0 /*intel->doPageFlip*/ ) { /* doPageFlip is never set !!! */	    intelPageFlip( dPriv );	 } else {	    intelCopyBuffer( dPriv );	 }         if (screen->current_rotation != 0) {            intelRotateWindow(intel, dPriv, BUFFER_BIT_FRONT_LEFT);         }      }   } else {      /* XXX this shouldn't be an error but we can't handle it for now */      fprintf(stderr, "%s: drawable has no context!\n", __FUNCTION__);   }}void intelInitState( GLcontext *ctx ){   /* Mesa should do this for us:    */   ctx->Driver.AlphaFunc( ctx, 			  ctx->Color.AlphaFunc,			  ctx->Color.AlphaRef);   ctx->Driver.BlendColor( ctx,			   ctx->Color.BlendColor );   ctx->Driver.BlendEquationSeparate( ctx, 				      ctx->Color.BlendEquationRGB,				      ctx->Color.BlendEquationA);   ctx->Driver.BlendFuncSeparate( ctx,				  ctx->Color.BlendSrcRGB,				  ctx->Color.BlendDstRGB,				  ctx->Color.BlendSrcA,				  ctx->Color.BlendDstA);   ctx->Driver.ColorMask( ctx, 			  ctx->Color.ColorMask[RCOMP],			  ctx->Color.ColorMask[GCOMP],			  ctx->Color.ColorMask[BCOMP],			  ctx->Color.ColorMask[ACOMP]);   ctx->Driver.CullFace( ctx, ctx->Polygon.CullFaceMode );   ctx->Driver.DepthFunc( ctx, ctx->Depth.Func );   ctx->Driver.DepthMask( ctx, ctx->Depth.Mask );   ctx->Driver.Enable( ctx, GL_ALPHA_TEST, ctx->Color.AlphaEnabled );   ctx->Driver.Enable( ctx, GL_BLEND, ctx->Color.BlendEnabled );   ctx->Driver.Enable( ctx, GL_COLOR_LOGIC_OP, ctx->Color.ColorLogicOpEnabled );   ctx->Driver.Enable( ctx, GL_COLOR_SUM, ctx->Fog.ColorSumEnabled );   ctx->Driver.Enable( ctx, GL_CULL_FACE, ctx->Polygon.CullFlag );   ctx->Driver.Enable( ctx, GL_DEPTH_TEST, ctx->Depth.Test );   ctx->Driver.Enable( ctx, GL_DITHER, ctx->Color.DitherFlag );   ctx->Driver.Enable( ctx, GL_FOG, ctx->Fog.Enabled );   ctx->Driver.Enable( ctx, GL_LIGHTING, ctx->Light.Enabled );   ctx->Driver.Enable( ctx, GL_LINE_SMOOTH, ctx->Line.SmoothFlag );   ctx->Driver.Enable( ctx, GL_POLYGON_STIPPLE, ctx->Polygon.StippleFlag );   ctx->Driver.Enable( ctx, GL_SCISSOR_TEST, ctx->Scissor.Enabled );   ctx->Driver.Enable( ctx, GL_STENCIL_TEST, ctx->Stencil.Enabled );   ctx->Driver.Enable( ctx, GL_TEXTURE_1D, GL_FALSE );   ctx->Driver.Enable( ctx, GL_TEXTURE_2D, GL_FALSE );   ctx->Driver.Enable( ctx, GL_TEXTURE_RECTANGLE_NV, GL_FALSE );   ctx->Driver.Enable( ctx, GL_TEXTURE_3D, GL_FALSE );   ctx->Driver.Enable( ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE );   ctx->Driver.Fogfv( ctx, GL_FOG_COLOR, ctx->Fog.Color );   ctx->Driver.Fogfv( ctx, GL_FOG_MODE, 0 );   ctx->Driver.Fogfv( ctx, GL_FOG_DENSITY, &ctx->Fog.Density );   ctx->Driver.Fogfv( ctx, GL_FOG_START, &ctx->Fog.Start );   ctx->Driver.Fogfv( ctx, GL_FOG_END, &ctx->Fog.End );   ctx->Driver.FrontFace( ctx, ctx->Polygon.FrontFace );   {      GLfloat f = (GLfloat)ctx->Light.Model.ColorControl;      ctx->Driver.LightModelfv( ctx, GL_LIGHT_MODEL_COLOR_CONTROL, &f );   }=======>>>>>>> 1.20.2.25<<<<<<< intel_context.c   ctx->Driver.LineWidth( ctx, ctx->Line.Width );   ctx->Driver.LogicOpcode( ctx, ctx->Color.LogicOp );   ctx->Driver.PointSize( ctx, ctx->Point.Size );   ctx->Driver.PolygonStipple( ctx, (const GLubyte *)ctx->PolygonStipple );   ctx->Driver.Scissor( ctx, ctx->Scissor.X, ctx->Scissor.Y,			ctx->Scissor.Width, ctx->Scissor.Height );   ctx->Driver.ShadeModel( ctx, ctx->Light.ShadeModel );   ctx->Driver.StencilFuncSeparate( ctx, GL_FRONT,                                    ctx->Stencil.Function[0],                                    ctx->Stencil.Ref[0],                                    ctx->Stencil.ValueMask[0] );   ctx->Driver.StencilFuncSeparate( ctx, GL_BACK,                                    ctx->Stencil.Function[1],                                    ctx->Stencil.Ref[1],                                    ctx->Stencil.ValueMask[1] );   ctx->Driver.StencilMaskSeparate( ctx, GL_FRONT, ctx->Stencil.WriteMask[0] );   ctx->Driver.StencilMaskSeparate( ctx, GL_BACK, ctx->Stencil.WriteMask[1] );   ctx->Driver.StencilOpSeparate( ctx, GL_FRONT,                                  ctx->Stencil.FailFunc[0],                                  ctx->Stencil.ZFailFunc[0],                                  ctx->Stencil.ZPassFunc[0]);   ctx->Driver.StencilOpSeparate( ctx, GL_BACK,                                  ctx->Stencil.FailFunc[1],                                  ctx->Stencil.ZFailFunc[1],                                  ctx->Stencil.ZPassFunc[1]);   ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] );}=======>>>>>>> 1.20.2.25

⌨️ 快捷键说明

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