diff options
author | Chia-I Wu <[email protected]> | 2010-09-08 17:41:43 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-09-08 18:20:44 +0800 |
commit | 444d8408e75bb2bce019769da59802f05c3d5fab (patch) | |
tree | 9913fda53f6727f2d09da92e5f0aaa0b11f9cc34 /src/gallium/state_trackers/dri/common/dri_context.c | |
parent | 8e3b658b7fdc1c2a2b9b6bd942a811adbf1ac4ab (diff) |
st/dri: Use enum st_api_type internally.
Diffstat (limited to 'src/gallium/state_trackers/dri/common/dri_context.c')
-rw-r--r-- | src/gallium/state_trackers/dri/common/dri_context.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 6a8e3b01402..0703a2b88d9 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -59,8 +59,20 @@ dri_create_context(gl_api api, const __GLcontextModes * visual, struct st_context_iface *st_share = NULL; struct st_visual stvis; - assert(api <= API_OPENGLES2); - stapi = screen->st_api[api]; + switch (api) { + case API_OPENGL: + stapi = screen->st_api[ST_API_OPENGL]; + break; + case API_OPENGLES: + stapi = screen->st_api[ST_API_OPENGL_ES1]; + break; + case API_OPENGLES2: + stapi = screen->st_api[ST_API_OPENGL_ES2]; + break; + default: + stapi = NULL; + break; + } if (!stapi) return GL_FALSE; @@ -73,7 +85,6 @@ dri_create_context(gl_api api, const __GLcontextModes * visual, goto fail; cPriv->driverPrivate = ctx; - ctx->api = api; ctx->cPriv = cPriv; ctx->sPriv = sPriv; ctx->lock = screen->drmLock; @@ -86,6 +97,7 @@ dri_create_context(gl_api api, const __GLcontextModes * visual, if (ctx->st == NULL) goto fail; ctx->st->st_manager_private = (void *) ctx; + ctx->stapi = stapi; dri_init_extensions(ctx); @@ -125,14 +137,12 @@ GLboolean dri_unbind_context(__DRIcontext * cPriv) { /* dri_util.c ensures cPriv is not null */ - struct dri_screen *screen = dri_screen(cPriv->driScreenPriv); struct dri_context *ctx = dri_context(cPriv); - struct st_api *stapi = screen->st_api[ctx->api]; if (--ctx->bind_count == 0) { - if (ctx->st == stapi->get_current(stapi)) { + if (ctx->st == ctx->stapi->get_current(ctx->stapi)) { ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL); - stapi->make_current(stapi, NULL, NULL, NULL); + ctx->stapi->make_current(ctx->stapi, NULL, NULL, NULL); } } @@ -145,12 +155,10 @@ dri_make_current(__DRIcontext * cPriv, __DRIdrawable * driReadPriv) { /* dri_util.c ensures cPriv is not null */ - struct dri_screen *screen = dri_screen(cPriv->driScreenPriv); struct dri_context *ctx = dri_context(cPriv); - struct st_api *stapi = screen->st_api[ctx->api]; struct dri_drawable *draw = dri_drawable(driDrawPriv); struct dri_drawable *read = dri_drawable(driReadPriv); - struct st_context_iface *old_st = stapi->get_current(stapi); + struct st_context_iface *old_st = ctx->stapi->get_current(ctx->stapi); if (old_st && old_st != ctx->st) old_st->flush(old_st, PIPE_FLUSH_RENDER_CACHE, NULL); @@ -166,7 +174,7 @@ dri_make_current(__DRIcontext * cPriv, read->texture_stamp = driReadPriv->lastStamp - 1; } - stapi->make_current(stapi, ctx->st, &draw->base, &read->base); + ctx->stapi->make_current(ctx->stapi, ctx->st, &draw->base, &read->base); return GL_TRUE; } |