X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr300%2Fr300_context.h;h=7d3b12d45d88d286b6240b27a7a9e746e8cff27e;hb=0b0697e80dd442d7e7cb23641ad8f58f82df120d;hp=5588e51ada943ecafa0664de2057bde833e0f36c;hpb=ce9d61fec64138ebf8d0bec2511e66593297b7d5;p=mesa.git diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index 5588e51ada9..7d3b12d45d8 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -30,10 +30,10 @@ #include "pipe/p_context.h" #include "util/u_inlines.h" #include "util/u_transfer.h" -#include "util/u_vbuf.h" #include "r300_defines.h" #include "r300_screen.h" +#include "compiler/radeon_regalloc.h" #include "../../winsys/radeon/drm/radeon_winsys.h" struct u_upload_mgr; @@ -42,6 +42,16 @@ struct r300_fragment_shader; struct r300_vertex_shader; struct r300_stencilref_context; +enum colormask_swizzle { + COLORMASK_BGRA, + COLORMASK_RGBA, + COLORMASK_RRRR, + COLORMASK_AAAA, + COLORMASK_GRRG, + COLORMASK_ARRA, + COLORMASK_NUM_SWIZZLES +}; + struct r300_atom { /* Name, for debugging. */ const char* name; @@ -67,7 +77,7 @@ struct r300_aa_state { struct r300_blend_state { struct pipe_blend_state state; - uint32_t cb_clamp[8]; + uint32_t cb_clamp[COLORMASK_NUM_SWIZZLES][8]; uint32_t cb_noclamp[8]; uint32_t cb_no_readwrite[8]; }; @@ -78,8 +88,6 @@ struct r300_blend_color_state { }; struct r300_clip_state { - struct pipe_clip_state clip; - uint32_t cb[29]; }; @@ -139,7 +147,7 @@ struct r300_gpu_flush { uint32_t cb_flush_clean[6]; }; -#define RS_STATE_MAIN_SIZE 25 +#define RS_STATE_MAIN_SIZE 27 struct r300_rs_state { /* Original rasterizer state. */ @@ -323,6 +331,8 @@ struct r300_surface { /* Whether the CBZB clear is allowed on the surface. */ boolean cbzb_allowed; + + unsigned colormask_swizzle; }; struct r300_texture_desc { @@ -385,15 +395,16 @@ struct r300_texture_desc { struct r300_resource { - struct u_vbuf_resource b; + struct u_resource b; /* Winsys buffer backing this resource. */ struct pb_buffer *buf; struct radeon_winsys_cs_handle *cs_buf; enum radeon_bo_domain domain; - /* Constant buffers are in user memory. */ - uint8_t *constant_buffer; + /* Constant buffers and SWTCL vertex and index buffers are in user + * memory. */ + uint8_t *malloced_buffer; /* Texture description (addressing, layout, special features). */ struct r300_texture_desc tex; @@ -408,8 +419,6 @@ struct r300_vertex_element_state { struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS]; unsigned format_size[PIPE_MAX_ATTRIBS]; - struct u_vbuf_elements *vmgr_elements; - /* The size of the vertex, in dwords. */ unsigned vertex_size_dwords; @@ -472,7 +481,7 @@ struct r300_context { /* When no vertex buffer is set, this one is used instead to prevent * hardlocks. */ - struct pipe_resource *dummy_vb; + struct pipe_vertex_buffer dummy_vb; /* The currently active query. */ struct r300_query *query_current; @@ -571,8 +580,6 @@ struct r300_context { int sprite_coord_enable; /* Whether two-sided color selection is enabled (AKA light_twoside). */ boolean two_sided_color; - /* Whether fragment color clamping is enabled. */ - boolean frag_clamp; /* Whether fast color clear is enabled. */ boolean cbzb_clear; /* Whether fragment shader needs to be validated. */ @@ -582,7 +589,10 @@ struct r300_context { void *dsa_decompress_zmask; - struct u_vbuf *vbuf_mgr; + struct pipe_index_buffer index_buffer; + struct pipe_vertex_buffer vertex_buffer[PIPE_MAX_ATTRIBS]; + unsigned nr_vertex_buffers; + struct u_upload_mgr *uploader; struct util_slab_mempool pool_transfers; @@ -613,6 +623,10 @@ struct r300_context { boolean hiz_in_use; /* Whether HIZ is enabled. */ enum r300_hiz_func hiz_func; /* HiZ function. Can be either MIN or MAX. */ uint32_t hiz_clear_value; /* HiZ clear value. */ + + /* Compiler state. */ + struct rc_regalloc_state fs_regalloc_state; /* Register allocator info for + * fragment shaders. */ }; #define foreach_atom(r300, atom) \ @@ -696,7 +710,8 @@ void r300_stop_query(struct r300_context *r300); /* r300_render_translate.c */ void r300_translate_index_buffer(struct r300_context *r300, - struct pipe_resource **index_buffer, + struct pipe_index_buffer *ib, + struct pipe_resource **out_index_buffer, unsigned *index_size, unsigned index_offset, unsigned *start, unsigned count); @@ -706,6 +721,11 @@ void r300_plug_in_stencil_ref_fallback(struct r300_context *r300); /* r300_render.c */ void r300_draw_flush_vbuf(struct r300_context *r300); void r500_emit_index_bias(struct r300_context *r300, int index_bias); +void r300_blitter_draw_rectangle(struct blitter_context *blitter, + int x1, int y1, int x2, int y2, + float depth, + enum blitter_attrib_type type, + const union pipe_color_union *attrib); /* r300_state.c */ enum r300_fb_state_change {