X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fauxiliary%2Fdraw%2Fdraw_private.h;h=06ad7372a745c457950c673c848cd697c079eff6;hb=26948ba761e04e74a5d15a3115117b9954a4fcbb;hp=0ad94bb031f3d094559ae13a7002ae57556d3831;hpb=a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9;p=mesa.git diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index 0ad94bb031f..06ad7372a74 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -66,6 +66,8 @@ struct draw_stage; struct vbuf_render; struct tgsi_exec_machine; struct tgsi_sampler; +struct tgsi_image; +struct tgsi_buffer; struct draw_pt_front_end; struct draw_assembler; struct draw_llvm; @@ -86,11 +88,10 @@ struct draw_vertex_buffer { struct vertex_header { unsigned clipmask:DRAW_TOTAL_CLIP_PLANES; unsigned edgeflag:1; - unsigned have_clipdist:1; + unsigned pad:1; unsigned vertex_id:16; - float clip[4]; - float pre_clip_pos[4]; + float clip_pos[4]; /* This will probably become float (*data)[4] soon: */ @@ -102,7 +103,7 @@ struct vertex_header { /* maximum number of shader variants we can cache */ -#define DRAW_MAX_SHADER_VARIANTS 128 +#define DRAW_MAX_SHADER_VARIANTS 512 /** * Private context for the drawing module. @@ -261,13 +262,15 @@ struct draw_context uint position_output; uint edgeflag_output; uint clipvertex_output; - uint clipdistance_output[2]; + uint ccdistance_output[2]; /** Fields for TGSI interpreter / execution */ struct { struct tgsi_exec_machine *machine; struct tgsi_sampler *sampler; + struct tgsi_image *image; + struct tgsi_buffer *buffer; } tgsi; struct translate *fetch; @@ -287,6 +290,8 @@ struct draw_context struct tgsi_exec_machine *machine; struct tgsi_sampler *sampler; + struct tgsi_image *image; + struct tgsi_buffer *buffer; } tgsi; } gs; @@ -355,8 +360,9 @@ struct draw_vertex_info { }; /* these flags are set if the primitive is a segment of a larger one */ -#define DRAW_SPLIT_BEFORE 0x1 -#define DRAW_SPLIT_AFTER 0x2 +#define DRAW_SPLIT_BEFORE 0x1 +#define DRAW_SPLIT_AFTER 0x2 +#define DRAW_LINE_LOOP_AS_STRIP 0x4 struct draw_prim_info { boolean linear; @@ -400,9 +406,8 @@ uint draw_current_shader_outputs(const struct draw_context *draw); uint draw_current_shader_position_output(const struct draw_context *draw); uint draw_current_shader_viewport_index_output(const struct draw_context *draw); uint draw_current_shader_clipvertex_output(const struct draw_context *draw); -uint draw_current_shader_clipdistance_output(const struct draw_context *draw, int index); +uint draw_current_shader_ccdistance_output(const struct draw_context *draw, int index); uint draw_current_shader_num_written_clipdistances(const struct draw_context *draw); -uint draw_current_shader_culldistance_output(const struct draw_context *draw, int index); uint draw_current_shader_num_written_culldistances(const struct draw_context *draw); int draw_alloc_extra_vertex_attrib(struct draw_context *draw, uint semantic_name, uint semantic_index); @@ -484,11 +489,10 @@ void draw_update_viewport_flags(struct draw_context *draw); /** * Return index i from the index buffer. - * If the index buffer would overflow we return the - * maximum possible index. + * If the index buffer would overflow we return index 0. */ #define DRAW_GET_IDX(_elts, _i) \ - (((_i) >= draw->pt.user.eltMax) ? DRAW_MAX_FETCH_IDX : (_elts)[_i]) + (((_i) >= draw->pt.user.eltMax) ? 0 : (_elts)[_i]) /** * Return index of the given viewport clamping it @@ -510,7 +514,7 @@ draw_overflow_uadd(unsigned a, unsigned b, unsigned overflow_value) { unsigned res = a + b; - if (res < a || res < b) { + if (res < a) { res = overflow_value; } return res;