The brw_shader_info struct is rendundant and could be removed...
#include "pipe/p_defines.h"
#include "pipe/p_state.h"
+#include "tgsi/util/tgsi_scan.h"
+
#include "brw_structs.h"
#include "brw_winsys.h"
struct brw_vertex_program {
struct pipe_shader_state program;
- struct brw_shader_info info;
+ struct tgsi_shader_info info;
+ struct brw_shader_info info2; /* XXX get rid of this */
int id;
};
struct brw_fragment_program {
struct pipe_shader_state program;
- struct brw_shader_info info;
+ struct tgsi_shader_info info;
+ struct brw_shader_info info2; /* XXX get rid of this */
boolean UsesDepth;
boolean UsesKill;
struct brw_vertex_element_packet vep;
unsigned i;
- unsigned nr_enabled = brw->attribs.VertexProgram->program.num_inputs;
+ unsigned nr_enabled = brw->attribs.VertexProgram->info.num_inputs;
memset(&vep, 0, sizeof(vep));
key.vp_output_count = brw->vs.prog_data->outputs_written;
/* BRW_NEW_FS */
- key.fp_input_count = brw->attribs.FragmentProgram->info.nr_regs[TGSI_FILE_INPUT];
+ key.fp_input_count = brw->attribs.FragmentProgram->info2.nr_regs[TGSI_FILE_INPUT];
/* BRW_NEW_REDUCED_PRIMITIVE */
#include "tgsi/util/tgsi_parse.h"
-
-
+/**
+ * XXX try to get rid of this. See tgsi_scan_shader() and tgsi_shader_info.
+ */
void brw_shader_info(const struct tgsi_token *tokens,
struct brw_shader_info *info )
{
brw_fp->program = *shader;
brw_fp->id = brw_context(pipe)->program_id++;
+ tgsi_scan_shader(shader->tokens, &brw_fp->info);
+
brw_shader_info(shader->tokens,
- &brw_fp->info);
+ &brw_fp->info2);
tgsi_dump(shader->tokens, 0);
*/
brw_vp->program = *shader;
brw_vp->id = brw_context(pipe)->program_id++;
+
+ tgsi_scan_shader(shader->tokens, &brw_vp->info);
+
brw_shader_info(shader->tokens,
- &brw_vp->info);
+ &brw_vp->info2);
tgsi_dump(shader->tokens, 0);
/* Then a copy of our part of the CURBE entry:
*/
{
- int nr_constants = c->fp->info.nr_regs[TGSI_FILE_CONSTANT];
+ int nr_constants = c->fp->info2.nr_regs[TGSI_FILE_CONSTANT];
int index = 0;
c->prog_data.max_const = 4*nr_constants;
/* Next we receive the plane coefficients for parameter
* interpolation:
*/
- for (i = 0; i < c->fp->info.nr_regs[TGSI_FILE_INPUT]; i++) {
+ for (i = 0; i < c->fp->info2.nr_regs[TGSI_FILE_INPUT]; i++) {
c->payload_coef[i] = brw_vec8_grf(c->reg_index, 0);
c->reg_index += 2;
}
/* Now allocate room for the interpolated inputs and staging
* registers for the outputs:
*/
- for (i = 0; i < c->fp->info.nr_regs[TGSI_FILE_INPUT]; i++)
+ for (i = 0; i < c->fp->info2.nr_regs[TGSI_FILE_INPUT]; i++)
for (j = 0; j < 4; j++)
c->wm_regs[TGSI_FILE_INPUT][i][j] = brw_vec8_grf( c->reg_index++, 0 );
- for (i = 0; i < c->fp->info.nr_regs[TGSI_FILE_OUTPUT]; i++)
+ for (i = 0; i < c->fp->info2.nr_regs[TGSI_FILE_OUTPUT]; i++)
for (j = 0; j < 4; j++)
c->wm_regs[TGSI_FILE_OUTPUT][i][j] = brw_vec8_grf( c->reg_index++, 0 );