dri/nouveau: Pass the API into _mesa_initialize_context
Currently we create a OPENGL_COMPAT context regardless of what was requested by the program. Correct that by retaining the program's request and passing it into _mesa_initialize_context. Based on a similar commit for radeon/r200 by Ian Romanick. Cc: "9.1 9.2 10.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
parent
118c36adb4
commit
76d9f6d972
|
@ -72,7 +72,7 @@ nouveau_context_create(gl_api api,
|
|||
return false;
|
||||
}
|
||||
|
||||
ctx = screen->driver->context_create(screen, visual, share_ctx);
|
||||
ctx = screen->driver->context_create(screen, api, visual, share_ctx);
|
||||
if (!ctx) {
|
||||
*error = __DRI_CTX_ERROR_NO_MEMORY;
|
||||
return GL_FALSE;
|
||||
|
@ -107,7 +107,8 @@ nouveau_context_create(gl_api api,
|
|||
}
|
||||
|
||||
GLboolean
|
||||
nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
|
||||
nouveau_context_init(struct gl_context *ctx, gl_api api,
|
||||
struct nouveau_screen *screen,
|
||||
const struct gl_config *visual, struct gl_context *share_ctx)
|
||||
{
|
||||
struct nouveau_context *nctx = to_nouveau_context(ctx);
|
||||
|
@ -125,7 +126,7 @@ nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
|
|||
nouveau_fbo_functions_init(&functions);
|
||||
|
||||
/* Initialize the mesa context. */
|
||||
_mesa_initialize_context(ctx, API_OPENGL_COMPAT, visual,
|
||||
_mesa_initialize_context(ctx, api, visual,
|
||||
share_ctx, &functions);
|
||||
|
||||
nouveau_state_init(ctx);
|
||||
|
|
|
@ -115,7 +115,8 @@ nouveau_context_create(gl_api api,
|
|||
void *share_ctx);
|
||||
|
||||
GLboolean
|
||||
nouveau_context_init(struct gl_context *ctx, struct nouveau_screen *screen,
|
||||
nouveau_context_init(struct gl_context *ctx, gl_api api,
|
||||
struct nouveau_screen *screen,
|
||||
const struct gl_config *visual, struct gl_context *share_ctx);
|
||||
|
||||
void
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
|
||||
struct nouveau_driver {
|
||||
struct gl_context *(*context_create)(struct nouveau_screen *screen,
|
||||
gl_api api,
|
||||
const struct gl_config *visual,
|
||||
struct gl_context *share_ctx);
|
||||
void (*context_destroy)(struct gl_context *ctx);
|
||||
|
|
|
@ -138,7 +138,8 @@ nv04_context_destroy(struct gl_context *ctx)
|
|||
}
|
||||
|
||||
static struct gl_context *
|
||||
nv04_context_create(struct nouveau_screen *screen, const struct gl_config *visual,
|
||||
nv04_context_create(struct nouveau_screen *screen, gl_api api,
|
||||
const struct gl_config *visual,
|
||||
struct gl_context *share_ctx)
|
||||
{
|
||||
struct nv04_context *nctx;
|
||||
|
@ -153,7 +154,7 @@ nv04_context_create(struct nouveau_screen *screen, const struct gl_config *visua
|
|||
ctx = &nctx->base.base;
|
||||
hw = &nctx->base.hw;
|
||||
|
||||
if (!nouveau_context_init(ctx, screen, visual, share_ctx))
|
||||
if (!nouveau_context_init(ctx, api, screen, visual, share_ctx))
|
||||
goto fail;
|
||||
|
||||
/* GL constants. */
|
||||
|
|
|
@ -427,7 +427,8 @@ nv10_context_destroy(struct gl_context *ctx)
|
|||
}
|
||||
|
||||
static struct gl_context *
|
||||
nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visual,
|
||||
nv10_context_create(struct nouveau_screen *screen, gl_api api,
|
||||
const struct gl_config *visual,
|
||||
struct gl_context *share_ctx)
|
||||
{
|
||||
struct nouveau_context *nctx;
|
||||
|
@ -441,7 +442,7 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
|
|||
|
||||
ctx = &nctx->base;
|
||||
|
||||
if (!nouveau_context_init(ctx, screen, visual, share_ctx))
|
||||
if (!nouveau_context_init(ctx, api, screen, visual, share_ctx))
|
||||
goto fail;
|
||||
|
||||
ctx->Extensions.ARB_texture_env_crossbar = true;
|
||||
|
|
|
@ -438,7 +438,8 @@ nv20_context_destroy(struct gl_context *ctx)
|
|||
}
|
||||
|
||||
static struct gl_context *
|
||||
nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visual,
|
||||
nv20_context_create(struct nouveau_screen *screen, gl_api api,
|
||||
const struct gl_config *visual,
|
||||
struct gl_context *share_ctx)
|
||||
{
|
||||
struct nouveau_context *nctx;
|
||||
|
@ -452,7 +453,7 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua
|
|||
|
||||
ctx = &nctx->base;
|
||||
|
||||
if (!nouveau_context_init(ctx, screen, visual, share_ctx))
|
||||
if (!nouveau_context_init(ctx, api, screen, visual, share_ctx))
|
||||
goto fail;
|
||||
|
||||
ctx->Extensions.ARB_texture_env_crossbar = true;
|
||||
|
|
Loading…
Reference in New Issue