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 "svga3d_reg.h" 15 16 /** 17 * Primitive renderer for svga. 18 */ 19 struct svga_vbuf_render { 20 struct vbuf_render base; 21 22 struct svga_context *svga; 23 struct vertex_info vertex_info; 24 25 unsigned vertex_size; 26 27 SVGA3dElementLayoutId layout_id; /**< current element layout id */ 28 29 enum mesa_prim prim; 30 31 struct pipe_resource *vbuf; 32 struct pipe_resource *ibuf; 33 struct pipe_transfer *vbuf_transfer; 34 struct pipe_transfer *ibuf_transfer; 35 36 void *vbuf_ptr; 37 38 /* current size of buffer */ 39 size_t vbuf_size; 40 size_t ibuf_size; 41 42 /* size of that the buffer should be */ 43 size_t vbuf_alloc_size; 44 size_t ibuf_alloc_size; 45 46 /* current write place */ 47 size_t vbuf_offset; 48 size_t ibuf_offset; 49 50 /* currently used */ 51 size_t vbuf_used; 52 53 SVGA3dVertexDecl vdecl[PIPE_MAX_ATTRIBS]; 54 unsigned vdecl_offset; 55 unsigned vdecl_count; 56 57 uint16_t min_index; 58 uint16_t max_index; 59 }; 60 61 /** 62 * Basically a cast wrapper. 63 */ 64 static inline struct svga_vbuf_render * svga_vbuf_render(struct vbuf_render * render)65svga_vbuf_render( struct vbuf_render *render ) 66 { 67 assert(render); 68 return (struct svga_vbuf_render *)render; 69 } 70 71 72 struct vbuf_render * 73 svga_vbuf_render_create( struct svga_context *svga ); 74 75 76 enum pipe_error 77 svga_swtnl_update_vdecl( struct svga_context *svga ); 78 79 80 #endif 81