static void initialize_mesa_context(struct gl_context *ctx, glslopt_target api) { gl_api mesaAPI; switch(api) { default: case kGlslTargetOpenGL: mesaAPI = API_OPENGL_COMPAT; break; case kGlslTargetOpenGLES20: mesaAPI = API_OPENGLES2; break; case kGlslTargetOpenGLES30: mesaAPI = API_OPENGL_CORE; break; case kGlslTargetMetal: mesaAPI = API_OPENGL_CORE; break; } initialize_context_to_defaults (ctx, mesaAPI); switch(api) { default: case kGlslTargetOpenGL: ctx->Const.GLSLVersion = 150; break; case kGlslTargetOpenGLES20: ctx->Extensions.OES_standard_derivatives = true; ctx->Extensions.EXT_shadow_samplers = true; ctx->Extensions.EXT_frag_depth = true; ctx->Extensions.EXT_shader_framebuffer_fetch = true; break; case kGlslTargetOpenGLES30: ctx->Extensions.ARB_ES3_compatibility = true; ctx->Extensions.EXT_shader_framebuffer_fetch = true; break; case kGlslTargetMetal: ctx->Extensions.ARB_ES3_compatibility = true; ctx->Extensions.EXT_shader_framebuffer_fetch = true; break; } // allow high amount of texcoords ctx->Const.MaxTextureCoordUnits = 16; ctx->Const.Program[MESA_SHADER_VERTEX].MaxTextureImageUnits = 16; ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits = 16; ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits = 16; // For GLES2.0 this would be 1, but we do support GL_EXT_draw_buffers ctx->Const.MaxDrawBuffers = 4; ctx->Driver.NewShader = _mesa_new_shader; ctx->Driver.DeleteShader = DeleteShader; }
static void initialize_context(struct gl_context *ctx, gl_api api) { initialize_context_to_defaults(ctx, api); ctx->Const.GLSLVersion = 130; ctx->Const.MaxClipPlanes = 8; ctx->Const.MaxDrawBuffers = 2; ctx->Const.MaxTextureCoordUnits = 4; ctx->Driver.NewShader = _mesa_new_shader; }
void common_builtin::SetUp() { this->mem_ctx = ralloc_context(NULL); this->ir.make_empty(); initialize_context_to_defaults(&this->ctx, API_OPENGL_COMPAT); this->shader = rzalloc(this->mem_ctx, gl_shader); this->shader->Type = this->shader_type; this->shader->Stage = _mesa_shader_enum_to_shader_stage(this->shader_type); this->state = new(mem_ctx) _mesa_glsl_parse_state(&this->ctx, this->shader->Stage, this->shader); _mesa_glsl_initialize_types(this->state); _mesa_glsl_initialize_variables(&this->ir, this->state); }