#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"
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;
{
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
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 {
};
struct r600_pipe_fences {
- struct r600_bo *bo;
+ struct r600_resource *bo;
unsigned *data;
unsigned next_index;
/* linked list of preallocated blocks */
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;
/* 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;
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);
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 */
/* 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,