static void emit_texblend(struct i830_context *i830, GLuint unit, GLuint blendUnit, bool last_stage) { struct gl_texture_unit *texUnit = &i830->intel.ctx.Texture.Unit[unit]; GLuint tmp[I830_TEXBLEND_SIZE], tmp_sz; if (0) fprintf(stderr, "%s unit %d\n", __func__, unit); /* Update i830->state.TexBlend */ tmp_sz = i830SetTexEnvCombine(i830, texUnit->_CurrentCombine, blendUnit, GetTexelOp(unit), tmp, texUnit->EnvColor); if (last_stage) tmp[0] |= TEXOP_LAST_STAGE; if (tmp_sz != i830->state.TexBlendWordsUsed[blendUnit] || memcmp(tmp, i830->state.TexBlend[blendUnit], tmp_sz * sizeof(GLuint))) { I830_STATECHANGE(i830, I830_UPLOAD_TEXBLEND(blendUnit)); memcpy(i830->state.TexBlend[blendUnit], tmp, tmp_sz * sizeof(GLuint)); i830->state.TexBlendWordsUsed[blendUnit] = tmp_sz; } I830_ACTIVESTATE(i830, I830_UPLOAD_TEXBLEND(blendUnit), true); }
static void emit_passthrough( i830ContextPtr i830 ) { GLuint tmp[I830_TEXBLEND_SIZE], tmp_sz; GLuint unit = 0; tmp_sz = pass_through( tmp, unit ); tmp[0] |= TEXOP_LAST_STAGE; if (tmp_sz != i830->state.TexBlendWordsUsed[unit] || memcmp( tmp, i830->state.TexBlend[unit], tmp_sz * sizeof(GLuint))) { I830_STATECHANGE( i830, I830_UPLOAD_TEXBLEND(unit) ); memcpy( i830->state.TexBlend[unit], tmp, tmp_sz * sizeof(GLuint)); i830->state.TexBlendWordsUsed[unit] = tmp_sz; } I830_ACTIVESTATE(i830, I830_UPLOAD_TEXBLEND(unit), GL_TRUE); }
void i830InitState(struct i830_context *i830) { struct gl_context *ctx = &i830->intel.ctx; i830_init_packets(i830); _mesa_init_driver_state(ctx); i830->state.emitted = 0; i830->state.active = (I830_UPLOAD_INVARIENT | I830_UPLOAD_RASTER_RULES | I830_UPLOAD_TEXBLEND(0) | I830_UPLOAD_STIPPLE | I830_UPLOAD_CTX | I830_UPLOAD_BUFFERS); }
void i830InitState( i830ContextPtr i830 ) { GLcontext *ctx = &i830->intel.ctx; i830_init_packets( i830 ); intelInitState( ctx ); memcpy( &i830->initial, &i830->state, sizeof(i830->state) ); i830->current = &i830->state; i830->state.emitted = 0; i830->state.active = (I830_UPLOAD_TEXBLEND(0) | I830_UPLOAD_STIPPLE | I830_UPLOAD_CTX | I830_UPLOAD_BUFFERS); }
void i830InitState(struct i830_context *i830) { GLcontext *ctx = &i830->intel.ctx; i830_init_packets(i830); _mesa_init_driver_state(ctx); memcpy(&i830->initial, &i830->state, sizeof(i830->state)); i830->current = &i830->state; i830->state.emitted = 0; i830->state.active = (I830_UPLOAD_INVARIENT | I830_UPLOAD_TEXBLEND(0) | I830_UPLOAD_STIPPLE | I830_UPLOAD_CTX | I830_UPLOAD_BUFFERS); }