galahad: do map/unmap counting for resources
[mesa.git] / src / gallium / drivers / i965 / brw_screen.h
index efa27db1e0f554082671ee1829fd54f4b0307eaa..522a3bf899528ea3046e96e7ca2506ae08ee91ac 100644 (file)
@@ -32,6 +32,7 @@
 #include "pipe/p_screen.h"
 
 #include "brw_reg.h"
+#include "brw_structs.h"
 
 struct brw_winsys_screen;
 
@@ -44,32 +45,36 @@ struct brw_screen
    struct pipe_screen base;
    struct brw_chipset chipset;
    struct brw_winsys_screen *sws;
+   boolean no_tiling;
 };
 
-/**
- * Subclass of pipe_transfer
- */
-struct brw_transfer
-{
-   struct pipe_transfer base;
 
-   unsigned offset;
+
+union brw_surface_id {
+   struct {
+      unsigned face:3;
+      unsigned zslice:13;
+      unsigned level:16;
+   } bits;
+   unsigned value;
 };
 
-struct brw_buffer
+
+struct brw_surface
 {
-   struct pipe_buffer base;
+   struct pipe_surface base;
+   
+   union brw_surface_id id;
+   unsigned cpp;
+   unsigned pitch;
+   unsigned draw_offset;
+   unsigned tiling;
+
+   struct brw_surface_state ss;
    struct brw_winsys_buffer *bo;
-   void *ptr;
-   boolean is_user_buffer;
+   struct brw_surface *next, *prev;
 };
 
-struct brw_texture
-{
-   struct pipe_texture base;
-
-   ubyte shader_swizzle;
-};
 
 
 /*
@@ -81,32 +86,17 @@ brw_screen(struct pipe_screen *pscreen)
    return (struct brw_screen *) pscreen;
 }
 
-static INLINE struct brw_transfer *
-brw_transfer(struct pipe_transfer *transfer)
-{
-   return (struct brw_transfer *)transfer;
-}
-
-static INLINE struct brw_buffer *
-brw_buffer(struct pipe_buffer *buffer)
-{
-   return (struct brw_buffer *)buffer;
-}
 
-
-/* Pipe buffer helpers
- */
-static INLINE boolean
-brw_buffer_is_user_buffer( const struct pipe_buffer *buf )
+static INLINE struct brw_surface *
+brw_surface(struct pipe_surface *surface)
 {
-   return ((const struct brw_buffer *)buf)->is_user_buffer;
+   return (struct brw_surface *)surface;
 }
 
-struct brw_winsys_buffer *
-brw_surface_bo( struct pipe_surface *surface );
-
 unsigned
 brw_surface_pitch( const struct pipe_surface *surface );
 
+void brw_screen_tex_surface_init( struct brw_screen *brw_screen );
+
 
 #endif /* BRW_SCREEN_H */