struct st_context *st_create_context(gl_api api, struct pipe_context *pipe, const struct gl_config *visual, struct st_context *share, const struct st_config_options *options) { struct gl_context *ctx; struct gl_context *shareCtx = share ? share->ctx : NULL; struct dd_function_table funcs; memset(&funcs, 0, sizeof(funcs)); st_init_driver_functions(&funcs); ctx = _mesa_create_context(api, visual, shareCtx, &funcs); if (!ctx) { return NULL; } st_init_driver_flags(&ctx->DriverFlags); /* XXX: need a capability bit in gallium to query if the pipe * driver prefers DP4 or MUL/MAD for vertex transformation. */ if (debug_get_option_mesa_mvp_dp4()) ctx->ShaderCompilerOptions[MESA_SHADER_VERTEX].PreferDP4 = GL_TRUE; return st_create_context_priv(ctx, pipe, options); }
struct st_context *st_create_context(gl_api api, struct pipe_context *pipe, const struct gl_config *visual, struct st_context *share, const struct st_config_options *options) { struct gl_context *ctx; struct gl_context *shareCtx = share ? share->ctx : NULL; struct dd_function_table funcs; /* Sanity checks */ STATIC_ASSERT(MESA_SHADER_VERTEX == PIPE_SHADER_VERTEX); STATIC_ASSERT(MESA_SHADER_FRAGMENT == PIPE_SHADER_FRAGMENT); STATIC_ASSERT(MESA_SHADER_GEOMETRY == PIPE_SHADER_GEOMETRY); memset(&funcs, 0, sizeof(funcs)); st_init_driver_functions(&funcs); ctx = _mesa_create_context(api, visual, shareCtx, &funcs); if (!ctx) { return NULL; } st_init_driver_flags(&ctx->DriverFlags); /* XXX: need a capability bit in gallium to query if the pipe * driver prefers DP4 or MUL/MAD for vertex transformation. */ if (debug_get_option_mesa_mvp_dp4()) _mesa_set_mvp_with_dp4( ctx, GL_TRUE ); return st_create_context_priv(ctx, pipe, options); }