nvc0: implement new stream output interface
[mesa.git] / src / gallium / drivers / r600 / r600_pipe.h
index c495221436467c3f3d41ea3245ce422e8150da0a..a127eed6f3832010a3406731e1544dc2cfab59b0 100644 (file)
@@ -33,7 +33,7 @@
 #include "pipe/p_context.h"
 #include "util/u_math.h"
 #include "util/u_slab.h"
-#include "util/u_vbuf_mgr.h"
+#include "util/u_vbuf.h"
 #include "r600.h"
 #include "r600_public.h"
 #include "r600_shader.h"
@@ -68,15 +68,16 @@ enum r600_pipe_state_id {
        R600_PIPE_STATE_RESOURCE,
        R600_PIPE_STATE_POLYGON_OFFSET,
        R600_PIPE_STATE_FETCH_SHADER,
-       R600_PIPE_STATE_SPI,
        R600_PIPE_NSTATES
 };
 
 struct r600_screen {
        struct pipe_screen              screen;
        struct radeon_winsys            *ws;
-       struct radeon                   *radeon;
-       struct r600_tiling_info         *tiling_info;
+       unsigned                        family;
+       enum chip_class                 chip_class;
+       struct radeon_info              info;
+       struct r600_tiling_info         tiling_info;
        struct util_slab_mempool        pool_buffers;
        unsigned                        num_contexts;
 
@@ -113,8 +114,8 @@ struct r600_vertex_element
 {
        unsigned                        count;
        struct pipe_vertex_element      elements[PIPE_MAX_ATTRIBS];
-       struct u_vbuf_mgr_elements      *vmgr_elements;
-       struct r600_bo                  *fetch_shader;
+       struct u_vbuf_elements          *vmgr_elements;
+       struct r600_resource            *fetch_shader;
        unsigned                        fs_size;
        struct r600_pipe_state          rstate;
        /* if offset is to big for fetch instructio we need to alterate
@@ -127,10 +128,11 @@ struct r600_vertex_element
 struct r600_pipe_shader {
        struct r600_shader              shader;
        struct r600_pipe_state          rstate;
-       struct r600_bo                  *bo;
-       struct r600_bo                  *bo_fetch;
+       struct r600_resource            *bo;
+       struct r600_resource            *bo_fetch;
        struct r600_vertex_element      vertex_elements;
        struct tgsi_token               *tokens;
+       unsigned        sprite_coord_enable;
 };
 
 struct r600_pipe_sampler_state {
@@ -165,7 +167,7 @@ struct r600_fence_block {
 };
 
 struct r600_pipe_fences {
-       struct r600_bo                  *bo;
+       struct r600_resource            *bo;
        unsigned                        *data;
        unsigned                        next_index;
        /* linked list of preallocated blocks */
@@ -184,13 +186,12 @@ struct r600_pipe_context {
        enum chip_class                 chip_class;
        void                            *custom_dsa_flush;
        struct r600_screen              *screen;
-       struct radeon                   *radeon;
+       struct radeon_winsys            *ws;
        struct r600_pipe_state          *states[R600_PIPE_NSTATES];
        struct r600_context             ctx;
        struct r600_vertex_element      *vertex_elements;
        struct r600_pipe_resource_state fs_resource[PIPE_MAX_ATTRIBS];
        struct pipe_framebuffer_state   framebuffer;
-       struct pipe_index_buffer        index_buffer;
        unsigned                        cb_target_mask;
        /* for saving when using blitter */
        struct pipe_stencil_ref         stencil_ref;
@@ -213,9 +214,7 @@ struct r600_pipe_context {
        /* shader information */
        boolean                         clamp_vertex_color;
        boolean                         clamp_fragment_color;
-       boolean                         spi_dirty;
        unsigned                        sprite_coord_enable;
-       boolean                         flatshade;
        boolean                         export_16bpc;
        unsigned                        alpha_ref;
        boolean                         alpha_ref_dirty;
@@ -225,22 +224,13 @@ struct r600_pipe_context {
 
        struct r600_pipe_fences         fences;
 
-       struct u_vbuf_mgr               *vbuf_mgr;
+       struct u_vbuf                   *vbuf_mgr;
        struct util_slab_mempool        pool_transfers;
-       boolean                         blit;
        boolean                         have_depth_texture, have_depth_fb;
 
        unsigned default_ps_gprs, default_vs_gprs;
 };
 
-struct r600_drawl {
-       struct pipe_draw_info   info;
-       struct pipe_context     *ctx;
-       unsigned                index_size;
-       unsigned                index_buffer_offset;
-       struct pipe_resource    *index_buffer;
-};
-
 /* evergreen_state.c */
 void evergreen_init_state_functions(struct r600_pipe_context *rctx);
 void evergreen_init_config(struct r600_pipe_context *rctx);
@@ -268,14 +258,17 @@ void r600_blit_push_depth(struct pipe_context *ctx, struct r600_resource_texture
 void r600_flush_depth_textures(struct r600_pipe_context *rctx);
 
 /* r600_buffer.c */
+bool r600_init_resource(struct r600_screen *rscreen,
+                       struct r600_resource *res,
+                       unsigned size, unsigned alignment,
+                       unsigned bind, unsigned usage);
 struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
                                         const struct pipe_resource *templ);
 struct pipe_resource *r600_user_buffer_create(struct pipe_screen *screen,
                                              void *ptr, unsigned bytes,
                                              unsigned bind);
-struct pipe_resource *r600_buffer_from_handle(struct pipe_screen *screen,
-                                             struct winsys_handle *whandle);
-void r600_upload_index_buffer(struct r600_pipe_context *rctx, struct r600_drawl *draw);
+void r600_upload_index_buffer(struct r600_pipe_context *rctx,
+                             struct pipe_index_buffer *ib, unsigned count);
 
 
 /* r600_pipe.c */
@@ -327,9 +320,8 @@ unsigned r600_texture_get_offset(struct r600_resource_texture *rtex,
 
 /* r600_translate.c */
 void r600_translate_index_buffer(struct r600_pipe_context *r600,
-                                struct pipe_resource **index_buffer,
-                                unsigned *index_size,
-                                unsigned *start, unsigned count);
+                                struct pipe_index_buffer *ib,
+                                unsigned count);
 
 /* r600_state_common.c */
 void r600_set_index_buffer(struct pipe_context *ctx,