gallium: Add capability for ARB_robust_buffer_access_behavior.
[mesa.git] / src / gallium / drivers / r300 / r300_texture.h
index ba79ec068a13e7c3f2727e89a6da9a61d1014b8c..4c339429eca50dc91de3096a03be69251bff9efd 100644 (file)
 #ifndef R300_TEXTURE_H
 #define R300_TEXTURE_H
 
-#include "util/u_format.h"
-
-struct r300_texture;
+#include "pipe/p_compiler.h"
+#include "pipe/p_format.h"
+#include "pipe/p_screen.h"
+
+struct pipe_screen;
+struct pipe_context;
+struct pipe_resource;
+struct winsys_handle;
+struct r300_texture_format_state;
+struct r300_texture_desc;
+struct r300_resource;
+struct r300_screen;
+
+unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format,
+                                   const unsigned char *swizzle_view,
+                                   boolean dxtc_swizzle);
 
 uint32_t r300_translate_texformat(enum pipe_format format,
-                                  const unsigned char *swizzle_view);
+                                  const unsigned char *swizzle_view,
+                                  boolean is_r500,
+                                  boolean dxtc_swizzle);
 
 uint32_t r500_tx_format_msb_bit(enum pipe_format format);
 
-unsigned r300_texture_get_stride(struct r300_screen* screen,
-                                 struct r300_texture* tex, unsigned level);
-
-unsigned r300_texture_get_offset(struct r300_texture* tex, unsigned level,
-                                 unsigned zslice, unsigned face);
-
-void r300_texture_reinterpret_format(struct pipe_screen *screen,
-                                     struct pipe_resource *tex,
-                                     enum pipe_format new_format);
-
 boolean r300_is_colorbuffer_format_supported(enum pipe_format format);
 
 boolean r300_is_zs_format_supported(enum pipe_format format);
 
 boolean r300_is_sampler_format_supported(enum pipe_format format);
 
+void r300_texture_setup_format_state(struct r300_screen *screen,
+                                     struct r300_resource *tex,
+                                     enum pipe_format format,
+                                     unsigned level,
+                                     unsigned width0_override,
+                                     unsigned height0_override,
+                                     struct r300_texture_format_state *out);
+
+boolean r300_resource_get_handle(struct pipe_screen* screen,
+                                struct pipe_resource *texture,
+                                struct winsys_handle *whandle,
+                                 unsigned usage);
 
 struct pipe_resource*
 r300_texture_from_handle(struct pipe_screen* screen,
                         const struct pipe_resource* base,
-                        struct winsys_handle *whandle);
+                        struct winsys_handle *whandle,
+                         unsigned usage);
 
 struct pipe_resource*
 r300_texture_create(struct pipe_screen* screen,
                    const struct pipe_resource* templ);
 
+struct pipe_surface* r300_create_surface_custom(struct pipe_context * ctx,
+                                         struct pipe_resource* texture,
+                                         const struct pipe_surface *surf_tmpl,
+                                         unsigned width0_override,
+                                        unsigned height0_override);
 
-struct pipe_surface* r300_get_tex_surface(struct pipe_screen* screen,
-                                         struct pipe_resource* texture,
-                                         unsigned face,
-                                         unsigned level,
-                                         unsigned zslice,
-                                         unsigned flags);
+struct pipe_surface* r300_create_surface(struct pipe_context *ctx,
+                                         struct pipe_resource* texture,
+                                         const struct pipe_surface *surf_tmpl);
 
-void r300_tex_surface_destroy(struct pipe_surface* s);
+void r300_surface_destroy(struct pipe_context *ctx, struct pipe_surface* s);
 
 #endif /* R300_TEXTURE_H */