• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)65 svga_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