Mir
gbm_buffer.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2016 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License version 2 or 3 as
6  * published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
17  */
18 
19 #ifndef MIR_CLIENT_EXTENSIONS_GBM_BUFFER_H_
20 #define MIR_CLIENT_EXTENSIONS_GBM_BUFFER_H_
21 
24 #include "mir_toolkit/mir_buffer.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
52  MirConnection* connection,
53  int width, int height,
54  unsigned int gbm_pixel_format,
55  unsigned int gbm_bo_flags,
56  MirBufferCallback available_callback, void* available_context);
57 
61  MirConnection* connection,
62  uint32_t width, uint32_t height,
63  uint32_t gbm_pixel_format,
64  uint32_t gbm_bo_flags,
65  MirBufferCallback available_callback, void* available_context);
66 
68 {
71 
72 static inline MirExtensionGbmBufferV1 const* mir_extension_gbm_buffer_v1(
73  MirConnection* connection)
74 {
76  connection, "mir_extension_gbm_buffer", 1);
77 }
78 
90 typedef MirBuffer* (*MirConnectionAllocateBufferGbmSync)(
91  MirConnection* connection,
92  uint32_t width, uint32_t height,
93  uint32_t gbm_pixel_format,
94  uint32_t gbm_bo_flags);
95 
101 typedef bool (*MirBufferIsGbmImportable)(MirBuffer const* buffer);
102 
109 typedef int (*MirBufferGbmFd)(MirBuffer const* buffer);
110 
116 typedef uint32_t (*MirBufferGbmStride)(MirBuffer const* buffer);
117 
123 typedef uint32_t (*MirBufferGbmFormat)(MirBuffer const* buffer);
124 
130 typedef uint32_t (*MirBufferGbmFlags)(MirBuffer const* buffer);
131 
137 typedef unsigned int (*MirBufferGbmAge)(MirBuffer const* buffer);
138 
140 {
150 
151 static inline MirExtensionGbmBufferV2 const* mir_extension_gbm_buffer_v2(
152  MirConnection* connection)
153 {
155  connection, "mir_extension_gbm_buffer", 2);
156 }
157 
158 #ifdef __cplusplus
159 }
160 #endif
161 #endif /* MIR_CLIENT_EXTENSIONS_GBM_BUFFER_H_ */
Definition: gbm_buffer.h:67
MirConnectionAllocateBufferGbmSync allocate_buffer_gbm_sync
Definition: gbm_buffer.h:142
void(* mir_connection_allocate_buffer_gbm)(MirConnection *connection, int width, int height, unsigned int gbm_pixel_format, unsigned int gbm_bo_flags, MirBufferCallback available_callback, void *available_context)
Allocate a MirBuffer via gbm.
Definition: gbm_buffer.h:51
struct MirBuffer MirBuffer
Definition: client_types.h:56
unsigned int(* MirBufferGbmAge)(MirBuffer const *buffer)
Get the age of a MirBuffer.
Definition: gbm_buffer.h:137
MirConnectionAllocateBufferGbm allocate_buffer_gbm
Definition: gbm_buffer.h:141
MirBufferGbmAge age
Definition: gbm_buffer.h:148
struct MirExtensionGbmBufferV2 MirExtensionGbmBufferV2
int height
Definition: client_types.h:179
MirBufferGbmFd fd
Definition: gbm_buffer.h:144
bool(* MirBufferIsGbmImportable)(MirBuffer const *buffer)
Check if a MirBuffer is suitable for import via GBM_BO_IMPORT_FD.
Definition: gbm_buffer.h:101
MirBufferGbmStride stride
Definition: gbm_buffer.h:145
uint32_t(* MirBufferGbmFormat)(MirBuffer const *buffer)
Get the GBM_FORMAT of a MirBuffer.
Definition: gbm_buffer.h:123
struct MirConnection MirConnection
Definition: client_types.h:41
void(* MirBufferCallback)(MirBuffer *, void *context)
Definition: client_types.h:497
uint32_t(* MirBufferGbmStride)(MirBuffer const *buffer)
Get the stride of a MirBuffer.
Definition: gbm_buffer.h:116
void const * mir_connection_request_extension(MirConnection *connection, char const *interface, int version)
Request a Mir extension.
MirBuffer *(* MirConnectionAllocateBufferGbmSync)(MirConnection *connection, uint32_t width, uint32_t height, uint32_t gbm_pixel_format, uint32_t gbm_bo_flags)
Allocate a MirBuffer via gbm and wait for the allocation.
Definition: gbm_buffer.h:90
uint32_t(* MirBufferGbmFlags)(MirBuffer const *buffer)
Get the gbm_bo_flags of a MirBuffer.
Definition: gbm_buffer.h:130
MirBufferGbmFlags flags
Definition: gbm_buffer.h:147
mir_connection_allocate_buffer_gbm allocate_buffer_gbm
Definition: gbm_buffer.h:69
Definition: gbm_buffer.h:139
void(* MirConnectionAllocateBufferGbm)(MirConnection *connection, uint32_t width, uint32_t height, uint32_t gbm_pixel_format, uint32_t gbm_bo_flags, MirBufferCallback available_callback, void *available_context)
v2 version of mir_connection_allocate_buffer_gbm, with more accurate types.
Definition: gbm_buffer.h:60
MirBufferIsGbmImportable is_gbm_importable
Definition: gbm_buffer.h:143
struct MirExtensionGbmBufferV1 MirExtensionGbmBufferV1
int width
Definition: client_types.h:178
MirBufferGbmFormat format
Definition: gbm_buffer.h:146
int(* MirBufferGbmFd)(MirBuffer const *buffer)
Access the fd a MirBuffer suitable for gbm import.
Definition: gbm_buffer.h:109

Copyright © 2012-2019 Canonical Ltd.
Generated on Fri Dec 13 10:47:19 UTC 2019
This documentation is licensed under the GPL version 2 or 3.