Browse Source

r300g: simplify allocations of FS input registers

tags/7.8-rc1
Marek Olšák 16 years ago
parent
commit
f55c088f89
1 changed files with 15 additions and 28 deletions
  1. 15
    28
      src/gallium/drivers/r300/r300_fs.c

+ 15
- 28
src/gallium/drivers/r300/r300_fs.c View File

@@ -66,6 +66,7 @@ static void r300_shader_read_fs_inputs(struct tgsi_shader_info* info,
}
}


static void find_output_registers(struct r300_fragment_program_compiler * compiler,
struct r300_fragment_shader * fs)
{
@@ -93,38 +94,24 @@ static void allocate_hardware_inputs(
void (*allocate)(void * data, unsigned input, unsigned hwreg),
void * mydata)
{
struct tgsi_shader_info* info = &((struct r300_fragment_shader*)c->UserData)->info;
int total_colors = 0;
int colors = 0;
int total_generic = 0;
int generic = 0;
int i;

for (i = 0; i < info->num_inputs; i++) {
switch (info->input_semantic_name[i]) {
case TGSI_SEMANTIC_COLOR:
total_colors++;
break;
case TGSI_SEMANTIC_FOG:
case TGSI_SEMANTIC_GENERIC:
total_generic++;
break;
struct r300_shader_semantics* inputs =
&((struct r300_fragment_shader*)c->UserData)->inputs;
int i, reg = 0;

/* Allocate input registers. */
for (i = 0; i < ATTR_COLOR_COUNT; i++) {
if (inputs->color[i] != ATTR_UNUSED) {
allocate(mydata, inputs->color[i], reg++);
}
}

for(i = 0; i < info->num_inputs; i++) {
switch (info->input_semantic_name[i]) {
case TGSI_SEMANTIC_COLOR:
allocate(mydata, i, colors);
colors++;
break;
case TGSI_SEMANTIC_FOG:
case TGSI_SEMANTIC_GENERIC:
allocate(mydata, i, total_colors + generic);
generic++;
break;
for (i = 0; i < ATTR_GENERIC_COUNT; i++) {
if (inputs->generic[i] != ATTR_UNUSED) {
allocate(mydata, inputs->generic[i], reg++);
}
}
if (inputs->fog != ATTR_UNUSED) {
allocate(mydata, inputs->fog, reg++);
}
}

void r300_translate_fragment_shader(struct r300_context* r300,

Loading…
Cancel
Save