Lines Matching full: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]) {
210 struct r300_fragment_shader_code* shader,
215 struct r300_fragment_shader_code* shader)
222 /* Make a simple fragment shader which outputs (0, 0, 0, 1) */
232 shader->dummy = TRUE;
233 r300_translate_fragment_shader(r300, shader, state.tokens);
240 struct r300_fragment_shader_code *shader)
242 struct rX00_fragment_program_code *generic_code = &shader->code;
243 unsigned imm_count = shader->immediates_count;
244 unsigned imm_first = shader->externals_count;
253 shader->cb_code_size = 19 +
258 NEW_CB(shader->cb_code, shader->cb_code_size);
308 shader->cb_code_size = 15 +
323 NEW_CB(shader->cb_code, shader->cb_code_size);
409 OUT_CB_REG(R300_FG_DEPTH_SRC, shader->fg_depth_src);
410 OUT_CB_REG(R300_US_W_FMT, shader->us_out_w);
416 struct r300_fragment_shader_code* shader,
424 tgsi_scan_shader(tokens, &shader->info);
425 r300_shader_read_fs_inputs(&shader->info, &shader->inputs);
427 wpos = shader->inputs.wpos;
428 face = shader->inputs.face;
436 compiler.code = &shader->code;
437 compiler.state = shader->compare_state;
452 compiler.UserData = &shader->inputs;
454 find_output_registers(&compiler, shader);
456 shader->write_all =
457 shader->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS];
466 ttr.info = &shader->info;
472 fprintf(stderr, "r300 FP: Cannot translate a shader. "
473 "Using a dummy shader instead.\n");
474 r300_dummy_fragment_shader(r300, shader);
503 fprintf(stderr, "r300 FP: Compiler Error:\n%sUsing a dummy shader"
506 if (shader->dummy) {
507 fprintf(stderr, "r300 FP: Cannot compile the dummy shader! "
513 r300_dummy_fragment_shader(r300, shader);
518 * use the dummy shader instead. */
519 if (shader->code.code.r500.inst_end == -1) {
521 r300_dummy_fragment_shader(r300, shader);
526 shader->externals_count = 0;
528 i < shader->code.constants.Count &&
529 shader->code.constants.Constants[i].Type == RC_CONSTANT_EXTERNAL; i++) {
530 shader->externals_count = i+1;
532 shader->immediates_count = 0;
533 shader->rc_state_count = 0;
535 for (i = shader->externals_count; i < shader->code.constants.Count; i++) {
536 switch (shader->code.constants.Constants[i].Type) {
538 ++shader->immediates_count;
541 ++shader->rc_state_count;
548 /* Setup shader depth output. */
549 if (shader->code.writes_depth) {
550 shader->fg_depth_src = R300_FG_DEPTH_SRC_SHADER;
551 shader->us_out_w = R300_W_FMT_W24 | R300_W_SRC_US;
553 shader->fg_depth_src = R300_FG_DEPTH_SRC_SCAN;
554 shader->us_out_w = R300_W_FMT_W0 | R300_W_SRC_US;
561 r300_emit_fs_code_to_buffer(r300, shader);
574 /* Build the fragment shader for the first time. */
575 fs->first = fs->shader = CALLOC_STRUCT(r300_fragment_shader_code);
577 memcpy(&fs->shader->compare_state, &state,
579 r300_translate_fragment_shader(r300, fs->shader, fs->state.tokens);
583 /* Check if the currently-bound shader has been compiled
585 if (memcmp(&fs->shader->compare_state, &state, sizeof(state)) != 0) {
586 /* Search for the right shader. */
590 if (fs->shader != ptr) {
591 fs->shader = ptr;
603 fs->first = fs->shader = ptr;