Squashed commit of the following:
[mesa.git] / src / gallium / drivers / softpipe / sp_texture.h
index bf437a7c61842ebed4d80c27ca3282d1fb045bbf..500f42fb0fde70584a097fd1dc96e1f915a8ae3a 100644 (file)
 #include "pipe/p_state.h"
 
 
+#define SP_MAX_TEXTURE_2D_LEVELS 13  /* 4K x 4K */
+#define SP_MAX_TEXTURE_3D_LEVELS 9   /* 512 x 512 x 512 */
+
+
 struct pipe_context;
 struct pipe_screen;
 struct softpipe_context;
 
 
-struct softpipe_texture
+struct softpipe_resource
 {
-   struct pipe_texture base;
+   struct pipe_resource base;
+
+   unsigned long level_offset[SP_MAX_TEXTURE_2D_LEVELS];
+   unsigned stride[SP_MAX_TEXTURE_2D_LEVELS];
+
+   /**
+    * Display target, only valid for PIPE_TEXTURE_2D with the
+    * PIPE_BIND_DISPLAY_TARGET usage.
+    */
+   struct sw_displaytarget *dt;
 
-   unsigned long level_offset[PIPE_MAX_TEXTURE_LEVELS];
-   unsigned long stride[PIPE_MAX_TEXTURE_LEVELS];
+   /**
+    * Malloc'ed data for regular buffers and textures, or a mapping to dt above.
+    */
+   void *data;
 
-   /* The data is held here:
+   /* True if texture images are power-of-two in all dimensions:
     */
-   struct pipe_buffer *buffer;
+   boolean pot;
+   boolean userBuffer;
 
-   boolean modified;
+   unsigned timestamp;
 };
 
+struct softpipe_transfer
+{
+   struct pipe_transfer base;
 
-/** cast wrapper */
-static INLINE struct softpipe_texture *
-softpipe_texture(struct pipe_texture *pt)
+   unsigned long offset;
+};
+
+
+
+/** cast wrappers */
+static INLINE struct softpipe_resource *
+softpipe_resource(struct pipe_resource *pt)
 {
-   return (struct softpipe_texture *) pt;
+   return (struct softpipe_resource *) pt;
 }
 
+static INLINE struct softpipe_transfer *
+softpipe_transfer(struct pipe_transfer *pt)
+{
+   return (struct softpipe_transfer *) pt;
+}
 
-extern void
-softpipe_init_texture_funcs( struct softpipe_context *softpipe );
 
 extern void
 softpipe_init_screen_texture_funcs(struct pipe_screen *screen);
 
+void
+softpipe_init_texture_funcs(struct pipe_context *pipe);
+
 
 #endif /* SP_TEXTURE */