Merge branch 'texformat-rework'
[mesa.git] / src / gallium / state_trackers / python / st_device.h
index 46db20acd76bfe2015e560dc8349b3c1c3603395..a246b6a1f25b495e5e3f03d7679fc598f043f60e 100644 (file)
@@ -38,35 +38,58 @@ struct pipe_context;
 struct st_winsys; 
 
 
+struct st_surface
+{
+   struct pipe_texture *texture;
+   unsigned face;
+   unsigned level;
+   unsigned zslice;
+};
+
+
 struct st_context {
    struct st_device *st_dev;
    
+   struct pipe_context *real_pipe;
    struct pipe_context *pipe;
    
    struct cso_context *cso;
    
-   struct pipe_shader_state vert_shader;
-   struct pipe_shader_state frag_shader;
-
    void *vs;
    void *fs;
 
+   struct pipe_texture *default_texture;
    struct pipe_texture *sampler_textures[PIPE_MAX_SAMPLERS];
+   
+   unsigned num_vertex_buffers;
    struct pipe_vertex_buffer vertex_buffers[PIPE_MAX_ATTRIBS];
+   
+   unsigned num_vertex_elements;
    struct pipe_vertex_element vertex_elements[PIPE_MAX_ATTRIBS];
+   
+   struct pipe_framebuffer_state framebuffer;
 };
 
 
 struct st_device {
+   /* FIXME: we also need to refcount for textures and surfaces... */
+   struct pipe_reference reference;
+
    const struct st_winsys *st_ws; 
-   
+
+   struct pipe_screen *real_screen;
    struct pipe_screen *screen;
-   
-   /* FIXME: we also need to refcount for textures and surfaces... */
-   unsigned refcount;
 };
 
 
+static INLINE struct pipe_surface *
+st_pipe_surface(struct st_surface *surface, unsigned usage) 
+{
+   struct pipe_texture *texture = surface->texture;
+   struct pipe_screen *screen = texture->screen;
+   return screen->get_tex_surface(screen, texture, surface->face, surface->level, surface->zslice, usage);
+}
+
 struct st_context *
 st_context_create(struct st_device *st_dev);