Lines Matching refs:state

512 _mesa_glsl_msg(const YYLTYPE *locp, _mesa_glsl_parse_state *state,
518 assert(state->info_log != NULL);
521 int msg_offset = strlen(state->info_log);
524 ralloc_asprintf_append(&state->info_log, "\"%s\"", locp->path);
526 ralloc_asprintf_append(&state->info_log, "%u", locp->source);
528 ralloc_asprintf_append(&state->info_log, ":%u(%u): %s: ",
532 ralloc_vasprintf_append(&state->info_log, fmt, ap);
534 const char *const msg = &state->info_log[msg_offset];
535 struct gl_context *ctx = state->ctx;
540 ralloc_strcat(&state->info_log, "\n");
544 _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state,
549 state->error = true;
552 _mesa_glsl_msg(locp, state, MESA_DEBUG_TYPE_ERROR, fmt, ap);
558 _mesa_glsl_warning(const YYLTYPE *locp, _mesa_glsl_parse_state *state,
561 if (state->warnings_enabled) {
565 _mesa_glsl_msg(locp, state, MESA_DEBUG_TYPE_OTHER, fmt, ap);
623 bool compatible_with_state(const _mesa_glsl_parse_state *state,
625 void set_flags(_mesa_glsl_parse_state *state, ext_behavior behavior) const;
793 * API, and extension information in the current parser state.
796 const _mesa_glsl_parse_state *state, gl_api api, uint8_t gl_version) const
798 return this->available_pred(state->exts, api, gl_version);
802 * Set the appropriate flags in the parser state to establish the
805 void _mesa_glsl_extension::set_flags(_mesa_glsl_parse_state *state,
808 /* Note: the ->* operator indexes into state by the
812 state->*(this->enable_flag) = (behavior != extension_disable);
813 state->*(this->warn_flag) = (behavior == extension_warn);
833 _mesa_glsl_parse_state *state)
835 uint8_t gl_version = state->exts->Version;
836 gl_api api = state->api;
847 _mesa_glsl_error(behavior_locp, state,
856 if (state->es_shader && api != API_OPENGLES2)
862 gl_version = state->gl_version;
866 _mesa_glsl_error(name_locp, state, "cannot %s all extensions",
875 if (extension->compatible_with_state(state, api, gl_version)) {
876 _mesa_glsl_supported_extensions[i].set_flags(state, behavior);
883 (extension->compatible_with_state(state, api, gl_version) ||
884 (state->consts->AllowGLSLCompatShaders &&
885 extension->compatible_with_state(state, API_OPENGL_COMPAT, gl_version)))) {
886 extension->set_flags(state, behavior);
899 assert(extension->compatible_with_state(state, api, gl_version));
900 extension->set_flags(state, behavior);
907 _mesa_glsl_error(name_locp, state, fmt,
908 name, _mesa_shader_stage_to_string(state->stage));
911 _mesa_glsl_warning(name_locp, state, fmt,
912 name, _mesa_shader_stage_to_string(state->stage));
1021 _mesa_glsl_parse_state *state,
1026 if (!state->has_shader_storage_buffer_objects()) {
1027 _mesa_glsl_error(locp, state,
1030 } else if (state->ARB_shader_storage_buffer_object_warn) {
1031 _mesa_glsl_warning(locp, state,
1036 if (!state->has_uniform_buffer_objects()) {
1037 _mesa_glsl_error(locp, state,
1040 } else if (state->ARB_uniform_buffer_object_warn) {
1041 _mesa_glsl_warning(locp, state,
1046 if (!state->has_shader_io_blocks()) {
1047 if (state->es_shader) {
1048 _mesa_glsl_error(locp, state,
1052 _mesa_glsl_error(locp, state,
1063 if ((state->stage == MESA_SHADER_VERTEX) && q.flags.q.in) {
1064 _mesa_glsl_error(locp, state,
1067 } else if ((state->stage == MESA_SHADER_FRAGMENT) && q.flags.q.out) {
1068 _mesa_glsl_error(locp, state,
1078 state->check_version(150, 300, locp, "interface blocks with "
1105 if (state->stage == MESA_SHADER_GEOMETRY &&
1106 state->has_explicit_attrib_stream() &&
1111 block->default_layout.stream = state->out_qualifier->stream;
1114 if (state->has_enhanced_layouts() && block->default_layout.flags.q.out) {
1118 block->default_layout.xfb_buffer = state->out_qualifier->xfb_buffer;
1138 _mesa_glsl_error(locp, state,
1145 _mesa_glsl_error(locp, state,
1773 struct _mesa_glsl_parse_state *state)
1779 assert(!state->in_qualifier->flags.i);
1784 assert(!state->cs_input_local_size_specified);
1785 assert(!state->cs_input_local_size_variable_specified);
1786 assert(state->cs_derivative_group == DERIVATIVE_GROUP_NONE);
1791 assert(!state->fs_uses_gl_fragcoord);
1792 assert(!state->fs_redeclares_gl_fragcoord);
1793 assert(!state->fs_pixel_center_integer);
1794 assert(!state->fs_origin_upper_left);
1795 assert(!state->fs_early_fragment_tests);
1796 assert(!state->fs_inner_coverage);
1797 assert(!state->fs_post_depth_coverage);
1798 assert(!state->fs_pixel_interlock_ordered);
1799 assert(!state->fs_pixel_interlock_unordered);
1800 assert(!state->fs_sample_interlock_ordered);
1801 assert(!state->fs_sample_interlock_unordered);
1805 if (state->out_qualifier->out_xfb_stride[i]) {
1807 if (state->out_qualifier->out_xfb_stride[i]->
1808 process_qualifier_constant(state, "xfb_stride", &xfb_stride,
1818 if (state->tcs_output_vertices_specified) {
1820 if (state->out_qualifier->vertices->
1821 process_qualifier_constant(state, "vertices", &vertices,
1824 YYLTYPE loc = state->out_qualifier->vertices->get_location();
1825 if (vertices > state->Const.MaxPatchVertices) {
1826 _mesa_glsl_error(&loc, state, "vertices (%d) exceeds "
1834 shader->OES_tessellation_point_size_enable = state->OES_tessellation_point_size_enable || state->EXT_tessellation_point_size_enable;
1836 if (state->in_qualifier->flags.q.prim_type) {
1837 switch (state->in_qualifier->prim_type) {
1851 if (state->in_qualifier->flags.q.vertex_spacing)
1852 shader->info.TessEval.Spacing = state->in_qualifier->vertex_spacing;
1855 if (state->in_qualifier->flags.q.ordering)
1856 shader->info.TessEval.VertexOrder = state->in_qualifier->ordering;
1859 if (state->in_qualifier->flags.q.point_mode)
1860 shader->info.TessEval.PointMode = state->in_qualifier->point_mode;
1863 shader->OES_geometry_point_size_enable = state->OES_geometry_point_size_enable || state->EXT_geometry_point_size_enable;
1865 if (state->out_qualifier->flags.q.max_vertices) {
1867 if (state->out_qualifier->max_vertices->
1868 process_qualifier_constant(state, "max_vertices",
1871 if (qual_max_vertices > state->Const.MaxGeometryOutputVertices) {
1872 YYLTYPE loc = state->out_qualifier->max_vertices->get_location();
1873 _mesa_glsl_error(&loc, state,
1882 if (state->gs_input_prim_type_specified) {
1883 shader->info.Geom.InputType = (enum shader_prim)state->in_qualifier->prim_type;
1888 if (state->out_qualifier->flags.q.prim_type) {
1889 shader->info.Geom.OutputType = (enum shader_prim)state->out_qualifier->prim_type;
1895 if (state->in_qualifier->flags.q.invocations) {
1897 if (state->in_qualifier->invocations->
1898 process_qualifier_constant(state, "invocations",
1901 YYLTYPE loc = state->in_qualifier->invocations->get_location();
1902 if (invocations > state->Const.MaxGeometryShaderInvocations) {
1903 _mesa_glsl_error(&loc, state,
1914 if (state->cs_input_local_size_specified) {
1916 shader->info.Comp.LocalSize[i] = state->cs_input_local_size[i];
1923 state->cs_input_local_size_variable_specified;
1925 shader->info.Comp.DerivativeGroup = state->cs_derivative_group;
1927 if (state->NV_compute_shader_derivatives_enable) {
1934 _mesa_glsl_error(&loc, state, "derivative_group_quadsNV must be used with a "
1939 _mesa_glsl_error(&loc, state, "derivative_group_quadsNV must be used with a "
1947 _mesa_glsl_error(&loc, state, "derivative_group_linearNV must be used with a "
1957 shader->redeclares_gl_fragcoord = state->fs_redeclares_gl_fragcoord;
1958 shader->uses_gl_fragcoord = state->fs_uses_gl_fragcoord;
1959 shader->pixel_center_integer = state->fs_pixel_center_integer;
1960 shader->origin_upper_left = state->fs_origin_upper_left;
1962 state->ARB_fragment_coord_conventions_enable;
1963 shader->EarlyFragmentTests = state->fs_early_fragment_tests;
1964 shader->InnerCoverage = state->fs_inner_coverage;
1965 shader->PostDepthCoverage = state->fs_post_depth_coverage;
1966 shader->PixelInterlockOrdered = state->fs_pixel_interlock_ordered;
1967 shader->PixelInterlockUnordered = state->fs_pixel_interlock_unordered;
1968 shader->SampleInterlockOrdered = state->fs_sample_interlock_ordered;
1969 shader->SampleInterlockUnordered = state->fs_sample_interlock_unordered;
1970 shader->BlendSupport = state->fs_blend_support;
1978 shader->bindless_sampler = state->bindless_sampler_specified;
1979 shader->bindless_image = state->bindless_image_specified;
1980 shader->bound_sampler = state->bound_sampler_specified;
1981 shader->bound_image = state->bound_image_specified;
1982 shader->redeclares_gl_layer = state->redeclares_gl_layer;
1983 shader->layer_viewport_relative = state->layer_viewport_relative;
2032 assign_subroutine_indexes(struct _mesa_glsl_parse_state *state)
2037 for (j = 0; j < state->num_subroutines; j++) {
2038 while (state->subroutines[j]->subroutine_index == -1) {
2039 for (k = 0; k < state->num_subroutines; k++) {
2040 if (state->subroutines[k]->subroutine_index == index)
2042 else if (k == state->num_subroutines - 1) {
2043 state->subroutines[j]->subroutine_index = index;
2052 add_builtin_defines(struct _mesa_glsl_parse_state *state,
2058 unsigned gl_version = state->exts->Version;
2059 gl_api api = state->api;
2063 for (i = 0; i < state->num_supported_versions; i++) {
2064 if (state->supported_versions[i].ver == version &&
2065 state->supported_versions[i].es == es) {
2066 gl_version = state->supported_versions[i].gl_ver;
2071 if (i == state->num_supported_versions)
2082 if (extension->compatible_with_state(state, api, gl_version)) {
2090 do_late_parsing_checks(struct _mesa_glsl_parse_state *state)
2092 if (state->stage == MESA_SHADER_COMPUTE && !state->has_compute_shader()) {
2095 _mesa_glsl_error(&loc, state, "Compute shaders require "
2237 struct _mesa_glsl_parse_state *state =
2245 state->error = glcpp_preprocess(state, &source, &state->info_log,
2246 add_builtin_defines, state, ctx);
2258 if (!state->error) {
2259 _mesa_glsl_lexer_ctor(state, source);
2260 _mesa_glsl_parse(state);
2261 _mesa_glsl_lexer_dtor(state);
2262 do_late_parsing_checks(state);
2266 foreach_list_typed(ast_node, ast, link, &state->translation_unit) {
2274 if (!state->error && !state->translation_unit.is_empty())
2275 _mesa_ast_to_hir(shader->ir, state);
2277 if (!state->error) {
2282 _mesa_print_ir(stdout, shader->ir, state);
2289 if (!state->error)
2290 set_shader_inout_layout(shader, state);
2293 shader->CompileStatus = state->error ? COMPILE_FAILURE : COMPILE_SUCCESS;
2294 shader->InfoLog = state->info_log;
2295 shader->Version = state->language_version;
2296 shader->IsES = state->es_shader;
2301 if (!state->error && !shader->ir->is_empty()) {
2302 if (state->es_shader &&
2306 assign_subroutine_indexes(state);
2307 lower_subroutine(shader->ir, state);
2308 opt_shader_and_create_symbol_table(&ctx->Const, state->symbols, shader);
2325 delete state->symbols;
2326 ralloc_free(state);