Mesa (master): gallium: add PIPE_BIND_BLENDABLE flag

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Sat Oct 15 05:14:05 PDT 2011


Module: Mesa
Branch: master
Commit: a4f26f2bea94baea56354fe629ccd971a6d4eb1c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a4f26f2bea94baea56354fe629ccd971a6d4eb1c

Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date:   Thu Oct 13 14:48:03 2011 +0200

gallium: add PIPE_BIND_BLENDABLE flag

This is required for an accurate implementation of d3d1x's
CheckFormatSupport query.

It also seems generally useful for state trackers, which could
choose alternative rendering paths or formats if blending would
come at a significant performance loss.

---

 src/gallium/docs/source/screen.rst   |    5 +++++
 src/gallium/include/pipe/p_defines.h |    9 +++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
index 924858e..0679240 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -160,6 +160,11 @@ resources might be created and handled quite differently.
 * ``PIPE_BIND_DEPTH_STENCIL``: A depth (Z) buffer and/or stencil buffer. Any
   depth/stencil surface/resource attached to pipe_framebuffer_state::zsbuf must
   have this flag set.
+* ``PIPE_BIND_BLENDABLE``: Used in conjunction with PIPE_BIND_RENDER_TARGET to
+  query whether a device supports blending for a given format.
+  If this flag is set, surface creation may fail if blending is not supported
+  for the specified format. If it is not set, a driver may choose to ignore
+  blending on surfaces with formats that would require emulation.
 * ``PIPE_BIND_DISPLAY_TARGET``: A surface that can be presented to screen. Arguments to
   pipe_screen::flush_front_buffer must have this flag set.
 * ``PIPE_BIND_SAMPLER_VIEW``: A texture that may be sampled from in a fragment
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index acae4b1..447df35 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -295,10 +295,11 @@ enum pipe_transfer_usage {
  */
 #define PIPE_BIND_DEPTH_STENCIL        (1 << 0) /* create_surface */
 #define PIPE_BIND_RENDER_TARGET        (1 << 1) /* create_surface */
-#define PIPE_BIND_SAMPLER_VIEW         (1 << 2) /* create_sampler_view */
-#define PIPE_BIND_VERTEX_BUFFER        (1 << 3) /* set_vertex_buffers */
-#define PIPE_BIND_INDEX_BUFFER         (1 << 4) /* draw_elements */
-#define PIPE_BIND_CONSTANT_BUFFER      (1 << 5) /* set_constant_buffer */
+#define PIPE_BIND_BLENDABLE            (1 << 2) /* create_surface */
+#define PIPE_BIND_SAMPLER_VIEW         (1 << 3) /* create_sampler_view */
+#define PIPE_BIND_VERTEX_BUFFER        (1 << 4) /* set_vertex_buffers */
+#define PIPE_BIND_INDEX_BUFFER         (1 << 5) /* draw_elements */
+#define PIPE_BIND_CONSTANT_BUFFER      (1 << 6) /* set_constant_buffer */
 #define PIPE_BIND_DISPLAY_TARGET       (1 << 8) /* flush_front_buffer */
 #define PIPE_BIND_TRANSFER_WRITE       (1 << 9) /* get_transfer */
 #define PIPE_BIND_TRANSFER_READ        (1 << 10) /* get_transfer */



More information about the mesa-commit mailing list