Mesa (master): st/dri: refactor dri_msaa_resolve
Marek Olšák
mareko at kemper.freedesktop.org
Thu Jun 13 01:56:17 UTC 2013
Module: Mesa
Branch: master
Commit: fdf9d234e2aa46f865a59ec15b2d4167bebbc35b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdf9d234e2aa46f865a59ec15b2d4167bebbc35b
Author: Marek Olšák <maraeo at gmail.com>
Date: Fri May 31 21:43:50 2013 +0200
st/dri: refactor dri_msaa_resolve
The generic blit will be used by the following commit.
Reviewed-by: Brian Paul <brianp at vmware.com>
---
.../state_trackers/dri/common/dri_drawable.c | 16 ++++++++--------
.../state_trackers/dri/common/dri_drawable.h | 6 +++---
src/gallium/state_trackers/dri/drm/dri2.c | 5 ++++-
3 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c
index f784ee6..ff04d57 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.c
@@ -359,13 +359,10 @@ swap_fences_unref(struct dri_drawable *draw)
}
void
-dri_msaa_resolve(struct dri_context *ctx,
- struct dri_drawable *drawable,
- enum st_attachment_type att)
+dri_pipe_blit(struct pipe_context *pipe,
+ struct pipe_resource *dst,
+ struct pipe_resource *src)
{
- struct pipe_context *pipe = ctx->st->pipe;
- struct pipe_resource *dst = drawable->textures[att];
- struct pipe_resource *src = drawable->msaa_textures[att];
struct pipe_blit_info blit;
if (!dst || !src)
@@ -437,9 +434,12 @@ dri_flush(__DRIcontext *cPriv,
/* Flush the drawable. */
if ((flags & __DRI2_FLUSH_DRAWABLE) &&
drawable->textures[ST_ATTACHMENT_BACK_LEFT]) {
- /* Resolve MSAA buffers. */
if (drawable->stvis.samples > 1) {
- dri_msaa_resolve(ctx, drawable, ST_ATTACHMENT_BACK_LEFT);
+ /* Resolve the MSAA back buffer. */
+ dri_pipe_blit(ctx->st->pipe,
+ drawable->textures[ST_ATTACHMENT_BACK_LEFT],
+ drawable->msaa_textures[ST_ATTACHMENT_BACK_LEFT]);
+
/* FRONT_LEFT is resolved in drawable->flush_frontbuffer. */
}
diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h
index 56f8a40..50e5cc4 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.h
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.h
@@ -110,9 +110,9 @@ dri_drawable_get_format(struct dri_drawable *drawable,
unsigned *bind);
void
-dri_msaa_resolve(struct dri_context *ctx,
- struct dri_drawable *drawable,
- enum st_attachment_type att);
+dri_pipe_blit(struct pipe_context *pipe,
+ struct pipe_resource *dst,
+ struct pipe_resource *src);
void
dri_flush(__DRIcontext *cPriv,
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 4117a9f..50628a6 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -470,7 +470,10 @@ dri2_flush_frontbuffer(struct dri_context *ctx,
if (drawable->stvis.samples > 1) {
struct pipe_context *pipe = ctx->st->pipe;
- dri_msaa_resolve(ctx, drawable, ST_ATTACHMENT_FRONT_LEFT);
+ /* Resolve the front buffer. */
+ dri_pipe_blit(ctx->st->pipe,
+ drawable->textures[ST_ATTACHMENT_FRONT_LEFT],
+ drawable->msaa_textures[ST_ATTACHMENT_FRONT_LEFT]);
pipe->flush(pipe, NULL, 0);
}
More information about the mesa-commit
mailing list