r300g: various other cleanups
[mesa.git] / src / gallium / drivers / r300 / r300_winsys.h
index c6f9174496bb93ae39605be3e92c435f072362d6..9c348d911581d05a9dadb1067e0609c10fe01129 100644 (file)
 #include "pipe/p_defines.h"
 #include "pipe/p_state.h"
 
-struct r300_winsys_screen;
-
-/* Creates a new r300 screen. */
-struct pipe_screen* r300_create_screen(struct r300_winsys_screen *rws);
+#include "r300_defines.h"
 
 struct r300_winsys_buffer;
 
-
-boolean r300_get_texture_buffer(struct pipe_screen* screen,
-                                struct pipe_texture* texture,
-                                struct r300_winsys_buffer** buffer,
-                                unsigned *stride);
-
 enum r300_value_id {
     R300_VID_PCI_ID,
     R300_VID_GB_PIPES,
     R300_VID_Z_PIPES,
+    R300_VID_SQUARE_TILING_SUPPORT,
+    R300_VID_TEX3D_MIP_BUG,
 };
 
 struct r300_winsys_screen {
@@ -77,7 +70,7 @@ struct r300_winsys_screen {
      */
     void *(*buffer_map)( struct r300_winsys_screen *ws,
                         struct r300_winsys_buffer *buf,
-                        unsigned usage );
+                        unsigned usage);
 
     void (*buffer_unmap)( struct r300_winsys_screen *ws,
                          struct r300_winsys_buffer *buf );
@@ -92,12 +85,18 @@ struct r300_winsys_screen {
     boolean (*buffer_references)(struct r300_winsys_buffer *a,
                                 struct r300_winsys_buffer *b);
 
-    /* Add a pipe_buffer to the list of buffer objects to validate. */
+    void (*buffer_flush_range)(struct r300_winsys_screen *rws,
+                              struct r300_winsys_buffer *buf,
+                              unsigned offset,
+                              unsigned length);
+
+    /* Add a pipe_resource to the list of buffer objects to validate. */
     boolean (*add_buffer)(struct r300_winsys_screen *winsys,
                           struct r300_winsys_buffer *buf,
                           uint32_t rd,
                           uint32_t wd);
 
+
     /* Revalidate all currently setup pipe_buffers.
      * Returns TRUE if a flush is required. */
     boolean (*validate)(struct r300_winsys_screen* winsys);
@@ -137,21 +136,39 @@ struct r300_winsys_screen {
 
     void (*reset_bos)(struct r300_winsys_screen *winsys);
 
+    void (*buffer_get_tiling)(struct r300_winsys_screen *winsys,
+                              struct r300_winsys_buffer *buffer,
+                              enum r300_buffer_tiling *microtiled,
+                              enum r300_buffer_tiling *macrotiled);
+
     void (*buffer_set_tiling)(struct r300_winsys_screen *winsys,
                               struct r300_winsys_buffer *buffer,
                               uint32_t pitch,
-                              boolean microtiled,
-                              boolean macrotiled);
+                              enum r300_buffer_tiling microtiled,
+                              enum r300_buffer_tiling macrotiled);
 
     uint32_t (*get_value)(struct r300_winsys_screen *winsys,
                          enum r300_value_id vid);
+
+    struct r300_winsys_buffer *(*buffer_from_handle)(struct r300_winsys_screen *winsys,
+                                                    struct pipe_screen *screen,
+                                                    struct winsys_handle *whandle,
+                                                    unsigned *stride);
+    boolean (*buffer_get_handle)(struct r300_winsys_screen *winsys,
+                                struct r300_winsys_buffer *buffer,
+                                unsigned stride,
+                                struct winsys_handle *whandle);
+
+    boolean (*is_buffer_referenced)(struct r300_winsys_screen *winsys,
+                                    struct r300_winsys_buffer *buffer);
+
+  
 };
 
 struct r300_winsys_screen *
 r300_winsys_screen(struct pipe_screen *screen);
 
-struct pipe_texture *r300_texture_blanket_winsys_buffer(struct pipe_screen *screen,
-                                                       const struct pipe_texture *base,
-                                                       const unsigned *stride,
-                                                       struct r300_winsys_buffer *buffer);
+/* Creates a new r300 screen. */
+struct pipe_screen* r300_create_screen(struct r300_winsys_screen *rws);
+
 #endif /* R300_WINSYS_H */