Lines Matching refs:prog
76 struct gl_program *prog, in set_affected_state_flags() argument
85 if (prog->Parameters->NumParameters) in set_affected_state_flags()
88 if (prog->info.num_textures) in set_affected_state_flags()
91 if (prog->info.num_images) in set_affected_state_flags()
94 if (prog->info.num_ubos) in set_affected_state_flags()
97 if (prog->info.num_ssbos) in set_affected_state_flags()
100 if (prog->info.num_abos) in set_affected_state_flags()
108 st_set_prog_affected_state_flags(struct gl_program *prog) in st_set_prog_affected_state_flags() argument
112 switch (prog->info.stage) { in st_set_prog_affected_state_flags()
114 states = &prog->affected_states; in st_set_prog_affected_state_flags()
120 set_affected_state_flags(states, prog, in st_set_prog_affected_state_flags()
131 states = &prog->affected_states; in st_set_prog_affected_state_flags()
135 set_affected_state_flags(states, prog, in st_set_prog_affected_state_flags()
146 states = &prog->affected_states; in st_set_prog_affected_state_flags()
151 set_affected_state_flags(states, prog, in st_set_prog_affected_state_flags()
162 states = &prog->affected_states; in st_set_prog_affected_state_flags()
167 set_affected_state_flags(states, prog, in st_set_prog_affected_state_flags()
178 states = &prog->affected_states; in st_set_prog_affected_state_flags()
185 set_affected_state_flags(states, prog, in st_set_prog_affected_state_flags()
196 states = &prog->affected_states; in st_set_prog_affected_state_flags()
200 set_affected_state_flags(states, prog, in st_set_prog_affected_state_flags()
371 struct gl_program *prog) in st_prog_to_nir_postprocess() argument
386 NIR_PASS(_, nir, st_nir_lower_wpos_ytransform, prog, screen); in st_prog_to_nir_postprocess()
404 st_serialize_base_nir(prog, nir); in st_prog_to_nir_postprocess()
405 st_finalize_nir(st, prog, NULL, nir, true, false); in st_prog_to_nir_postprocess()
423 st_prepare_vertex_program(struct gl_program *prog) in st_prepare_vertex_program() argument
425 struct gl_vertex_program *stvp = (struct gl_vertex_program *)prog; in st_prepare_vertex_program()
427 stvp->num_inputs = util_bitcount64(prog->info.inputs_read); in st_prepare_vertex_program()
428 stvp->vert_attrib_mask = prog->info.inputs_read; in st_prepare_vertex_program()
434 if (prog->info.outputs_written & BITFIELD64_BIT(attr)) in st_prepare_vertex_program()
442 st_translate_stream_output_info(struct gl_program *prog) in st_translate_stream_output_info() argument
444 struct gl_transform_feedback_info *info = prog->sh.LinkedTransformFeedback; in st_translate_stream_output_info()
458 if (prog->skip_pointsize_xfb && attr == VARYING_SLOT_PSIZ) in st_translate_stream_output_info()
460 if (prog->info.outputs_written & BITFIELD64_BIT(attr)) in st_translate_stream_output_info()
466 &prog->state.stream_output; in st_translate_stream_output_info()
583 struct gl_program *prog) in st_translate_vertex_program() argument
588 prog->affected_states = ST_NEW_VS_STATE | in st_translate_vertex_program()
592 if (prog->Parameters->NumParameters) in st_translate_vertex_program()
593 prog->affected_states |= ST_NEW_VS_CONSTANTS; in st_translate_vertex_program()
595 if (prog->arb.Instructions && prog->nir) in st_translate_vertex_program()
596 ralloc_free(prog->nir); in st_translate_vertex_program()
598 if (prog->serialized_nir) { in st_translate_vertex_program()
599 free(prog->serialized_nir); in st_translate_vertex_program()
600 prog->serialized_nir = NULL; in st_translate_vertex_program()
602 free(prog->base_serialized_nir); in st_translate_vertex_program()
604 prog->state.type = PIPE_SHADER_IR_NIR; in st_translate_vertex_program()
605 if (prog->arb.Instructions) in st_translate_vertex_program()
606 prog->nir = prog_to_nir(st->ctx, prog); in st_translate_vertex_program()
607 st_prog_to_nir_postprocess(st, prog->nir, prog); in st_translate_vertex_program()
608 prog->info = prog->nir->info; in st_translate_vertex_program()
610 st_prepare_vertex_program(prog); in st_translate_vertex_program()
665 get_nir_shader(struct st_context *st, struct gl_program *prog, bool is_draw) in get_nir_shader() argument
667 if ((!is_draw || !st->ctx->Const.PackedDriverUniformStorage) && prog->nir) { in get_nir_shader()
668 nir_shader *nir = prog->nir; in get_nir_shader()
674 prog->nir = NULL; in get_nir_shader()
675 assert(prog->serialized_nir && prog->serialized_nir_size); in get_nir_shader()
681 is_draw ? &draw_nir_options : st_get_nir_compiler_options(st, prog->info.stage); in get_nir_shader()
684 (!prog->shader_program || prog->shader_program->data->LinkStatus != LINKING_SKIPPED)) { in get_nir_shader()
685 assert(prog->base_serialized_nir); in get_nir_shader()
686 blob_reader_init(&blob_reader, prog->base_serialized_nir, prog->base_serialized_nir_size); in get_nir_shader()
688 assert(prog->serialized_nir); in get_nir_shader()
689 blob_reader_init(&blob_reader, prog->serialized_nir, prog->serialized_nir_size); in get_nir_shader()
796 struct gl_program *prog, in st_create_common_variant() argument
806 struct gl_program_parameter_list *params = prog->Parameters; in st_create_common_variant()
810 state.stream_output = prog->state.stream_output; in st_create_common_variant()
815 state.ir.nir = get_nir_shader(st, prog, key->is_draw_shader); in st_create_common_variant()
852 st_finalize_nir(st, prog, prog->shader_program, state.ir.nir, false, in st_create_common_variant()
929 struct gl_program *prog, in st_get_common_variant() argument
935 for (v = st_common_variant(prog->variants); v; in st_get_common_variant()
943 if (prog->variants != NULL) { in st_get_common_variant()
946 _mesa_shader_stage_to_string(prog->info.stage), in st_get_common_variant()
956 v = st_create_common_variant(st, prog, key); in st_get_common_variant()
960 if (prog->info.stage == MESA_SHADER_VERTEX) { in st_get_common_variant()
961 struct gl_vertex_program *vp = (struct gl_vertex_program *)prog; in st_get_common_variant()
968 st_add_variant(&prog->variants, &v->base); in st_get_common_variant()
981 struct gl_program *prog) in st_translate_fragment_program() argument
988 prog->affected_states = ST_NEW_FS_STATE | in st_translate_fragment_program()
992 if (prog->ati_fs) { in st_translate_fragment_program()
994 prog->affected_states |= ST_NEW_FS_SAMPLER_VIEWS | in st_translate_fragment_program()
998 if (prog->SamplersUsed) in st_translate_fragment_program()
999 prog->affected_states |= ST_NEW_FS_SAMPLER_VIEWS | in st_translate_fragment_program()
1004 if (prog->nir && prog->arb.Instructions) in st_translate_fragment_program()
1005 ralloc_free(prog->nir); in st_translate_fragment_program()
1007 if (prog->serialized_nir) { in st_translate_fragment_program()
1008 free(prog->serialized_nir); in st_translate_fragment_program()
1009 prog->serialized_nir = NULL; in st_translate_fragment_program()
1012 prog->state.type = PIPE_SHADER_IR_NIR; in st_translate_fragment_program()
1013 if (prog->arb.Instructions) { in st_translate_fragment_program()
1014 prog->nir = prog_to_nir(st->ctx, prog); in st_translate_fragment_program()
1015 } else if (prog->ati_fs) { in st_translate_fragment_program()
1019 assert(!prog->nir); in st_translate_fragment_program()
1020 prog->nir = st_translate_atifs_program(prog->ati_fs, prog, options); in st_translate_fragment_program()
1022 st_prog_to_nir_postprocess(st, prog->nir, prog); in st_translate_fragment_program()
1024 prog->info = prog->nir->info; in st_translate_fragment_program()
1025 if (prog->ati_fs) { in st_translate_fragment_program()
1030 prog->info.inputs_read |= VARYING_BIT_FOGC; in st_translate_fragment_program()
1433 struct gl_program *prog) in st_precompile_shader_variant() argument
1435 switch (prog->Target) { in st_precompile_shader_variant()
1447 (prog->info.outputs_written & (VARYING_SLOT_COL0 | in st_precompile_shader_variant()
1455 st_get_common_variant(st, prog, &key); in st_precompile_shader_variant()
1466 if (prog->ati_fs) { in st_precompile_shader_variant()
1474 if (!prog->shader_program) in st_precompile_shader_variant()
1475 key.depth_textures = prog->ShadowSamplers; in st_precompile_shader_variant()
1477 st_get_fp_variant(st, prog, &key); in st_precompile_shader_variant()
1487 st_serialize_nir(struct gl_program *prog) in st_serialize_nir() argument
1489 if (!prog->serialized_nir) { in st_serialize_nir()
1494 nir_serialize(&blob, prog->nir, false); in st_serialize_nir()
1495 blob_finish_get_buffer(&blob, &prog->serialized_nir, &size); in st_serialize_nir()
1496 prog->serialized_nir_size = size; in st_serialize_nir()
1501 st_serialize_base_nir(struct gl_program *prog, nir_shader *nir) in st_serialize_base_nir() argument
1503 if (!prog->base_serialized_nir && nir->info.stage == MESA_SHADER_VERTEX) { in st_serialize_base_nir()
1509 blob_finish_get_buffer(&blob, &prog->base_serialized_nir, &size); in st_serialize_base_nir()
1510 prog->base_serialized_nir_size = size; in st_serialize_base_nir()
1515 st_finalize_program(struct st_context *st, struct gl_program *prog) in st_finalize_program() argument
1522 if (prog->info.stage == MESA_SHADER_VERTEX) in st_finalize_program()
1523 is_bound = prog == ctx->VertexProgram._Current; in st_finalize_program()
1524 else if (prog->info.stage == MESA_SHADER_TESS_CTRL) in st_finalize_program()
1525 is_bound = prog == ctx->TessCtrlProgram._Current; in st_finalize_program()
1526 else if (prog->info.stage == MESA_SHADER_TESS_EVAL) in st_finalize_program()
1527 is_bound = prog == ctx->TessEvalProgram._Current; in st_finalize_program()
1528 else if (prog->info.stage == MESA_SHADER_GEOMETRY) in st_finalize_program()
1529 is_bound = prog == ctx->GeometryProgram._Current; in st_finalize_program()
1530 else if (prog->info.stage == MESA_SHADER_FRAGMENT) in st_finalize_program()
1531 is_bound = prog == ctx->FragmentProgram._Current; in st_finalize_program()
1532 else if (prog->info.stage == MESA_SHADER_COMPUTE) in st_finalize_program()
1533 is_bound = prog == ctx->ComputeProgram._Current; in st_finalize_program()
1536 if (prog->info.stage == MESA_SHADER_VERTEX) { in st_finalize_program()
1538 ctx->NewDriverState |= ST_NEW_VERTEX_PROGRAM(ctx, prog); in st_finalize_program()
1540 ctx->NewDriverState |= prog->affected_states; in st_finalize_program()
1544 if (prog->nir) { in st_finalize_program()
1545 nir_sweep(prog->nir); in st_finalize_program()
1551 st_serialize_base_nir(prog, prog->nir); in st_finalize_program()
1552 st_serialize_nir(prog); in st_finalize_program()
1556 st_precompile_shader_variant(st, prog); in st_finalize_program()
1566 struct gl_program *prog ) in st_program_string_notify() argument
1571 assert(!prog->shader_program); in st_program_string_notify()
1573 st_release_variants(st, prog); in st_program_string_notify()
1577 if (!st_translate_fragment_program(st, prog)) in st_program_string_notify()
1580 if (!st_translate_vertex_program(st, prog)) in st_program_string_notify()
1583 gl_nir_can_add_pointsize_to_program(&st->ctx->Const, prog)) { in st_program_string_notify()
1584 prog->skip_pointsize_xfb = true; in st_program_string_notify()
1585 NIR_PASS(_, prog->nir, gl_nir_add_point_size); in st_program_string_notify()
1589 st_finalize_program(st, prog); in st_program_string_notify()