summaryrefslogtreecommitdiff
path: root/src/evergreen_state.h
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@chown.ath.cx>2013-07-22 02:30:28 +0200
committerGrigori Goronzy <greg@chown.ath.cx>2013-07-22 05:05:48 +0200
commit4375a6e75e5d41139be7031a0dee58c057ecbd07 (patch)
tree90bb91b0354a4ac421fbc5c1924334930f6e5d4f /src/evergreen_state.h
parent94d0d14914a025525a0766669b556eaa6681def7 (diff)
EXA/evergreen/ni: accelerate PictOpOver with component alpha
Subpixel text rendering is typically done with a solid src and a pixmap mask. Traditionally, this cannot be accelerated in a single pass and requires two passes [1]. However, we can cheat a little with a constant blend color. We can use: const.A = src.A / src.A const.R = src.R / src.A const.G = src.G / src.A const.B = src.B / src.A dst.A = const.A * (src.A * mask.A) + (1 - (src.A * mask.A)) * dst.A dst.R = const.R * (src.A * mask.R) + (1 - (src.A * mask.R)) * dst.R dst.G = const.G * (src.A * mask.G) + (1 - (src.A * mask.G)) * dst.G dst.B = const.B * (src.A * mask.B) + (1 - (src.A * mask.B)) * dst.B This only needs a single source value. src.A is cancelled down in the right places. [1] http://anholt.livejournal.com/32058.html
Diffstat (limited to 'src/evergreen_state.h')
-rw-r--r--src/evergreen_state.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/evergreen_state.h b/src/evergreen_state.h
index 3ce2bf2b..795d4472 100644
--- a/src/evergreen_state.h
+++ b/src/evergreen_state.h
@@ -297,6 +297,8 @@ evergreen_start_3d(ScrnInfoPtr pScrn);
void
evergreen_set_render_target(ScrnInfoPtr pScrn, cb_config_t *cb_conf, uint32_t domain);
void
+evergreen_set_blend_color(ScrnInfoPtr pScrn, float *color);
+void
evergreen_cp_wait_vline_sync(ScrnInfoPtr pScrn, PixmapPtr pPix, xf86CrtcPtr crtc, int start, int stop);
void
evergreen_set_spi(ScrnInfoPtr pScrn, int vs_export_count, int num_interp);