Merge remote branch 'origin/master' into pipe-video
[mesa.git] / src / gallium / drivers / llvmpipe / lp_texture.h
index 5862f979da6c8610f401bb9037df940eda6e8b40..b789c0f4090a1bd1602627db9b84cc2f210e9746 100644 (file)
 
 #include "pipe/p_state.h"
 #include "util/u_debug.h"
-
-
-#define LP_MAX_TEXTURE_2D_LEVELS 12  /* 2K x 2K for now */
-#define LP_MAX_TEXTURE_3D_LEVELS 10  /* 512 x 512 x 512 for now */
-
-#define LP_MAX_TEXTURE_LEVELS LP_MAX_TEXTURE_2D_LEVELS
+#include "lp_limits.h"
 
 
 enum lp_texture_usage
@@ -124,6 +119,11 @@ struct llvmpipe_resource
    unsigned timestamp;
 
    unsigned id;  /**< temporary, for debugging */
+
+#ifdef DEBUG
+   /** for linked list */
+   struct llvmpipe_resource *prev, *next;
+#endif
 };
 
 
@@ -172,24 +172,26 @@ llvmpipe_resource_stride(struct pipe_resource *resource,
 
 void *
 llvmpipe_resource_map(struct pipe_resource *resource,
-                     unsigned face_slice,
-                     unsigned level,
-                     unsigned zslice,
+                      unsigned level,
+                      unsigned layer,
                       enum lp_texture_usage tex_usage,
                       enum lp_texture_layout layout);
 
 void
 llvmpipe_resource_unmap(struct pipe_resource *resource,
-                       unsigned face_slice,
                        unsigned level,
-                       unsigned zslice);
+                       unsigned layer);
 
 
 void *
 llvmpipe_resource_data(struct pipe_resource *resource);
 
 
-void *
+unsigned
+llvmpipe_resource_size(const struct pipe_resource *resource);
+
+
+ubyte *
 llvmpipe_get_texture_image_address(struct llvmpipe_resource *lpr,
                                     unsigned face_slice, unsigned level,
                                     enum lp_texture_layout layout);
@@ -219,6 +221,21 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
                            unsigned x, unsigned y);
 
 
+void
+llvmpipe_unswizzle_cbuf_tile(struct llvmpipe_resource *lpr,
+                             unsigned face_slice, unsigned level,
+                             unsigned x, unsigned y,
+                             uint8_t *tile);
+
+void
+llvmpipe_swizzle_cbuf_tile(struct llvmpipe_resource *lpr,
+                           unsigned face_slice, unsigned level,
+                           unsigned x, unsigned y,
+                           uint8_t *tile);
+
+extern void
+llvmpipe_print_resources(void);
+
 
 extern void
 llvmpipe_init_screen_texture_funcs(struct pipe_screen *screen);