[Mesa-dev] [PATCH 06/16] gallium: add blending to pipe blit

David Heidelberger david.heidelberger at ixit.cz
Sat Oct 18 04:54:56 PDT 2014


From: Christoph Bumiller <e0425955 at student.tuwien.ac.at>

Signed-off-by: David Heidelberger <david.heidelberger at ixit.cz>
---
 src/gallium/include/pipe/p_state.h        | 1 +
 src/mesa/state_tracker/st_cb_blit.c       | 1 +
 src/mesa/state_tracker/st_cb_readpixels.c | 1 +
 src/mesa/state_tracker/st_cb_texture.c    | 3 +++
 4 files changed, 6 insertions(+)

diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 7b9996d..b7adb99 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -619,6 +619,7 @@ struct pipe_blit_info
 
    boolean render_condition_enable; /**< whether the blit should honor the
                                     current render condition */
+   boolean alpha_blend; /* dst.rgb = src.rgb * src.a + dst.rgb * (1 - src.a) */
 };
 
 
diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c
index 9c33f4e..93b5c4f 100644
--- a/src/mesa/state_tracker/st_cb_blit.c
+++ b/src/mesa/state_tracker/st_cb_blit.c
@@ -188,6 +188,7 @@ st_BlitFramebuffer(struct gl_context *ctx,
 
    blit.filter = pFilter;
    blit.render_condition_enable = TRUE;
+   blit.alpha_blend = FALSE;
 
    if (mask & GL_COLOR_BUFFER_BIT) {
       struct gl_renderbuffer_attachment *srcAtt =
diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index d95a608..c9ff6f7 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -184,6 +184,7 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y,
    blit.mask = st_get_blit_mask(rb->_BaseFormat, format);
    blit.filter = PIPE_TEX_FILTER_NEAREST;
    blit.scissor_enable = FALSE;
+   blit.alpha_blend = FALSE;
 
    if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
       blit.src.box.y = rb->Height - blit.src.box.y;
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index a8dbb78..914aaf5 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -842,6 +842,7 @@ st_TexSubImage(struct gl_context *ctx, GLuint dims,
    blit.mask = st_get_blit_mask(format, texImage->_BaseFormat);
    blit.filter = PIPE_TEX_FILTER_NEAREST;
    blit.scissor_enable = FALSE;
+   blit.alpha_blend = FALSE;
 
    st->pipe->blit(st->pipe, &blit);
 
@@ -1089,6 +1090,7 @@ st_GetTexImage(struct gl_context * ctx,
    blit.mask = st_get_blit_mask(texImage->_BaseFormat, format);
    blit.filter = PIPE_TEX_FILTER_NEAREST;
    blit.scissor_enable = FALSE;
+   blit.alpha_blend = FALSE;
 
    /* blit/render/decompress */
    st->pipe->blit(st->pipe, &blit);
@@ -1455,6 +1457,7 @@ st_CopyTexSubImage(struct gl_context *ctx, GLuint dims,
    blit.dst.box.depth = 1;
    blit.mask = st_get_blit_mask(rb->_BaseFormat, texImage->_BaseFormat);
    blit.filter = PIPE_TEX_FILTER_NEAREST;
+   blit.alpha_blend = FALSE;
    pipe->blit(pipe, &blit);
    return;
 
-- 
2.1.2



More information about the mesa-dev mailing list