Lines Matching refs:shader

89                                   struct r300_fragment_shader_code *shader)
94 compiler->OutputColor[0] = shader->info.num_outputs;
95 compiler->OutputColor[1] = shader->info.num_outputs;
96 compiler->OutputColor[2] = shader->info.num_outputs;
97 compiler->OutputColor[3] = shader->info.num_outputs;
98 compiler->OutputDepth = shader->info.num_outputs;
101 for(i = 0; i < shader->info.num_outputs; ++i) {
102 switch(shader->info.output_semantic_name[i]) {
223 struct r300_fragment_shader_code* shader,
228 struct r300_fragment_shader_code* shader)
235 /* Make a simple fragment shader which outputs (0, 0, 0, 1) */
245 shader->dummy = TRUE;
246 r300_translate_fragment_shader(r300, shader, state.tokens);
253 struct r300_fragment_shader_code *shader)
255 struct rX00_fragment_program_code *generic_code = &shader->code;
256 unsigned imm_count = shader->immediates_count;
257 unsigned imm_first = shader->externals_count;
266 shader->cb_code_size = 19 +
271 NEW_CB(shader->cb_code, shader->cb_code_size);
321 shader->cb_code_size = 15 +
336 NEW_CB(shader->cb_code, shader->cb_code_size);
422 OUT_CB_REG(R300_FG_DEPTH_SRC, shader->fg_depth_src);
423 OUT_CB_REG(R300_US_W_FMT, shader->us_out_w);
429 struct r300_fragment_shader_code* shader,
437 tgsi_scan_shader(tokens, &shader->info);
438 r300_shader_read_fs_inputs(&shader->info, &shader->inputs);
440 wpos = shader->inputs.wpos;
441 face = shader->inputs.face;
449 compiler.code = &shader->code;
450 compiler.state = shader->compare_state;
465 compiler.UserData = &shader->inputs;
467 find_output_registers(&compiler, shader);
469 shader->write_all = FALSE;
470 for (i = 0; i < shader->info.num_properties; i++) {
471 if (shader->info.properties[i].name == TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS) {
472 shader->write_all = TRUE;
483 ttr.info = &shader->info;
489 fprintf(stderr, "r300 FP: Cannot translate a shader. "
490 "Using a dummy shader instead.\n");
491 r300_dummy_fragment_shader(r300, shader);
520 fprintf(stderr, "r300 FP: Compiler Error:\n%sUsing a dummy shader"
523 if (shader->dummy) {
524 fprintf(stderr, "r300 FP: Cannot compile the dummy shader! "
530 r300_dummy_fragment_shader(r300, shader);
535 * use the dummy shader instead. */
536 if (shader->code.code.r500.inst_end == -1) {
538 r300_dummy_fragment_shader(r300, shader);
543 shader->externals_count = 0;
545 i < shader->code.constants.Count &&
546 shader->code.constants.Constants[i].Type == RC_CONSTANT_EXTERNAL; i++) {
547 shader->externals_count = i+1;
549 shader->immediates_count = 0;
550 shader->rc_state_count = 0;
552 for (i = shader->externals_count; i < shader->code.constants.Count; i++) {
553 switch (shader->code.constants.Constants[i].Type) {
555 ++shader->immediates_count;
558 ++shader->rc_state_count;
565 /* Setup shader depth output. */
566 if (shader->code.writes_depth) {
567 shader->fg_depth_src = R300_FG_DEPTH_SRC_SHADER;
568 shader->us_out_w = R300_W_FMT_W24 | R300_W_SRC_US;
570 shader->fg_depth_src = R300_FG_DEPTH_SRC_SCAN;
571 shader->us_out_w = R300_W_FMT_W0 | R300_W_SRC_US;
578 r300_emit_fs_code_to_buffer(r300, shader);
590 /* Build the fragment shader for the first time. */
591 fs->first = fs->shader = CALLOC_STRUCT(r300_fragment_shader_code);
593 memcpy(&fs->shader->compare_state, &state,
595 r300_translate_fragment_shader(r300, fs->shader, fs->state.tokens);
599 /* Check if the currently-bound shader has been compiled
601 if (memcmp(&fs->shader->compare_state, &state, sizeof(state)) != 0) {
602 /* Search for the right shader. */
606 if (fs->shader != ptr) {
607 fs->shader = ptr;
619 fs->first = fs->shader = ptr;