Lines Matching refs:unit

129    } unit[MAX_TEXTURE_UNITS];
441 key->unit[i].enabled = 1;
446 key->unit[i].source_index =
449 key->unit[i].shadow =
454 key->unit[i].NumArgsRGB = comb->_NumArgsRGB;
455 key->unit[i].NumArgsA = comb->_NumArgsA;
457 key->unit[i].ModeRGB =
459 key->unit[i].ModeA =
462 key->unit[i].ScaleShiftRGB = comb->ScaleShiftRGB;
463 key->unit[i].ScaleShiftA = comb->ScaleShiftA;
466 key->unit[i].OptRGB[j].Operand = translate_operand(comb->OperandRGB[j]);
467 key->unit[i].OptA[j].Operand = translate_operand(comb->OperandA[j]);
468 key->unit[i].OptRGB[j].Source = translate_source(comb->SourceRGB[j]);
469 key->unit[i].OptA[j].Source = translate_source(comb->SourceA[j]);
472 if (key->unit[i].ModeRGB == MODE_BUMP_ENVMAP_ATI) {
474 key->unit[i].NumArgsRGB = 2;
475 key->unit[i].ScaleShiftRGB = 0;
476 key->unit[i].OptRGB[0].Operand = OPR_SRC_COLOR;
477 key->unit[i].OptRGB[0].Source = SRC_TEXTURE;
478 key->unit[i].OptRGB[1].Operand = OPR_SRC_COLOR;
479 key->unit[i].OptRGB[1].Source = texUnit->BumpTarget - GL_TEXTURE0 + SRC_TEXTURE0;
508 keySize = sizeof(*key) - sizeof(key->unit)
509 + key->nr_enabled_units * sizeof(key->unit[0]);
525 /* Reg containing each texture unit's sampled texture color,
532 /* Reg containing texcoord for a texture unit,
568 GLuint src, GLuint unit)
575 return new(p->mem_ctx) ir_dereference_variable(p->src_texture[unit]);
592 var->max_array_access = MAX2(var->max_array_access, unit);
594 new(p->mem_ctx) ir_constant(unit));
619 GLuint unit,
625 src = get_source(p, source, unit);
654 * texture unit's combinder state. When the RGB and A sources and
657 static GLboolean args_match( const struct state_key *key, GLuint unit )
659 GLuint i, numArgs = key->unit[unit].NumArgsRGB;
662 if (key->unit[unit].OptA[i].Source != key->unit[unit].OptRGB[i].Source)
665 switch (key->unit[unit].OptA[i].Operand) {
667 switch (key->unit[unit].OptRGB[i].Operand) {
676 switch (key->unit[unit].OptRGB[i].Operand) {
703 GLuint unit,
715 src[i] = emit_combine_source( p, unit, opt[i].Source, opt[i].Operand );
780 * Generate instructions for one texture unit's env/combiner mode.
783 emit_texenv(struct texenv_fragment_program *p, GLuint unit)
789 if (!key->unit[unit].enabled) {
792 if (key->unit[unit].ModeRGB == MODE_BUMP_ENVMAP_ATI) {
797 switch (key->unit[unit].ModeRGB) {
799 alpha_shift = key->unit[unit].ScaleShiftA;
807 rgb_shift = key->unit[unit].ScaleShiftRGB;
808 alpha_shift = key->unit[unit].ScaleShiftA;
817 else if (need_saturate(key->unit[unit].ModeRGB))
824 else if (need_saturate(key->unit[unit].ModeA))
835 if (key->unit[unit].ModeRGB == key->unit[unit].ModeA &&
836 args_match(key, unit)) {
837 val = emit_combine(p, unit,
838 key->unit[unit].NumArgsRGB,
839 key->unit[unit].ModeRGB,
840 key->unit[unit].OptRGB);
847 else if (key->unit[unit].ModeRGB == MODE_DOT3_RGBA_EXT ||
848 key->unit[unit].ModeRGB == MODE_DOT3_RGBA) {
849 ir_rvalue *val = emit_combine(p, unit,
850 key->unit[unit].NumArgsRGB,
851 key->unit[unit].ModeRGB,
852 key->unit[unit].OptRGB);
862 val = emit_combine(p, unit,
863 key->unit[unit].NumArgsRGB,
864 key->unit[unit].ModeRGB,
865 key->unit[unit].OptRGB);
871 val = emit_combine(p, unit,
872 key->unit[unit].NumArgsA,
873 key->unit[unit].ModeA,
874 key->unit[unit].OptA);
912 static void load_texture( struct texenv_fragment_program *p, GLuint unit )
916 if (p->src_texture[unit])
919 const GLuint texTarget = p->state->unit[unit].source_index;
922 if (!(p->state->inputs_available & (FRAG_BIT_TEX0 << unit))) {
923 texcoord = get_current_attrib(p, VERT_ATTRIB_TEX0 + unit);
924 } else if (p->texcoord_tex[unit]) {
925 texcoord = new(p->mem_ctx) ir_dereference_variable(p->texcoord_tex[unit]);
930 ir_rvalue *index = new(p->mem_ctx) ir_constant(unit);
932 tc_array->max_array_access = MAX2(tc_array->max_array_access, unit);
935 if (!p->state->unit[unit].enabled) {
936 p->src_texture[unit] = p->make_temp(glsl_type::vec4_type,
938 p->emit(p->src_texture[unit]);
940 p->emit(assign(p->src_texture[unit], new(p->mem_ctx) ir_constant(0.0f)));
949 if (p->state->unit[unit].shadow)
956 if (p->state->unit[unit].shadow)
963 if (p->state->unit[unit].shadow)
970 if (p->state->unit[unit].shadow)
977 if (p->state->unit[unit].shadow)
984 assert(!p->state->unit[unit].shadow);
989 if (p->state->unit[unit].shadow)
996 assert(!p->state->unit[unit].shadow);
1002 p->src_texture[unit] = p->make_temp(glsl_type::vec4_type,
1008 char *sampler_name = ralloc_asprintf(p->mem_ctx, "sampler_%d", unit);
1014 /* Set the texture unit for this sampler. The linker will pick this value
1020 sampler->constant_value = new(p->mem_ctx) ir_constant(int(unit));
1027 if (p->state->unit[unit].shadow) {
1038 p->emit(assign(p->src_texture[unit], tex));
1043 GLuint src, GLuint unit)
1047 load_texture(p, unit);
1072 load_texunit_sources( struct texenv_fragment_program *p, GLuint unit )
1077 for (i = 0; i < key->unit[unit].NumArgsRGB; i++) {
1078 load_texenv_source( p, key->unit[unit].OptRGB[i].Source, unit );
1081 for (i = 0; i < key->unit[unit].NumArgsA; i++) {
1082 load_texenv_source( p, key->unit[unit].OptA[i].Source, unit );
1092 load_texunit_bumpmap( struct texenv_fragment_program *p, GLuint unit )
1095 GLuint bumpedUnitNr = key->unit[unit].OptRGB[1].Source - SRC_TEXTURE0;
1108 tc_array->max_array_access = MAX2(tc_array->max_array_access, unit);
1110 load_texenv_source( p, unit + SRC_TEXTURE0, unit );
1126 bump = get_source(p, key->unit[unit].OptRGB[0].Source, unit);
1220 GLuint unit;
1224 for (unit = 0; unit < key->nr_enabled_units; unit++) {
1225 if (key->unit[unit].enabled &&
1226 key->unit[unit].ModeRGB == MODE_BUMP_ENVMAP_ATI) {
1227 load_texunit_bumpmap(p, unit);
1235 for (unit = 0; unit < key->nr_enabled_units; unit++)
1236 if (key->unit[unit].enabled) {
1237 load_texunit_sources(p, unit);
1242 for (unit = 0; unit < key->nr_enabled_units; unit++) {
1243 if (key->unit[unit].enabled) {
1244 p->src_previous = emit_texenv(p, unit);
1289 unsigned int unit;
1317 for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
1318 p.src_texture[unit] = NULL;
1319 p.texcoord_tex[unit] = NULL;