summaryrefslogtreecommitdiffstats
path: root/src/gallium/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/include')
-rw-r--r--src/gallium/include/pipe/p_context.h52
-rw-r--r--src/gallium/include/pipe/p_defines.h2
-rw-r--r--src/gallium/include/pipe/p_screen.h5
-rw-r--r--src/gallium/include/pipe/p_state.h2
4 files changed, 40 insertions, 21 deletions
diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
index 6f47845f3b8..6b729831768 100644
--- a/src/gallium/include/pipe/p_context.h
+++ b/src/gallium/include/pipe/p_context.h
@@ -198,6 +198,9 @@ struct pipe_context {
void (*set_stencil_ref)( struct pipe_context *,
const struct pipe_stencil_ref * );
+ void (*set_sample_mask)( struct pipe_context *,
+ unsigned sample_mask );
+
void (*set_clip_state)( struct pipe_context *,
const struct pipe_clip_state * );
@@ -233,32 +236,47 @@ struct pipe_context {
/**
- * Surface functions
+ * Resource functions for blit-like functionality
*
- * The pipe driver is allowed to set these functions to NULL, and in that
- * case, they will not be available.
+ * If a driver supports multisampling, resource_resolve must be available.
*/
/*@{*/
/**
- * Copy a block of pixels from one surface to another.
- * The surfaces must be of the same format.
+ * Copy a block of pixels from one resource to another.
+ * The resource must be of the same format.
+ * Resources with nr_samples > 1 are not allowed.
*/
- void (*surface_copy)(struct pipe_context *pipe,
- struct pipe_surface *dest,
- unsigned destx, unsigned desty,
- struct pipe_surface *src,
- unsigned srcx, unsigned srcy,
- unsigned width, unsigned height);
+ void (*resource_copy_region)(struct pipe_context *pipe,
+ struct pipe_resource *dst,
+ struct pipe_subresource subdst,
+ unsigned dstx, unsigned dsty, unsigned dstz,
+ struct pipe_resource *src,
+ struct pipe_subresource subsrc,
+ unsigned srcx, unsigned srcy, unsigned srcz,
+ unsigned width, unsigned height);
/**
- * Fill a region of a surface with a constant value.
+ * Fill a region of a resource with a constant value.
+ * Resources with nr_samples > 1 are not allowed.
*/
- void (*surface_fill)(struct pipe_context *pipe,
- struct pipe_surface *dst,
- unsigned dstx, unsigned dsty,
- unsigned width, unsigned height,
- unsigned value);
+ void (*resource_fill_region)(struct pipe_context *pipe,
+ struct pipe_resource *dst,
+ struct pipe_subresource subdst,
+ unsigned dstx, unsigned dsty, unsigned dstz,
+ unsigned width, unsigned height,
+ unsigned value);
+
+ /**
+ * Resolve a multisampled resource into a non-multisampled one.
+ * Source and destination must have the same size and same format.
+ */
+ void (*resource_resolve)(struct pipe_context *pipe,
+ struct pipe_resource *dst,
+ struct pipe_subresource subdst,
+ struct pipe_resource *src,
+ struct pipe_subresource subsrc);
+
/*@}*/
/**
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 8201c29ac76..b54a6ef8247 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -284,8 +284,6 @@ enum pipe_transfer_usage {
#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_BLIT_SOURCE (1 << 6) /* surface_copy */
-#define PIPE_BIND_BLIT_DESTINATION (1 << 7) /* surface_copy, fill */
#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 */
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
index 0d9de48c909..21f428ed4af 100644
--- a/src/gallium/include/pipe/p_screen.h
+++ b/src/gallium/include/pipe/p_screen.h
@@ -88,7 +88,7 @@ struct pipe_screen {
struct pipe_context * (*context_create)( struct pipe_screen *,
void *priv );
-
+
/**
* Check if the given pipe_format is supported as a texture or
* drawing surface.
@@ -98,7 +98,8 @@ struct pipe_screen {
boolean (*is_format_supported)( struct pipe_screen *,
enum pipe_format format,
enum pipe_texture_target target,
- unsigned bindings,
+ unsigned sample_count,
+ unsigned bindings,
unsigned geom_flags );
/**
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index a01698d7674..5255b2003f8 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -219,6 +219,8 @@ struct pipe_blend_state
unsigned logicop_enable:1;
unsigned logicop_func:4; /**< PIPE_LOGICOP_x */
unsigned dither:1;
+ unsigned alpha_to_coverage:1;
+ unsigned alpha_to_one:1;
struct pipe_rt_blend_state rt[PIPE_MAX_COLOR_BUFS];
};