gallium: Dual source support in blend_factor_to_shader
[mesa.git] / src / gallium / auxiliary / util / u_surface.h
index 6cd12af3a8b21a26545a13f4c037a12360959191..61a8d512f4c4f3d6122662d96abb0a3f06e8e34b 100644 (file)
 #include "pipe/p_compiler.h"
 #include "pipe/p_state.h"
 
+#include "util/u_pack_color.h"
 
-extern boolean
-util_create_rgba_surface(struct pipe_screen *screen,
-                         uint width, uint height, uint bind,
-                         struct pipe_resource **textureOut,
-                         struct pipe_surface **surfaceOut);
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern void
+u_surface_default_template(struct pipe_surface *view,
+                           const struct pipe_resource *texture);
+
+extern void
+util_copy_box(ubyte * dst,
+              enum pipe_format format,
+              unsigned dst_stride, unsigned dst_slice_stride,
+              unsigned dst_x, unsigned dst_y, unsigned dst_z,
+              unsigned width, unsigned height, unsigned depth,
+              const ubyte * src,
+              int src_stride, unsigned src_slice_stride,
+              unsigned src_x, unsigned src_y, unsigned src_z);
 
 extern void
-util_destroy_rgba_surface(struct pipe_resource *texture,
-                          struct pipe_surface *surface);
+util_fill_rect(ubyte * dst, enum pipe_format format,
+               unsigned dst_stride, unsigned dst_x, unsigned dst_y,
+               unsigned width, unsigned height, union util_color *uc);
 
+extern void
+util_fill_box(ubyte * dst, enum pipe_format format,
+              unsigned stride, unsigned layer_stride,
+              unsigned x, unsigned y, unsigned z,
+              unsigned width, unsigned height, unsigned depth,
+              union util_color *uc);
 
+extern void
+util_fill_zs_box(ubyte *dst, enum pipe_format format,
+                 bool need_rmw, unsigned clear_flags, unsigned stride,
+                 unsigned layer_stride, unsigned width,
+                 unsigned height, unsigned depth,
+                 uint64_t zstencil);
 
 extern void
 util_resource_copy_region(struct pipe_context *pipe,
                           struct pipe_resource *dst,
-                          struct pipe_subresource subdst,
+                          unsigned dst_level,
                           unsigned dst_x, unsigned dst_y, unsigned dst_z,
                           struct pipe_resource *src,
-                          struct pipe_subresource subsrc,
-                          unsigned src_x, unsigned src_y, unsigned src_z,
-                          unsigned w, unsigned h);
+                          unsigned src_level,
+                          const struct pipe_box *src_box);
+
+extern void
+util_clear_texture(struct pipe_context *pipe,
+                   struct pipe_resource *tex,
+                   unsigned level,
+                   const struct pipe_box *box,
+                   const void *data);
 
 extern void
 util_clear_render_target(struct pipe_context *pipe,
                          struct pipe_surface *dst,
-                         const float *rgba,
+                         const union pipe_color_union *color,
                          unsigned dstx, unsigned dsty,
                          unsigned width, unsigned height);
 
@@ -72,5 +105,18 @@ util_clear_depth_stencil(struct pipe_context *pipe,
                          unsigned dstx, unsigned dsty,
                          unsigned width, unsigned height);
 
+boolean
+util_can_blit_via_copy_region(const struct pipe_blit_info *blit,
+                              boolean tight_format_check);
+
+extern boolean
+util_try_blit_via_copy_region(struct pipe_context *ctx,
+                              const struct pipe_blit_info *blit);
+
+
+#ifdef __cplusplus
+}
+#endif
+
 
 #endif /* U_SURFACE_H */