xref: /aosp_15_r20/external/mesa3d/src/gallium/winsys/svga/drm/vmw_buffer.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright (c) 2009-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 
9 #ifndef VMW_BUFFER_H_
10 #define VMW_BUFFER_H_
11 
12 #include <assert.h>
13 #include "util/compiler.h"
14 #include "pipebuffer/pb_bufmgr.h"
15 #include "util/u_debug_flush.h"
16 
17 
18 /* These extra flags are used wherever the pb_usage_flags enum type is used */
19 #define VMW_BUFFER_USAGE_SHARED    (1 << 14)
20 #define VMW_BUFFER_USAGE_SYNC      (1 << 15)
21 
22 struct SVGAGuestPtr;
23 struct pb_buffer;
24 struct pb_manager;
25 struct svga_winsys_buffer;
26 struct svga_winsys_surface;
27 struct vmw_winsys_screen;
28 
29 struct vmw_buffer_desc {
30    struct pb_desc pb_desc;
31    struct vmw_region *region;
32 };
33 
34 
35 #if MESA_DEBUG
36 
37 struct pb_buffer *
38 vmw_pb_buffer(struct svga_winsys_buffer *buffer);
39 struct svga_winsys_buffer *
40 vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer);
41 struct debug_flush_buf *
42 vmw_debug_flush_buf(struct svga_winsys_buffer *buffer);
43 
44 #else
45 static inline struct pb_buffer *
vmw_pb_buffer(struct svga_winsys_buffer * buffer)46 vmw_pb_buffer(struct svga_winsys_buffer *buffer)
47 {
48    assert(buffer);
49    return (struct pb_buffer *)buffer;
50 }
51 
52 
53 static inline struct svga_winsys_buffer *
vmw_svga_winsys_buffer_wrap(struct pb_buffer * buffer)54 vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer)
55 {
56    return (struct svga_winsys_buffer *)buffer;
57 }
58 #endif
59 
60 void
61 vmw_svga_winsys_buffer_destroy(struct svga_winsys_screen *sws,
62                                struct svga_winsys_buffer *buf);
63 void *
64 vmw_svga_winsys_buffer_map(struct svga_winsys_screen *sws,
65                            struct svga_winsys_buffer *buf,
66                            enum pipe_map_flags flags);
67 
68 void
69 vmw_svga_winsys_buffer_unmap(struct svga_winsys_screen *sws,
70                              struct svga_winsys_buffer *buf);
71 
72 struct pb_manager *
73 vmw_dma_bufmgr_create(struct vmw_winsys_screen *vws);
74 
75 bool
76 vmw_dma_bufmgr_region_ptr(struct pb_buffer *buf,
77                           struct SVGAGuestPtr *ptr);
78 
79 
80 #endif /* VMW_BUFFER_H_ */
81