diff options
author | Chia-I Wu <[email protected]> | 2010-11-10 01:38:41 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-11-10 02:01:04 +0800 |
commit | 5b6ec5a553876266bfa2ef65081aa1075419b97e (patch) | |
tree | a70771698d0d77f8c00b8b87874e883eda172e55 | |
parent | 3418f74a945c6bed80567beac68f3770f5c23466 (diff) |
st/dri: Add support for surfaceless current contexts.
Tested with Wayland.
-rw-r--r-- | src/gallium/state_trackers/dri/common/dri_context.c | 3 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/common/dri_drawable.h | 3 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/common/dri_screen.c | 3 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 770b37037f5..3d5d24e692c 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -178,7 +178,8 @@ dri_make_current(__DRIcontext * cPriv, read->texture_stamp = driReadPriv->lastStamp - 1; } - ctx->stapi->make_current(ctx->stapi, ctx->st, &draw->base, &read->base); + ctx->stapi->make_current(ctx->stapi, ctx->st, + (draw) ? &draw->base : NULL, (read) ? &read->base : NULL); return GL_TRUE; } diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h index 837d3983748..2ff6b713293 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.h +++ b/src/gallium/state_trackers/dri/common/dri_drawable.h @@ -70,7 +70,8 @@ struct dri_drawable static INLINE struct dri_drawable * dri_drawable(__DRIdrawable * driDrawPriv) { - return (struct dri_drawable *)driDrawPriv->driverPrivate; + return (struct dri_drawable *) (driDrawPriv) + ? driDrawPriv->driverPrivate : NULL; } /*********************************************************************** diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c index 252ad1768d8..1302e9bc013 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.c +++ b/src/gallium/state_trackers/dri/common/dri_screen.c @@ -231,6 +231,9 @@ dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen, { memset(stvis, 0, sizeof(*stvis)); + if (!mode) + return; + stvis->samples = mode->samples; stvis->render_buffer = ST_ATTACHMENT_INVALID; |