1 /* 2 * Copyright (c) 2008-2024 Broadcom. All Rights Reserved. 3 * The term “Broadcom” refers to Broadcom Inc. 4 * and/or its subsidiaries. 5 * SPDX-License-Identifier: MIT 6 */ 7 8 #ifndef SVGA_SWTNL_PRIVATE_H 9 #define SVGA_SWTNL_PRIVATE_H 10 11 #include "svga_swtnl.h" 12 #include "draw/draw_vertex.h" 13 14 #include "svga_types.h" 15 #include "svga3d_reg.h" 16 17 /** 18 * Primitive renderer for svga. 19 */ 20 struct svga_vbuf_render { 21 struct vbuf_render base; 22 23 struct svga_context *svga; 24 struct vertex_info vertex_info; 25 26 unsigned vertex_size; 27 28 SVGA3dElementLayoutId layout_id; /**< current element layout id */ 29 30 enum mesa_prim prim; 31 32 struct pipe_resource *vbuf; 33 struct pipe_resource *ibuf; 34 struct pipe_transfer *vbuf_transfer; 35 struct pipe_transfer *ibuf_transfer; 36 37 void *vbuf_ptr; 38 39 /* current size of buffer */ 40 size_t vbuf_size; 41 size_t ibuf_size; 42 43 /* size of that the buffer should be */ 44 size_t vbuf_alloc_size; 45 size_t ibuf_alloc_size; 46 47 /* current write place */ 48 size_t vbuf_offset; 49 size_t ibuf_offset; 50 51 /* currently used */ 52 size_t vbuf_used; 53 54 SVGA3dVertexDecl vdecl[PIPE_MAX_ATTRIBS]; 55 unsigned vdecl_offset; 56 unsigned vdecl_count; 57 58 uint16_t min_index; 59 uint16_t max_index; 60 }; 61 62 /** 63 * Basically a cast wrapper. 64 */ 65 static inline struct svga_vbuf_render * svga_vbuf_render(struct vbuf_render * render)66svga_vbuf_render( struct vbuf_render *render ) 67 { 68 assert(render); 69 return (struct svga_vbuf_render *)render; 70 } 71 72 73 struct vbuf_render * 74 svga_vbuf_render_create( struct svga_context *svga ); 75 76 77 enum pipe_error 78 svga_swtnl_update_vdecl( struct svga_context *svga ); 79 80 81 #endif 82