Lines Matching defs: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]) {
104 compiler->OutputColor[shader->info.output_semantic_index[i]] = i;
207 struct r300_fragment_shader_code* shader,
212 struct r300_fragment_shader_code* shader)
219 /* Make a simple fragment shader which outputs (0, 0, 0, 1) */
229 shader->dummy = TRUE;
230 r300_translate_fragment_shader(r300, shader, state.tokens);
237 struct r300_fragment_shader_code *shader)
239 struct rX00_fragment_program_code *generic_code = &shader->code;
240 unsigned imm_count = shader->immediates_count;
241 unsigned imm_first = shader->externals_count;
250 shader->cb_code_size = 19 +
255 NEW_CB(shader->cb_code, shader->cb_code_size);
305 shader->cb_code_size = 15 +
320 NEW_CB(shader->cb_code, shader->cb_code_size);
406 OUT_CB_REG(R300_FG_DEPTH_SRC, shader->fg_depth_src);
407 OUT_CB_REG(R300_US_W_FMT, shader->us_out_w);
413 struct r300_fragment_shader_code* shader,
421 tgsi_scan_shader(tokens, &shader->info);
422 r300_shader_read_fs_inputs(&shader->info, &shader->inputs);
424 wpos = shader->inputs.wpos;
425 face = shader->inputs.face;
432 compiler.code = &shader->code;
433 compiler.state = shader->compare_state;
434 if (!shader->dummy)
451 compiler.UserData = &shader->inputs;
453 find_output_registers(&compiler, shader);
455 shader->write_all =
456 shader->info.properties[TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS];
465 ttr.info = &shader->info;
471 fprintf(stderr, "r300 FP: Cannot translate a shader. "
472 "Using a dummy shader instead.\n");
473 r300_dummy_fragment_shader(r300, shader);
502 fprintf(stderr, "r300 FP: Compiler Error:\n%sUsing a dummy shader"
505 if (shader->dummy) {
506 fprintf(stderr, "r300 FP: Cannot compile the dummy shader! "
512 r300_dummy_fragment_shader(r300, shader);
517 * use the dummy shader instead. */
518 if (shader->code.code.r500.inst_end == -1) {
520 r300_dummy_fragment_shader(r300, shader);
525 shader->externals_count = 0;
527 i < shader->code.constants.Count &&
528 shader->code.constants.Constants[i].Type == RC_CONSTANT_EXTERNAL; i++) {
529 shader->externals_count = i+1;
531 shader->immediates_count = 0;
532 shader->rc_state_count = 0;
534 for (i = shader->externals_count; i < shader->code.constants.Count; i++) {
535 switch (shader->code.constants.Constants[i].Type) {
537 ++shader->immediates_count;
540 ++shader->rc_state_count;
547 /* Setup shader depth output. */
548 if (shader->code.writes_depth) {
549 shader->fg_depth_src = R300_FG_DEPTH_SRC_SHADER;
550 shader->us_out_w = R300_W_FMT_W24 | R300_W_SRC_US;
552 shader->fg_depth_src = R300_FG_DEPTH_SRC_SCAN;
553 shader->us_out_w = R300_W_FMT_W0 | R300_W_SRC_US;
560 r300_emit_fs_code_to_buffer(r300, shader);
570 /* Build the fragment shader for the first time. */
571 fs->first = fs->shader = CALLOC_STRUCT(r300_fragment_shader_code);
573 memcpy(&fs->shader->compare_state, state, sizeof(*state));
574 r300_translate_fragment_shader(r300, fs->shader, fs->state.tokens);
578 /* Check if the currently-bound shader has been compiled
580 if (memcmp(&fs->shader->compare_state, state, sizeof(*state)) != 0) {
581 /* Search for the right shader. */
585 if (fs->shader != ptr) {
586 fs->shader = ptr;
598 fs->first = fs->shader = ptr;