1*61046927SAndroid Build Coastguard Worker /********************************************************** 2*61046927SAndroid Build Coastguard Worker * Copyright 2010 VMware, Inc. All rights reserved. 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person 5*61046927SAndroid Build Coastguard Worker * obtaining a copy of this software and associated documentation 6*61046927SAndroid Build Coastguard Worker * files (the "Software"), to deal in the Software without 7*61046927SAndroid Build Coastguard Worker * restriction, including without limitation the rights to use, copy, 8*61046927SAndroid Build Coastguard Worker * modify, merge, publish, distribute, sublicense, and/or sell copies 9*61046927SAndroid Build Coastguard Worker * of the Software, and to permit persons to whom the Software is 10*61046927SAndroid Build Coastguard Worker * furnished to do so, subject to the following conditions: 11*61046927SAndroid Build Coastguard Worker * 12*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be 13*61046927SAndroid Build Coastguard Worker * included in all copies or substantial portions of the Software. 14*61046927SAndroid Build Coastguard Worker * 15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16*61046927SAndroid Build Coastguard Worker * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17*61046927SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18*61046927SAndroid Build Coastguard Worker * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19*61046927SAndroid Build Coastguard Worker * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20*61046927SAndroid Build Coastguard Worker * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21*61046927SAndroid Build Coastguard Worker * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22*61046927SAndroid Build Coastguard Worker * SOFTWARE. 23*61046927SAndroid Build Coastguard Worker * 24*61046927SAndroid Build Coastguard Worker **********************************************************/ 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker #ifndef _API_H_ 28*61046927SAndroid Build Coastguard Worker #define _API_H_ 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard Worker #include "util/format/u_formats.h" 31*61046927SAndroid Build Coastguard Worker 32*61046927SAndroid Build Coastguard Worker struct st_context; 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard Worker /** 35*61046927SAndroid Build Coastguard Worker * \file API for communication between gallium frontends and supporting 36*61046927SAndroid Build Coastguard Worker * frontends such as DRI. 37*61046927SAndroid Build Coastguard Worker * 38*61046927SAndroid Build Coastguard Worker * This file defines the API that the GL frontend uses to talk to 39*61046927SAndroid Build Coastguard Worker * the DRI/GLX/WGL frontends. 40*61046927SAndroid Build Coastguard Worker */ 41*61046927SAndroid Build Coastguard Worker 42*61046927SAndroid Build Coastguard Worker 43*61046927SAndroid Build Coastguard Worker /** 44*61046927SAndroid Build Coastguard Worker * Context flags. 45*61046927SAndroid Build Coastguard Worker */ 46*61046927SAndroid Build Coastguard Worker #define ST_CONTEXT_FLAG_DEBUG (1 << 0) 47*61046927SAndroid Build Coastguard Worker #define ST_CONTEXT_FLAG_FORWARD_COMPATIBLE (1 << 1) 48*61046927SAndroid Build Coastguard Worker #define ST_CONTEXT_FLAG_NO_ERROR (1 << 2) 49*61046927SAndroid Build Coastguard Worker #define ST_CONTEXT_FLAG_RELEASE_NONE (1 << 3) 50*61046927SAndroid Build Coastguard Worker 51*61046927SAndroid Build Coastguard Worker 52*61046927SAndroid Build Coastguard Worker /** 53*61046927SAndroid Build Coastguard Worker * Reasons that context creation might fail. 54*61046927SAndroid Build Coastguard Worker */ 55*61046927SAndroid Build Coastguard Worker enum st_context_error { 56*61046927SAndroid Build Coastguard Worker ST_CONTEXT_SUCCESS = 0, 57*61046927SAndroid Build Coastguard Worker ST_CONTEXT_ERROR_NO_MEMORY, 58*61046927SAndroid Build Coastguard Worker ST_CONTEXT_ERROR_BAD_VERSION, 59*61046927SAndroid Build Coastguard Worker }; 60*61046927SAndroid Build Coastguard Worker 61*61046927SAndroid Build Coastguard Worker /** 62*61046927SAndroid Build Coastguard Worker * Available attachments of framebuffer. 63*61046927SAndroid Build Coastguard Worker */ 64*61046927SAndroid Build Coastguard Worker enum st_attachment_type { 65*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_FRONT_LEFT, 66*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_BACK_LEFT, 67*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_FRONT_RIGHT, 68*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_BACK_RIGHT, 69*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_DEPTH_STENCIL, 70*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_ACCUM, 71*61046927SAndroid Build Coastguard Worker 72*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_COUNT, 73*61046927SAndroid Build Coastguard Worker ST_ATTACHMENT_INVALID = -1 74*61046927SAndroid Build Coastguard Worker }; 75*61046927SAndroid Build Coastguard Worker 76*61046927SAndroid Build Coastguard Worker /* for buffer_mask in st_visual */ 77*61046927SAndroid Build Coastguard Worker #define ST_ATTACHMENT_FRONT_LEFT_MASK (1 << ST_ATTACHMENT_FRONT_LEFT) 78*61046927SAndroid Build Coastguard Worker #define ST_ATTACHMENT_BACK_LEFT_MASK (1 << ST_ATTACHMENT_BACK_LEFT) 79*61046927SAndroid Build Coastguard Worker #define ST_ATTACHMENT_FRONT_RIGHT_MASK (1 << ST_ATTACHMENT_FRONT_RIGHT) 80*61046927SAndroid Build Coastguard Worker #define ST_ATTACHMENT_BACK_RIGHT_MASK (1 << ST_ATTACHMENT_BACK_RIGHT) 81*61046927SAndroid Build Coastguard Worker #define ST_ATTACHMENT_DEPTH_STENCIL_MASK (1 << ST_ATTACHMENT_DEPTH_STENCIL) 82*61046927SAndroid Build Coastguard Worker #define ST_ATTACHMENT_ACCUM_MASK (1 << ST_ATTACHMENT_ACCUM) 83*61046927SAndroid Build Coastguard Worker 84*61046927SAndroid Build Coastguard Worker /** 85*61046927SAndroid Build Coastguard Worker * Flush flags. 86*61046927SAndroid Build Coastguard Worker */ 87*61046927SAndroid Build Coastguard Worker #define ST_FLUSH_FRONT (1 << 0) 88*61046927SAndroid Build Coastguard Worker #define ST_FLUSH_END_OF_FRAME (1 << 1) 89*61046927SAndroid Build Coastguard Worker #define ST_FLUSH_WAIT (1 << 2) 90*61046927SAndroid Build Coastguard Worker #define ST_FLUSH_FENCE_FD (1 << 3) 91*61046927SAndroid Build Coastguard Worker 92*61046927SAndroid Build Coastguard Worker /** 93*61046927SAndroid Build Coastguard Worker * State invalidation flags to notify st_context that states have been changed 94*61046927SAndroid Build Coastguard Worker * behind their back. 95*61046927SAndroid Build Coastguard Worker */ 96*61046927SAndroid Build Coastguard Worker #define ST_INVALIDATE_FS_SAMPLER_VIEWS (1 << 0) 97*61046927SAndroid Build Coastguard Worker #define ST_INVALIDATE_FS_CONSTBUF0 (1 << 1) 98*61046927SAndroid Build Coastguard Worker #define ST_INVALIDATE_VS_CONSTBUF0 (1 << 2) 99*61046927SAndroid Build Coastguard Worker #define ST_INVALIDATE_VERTEX_BUFFERS (1 << 3) 100*61046927SAndroid Build Coastguard Worker #define ST_INVALIDATE_FB_STATE (1 << 4) 101*61046927SAndroid Build Coastguard Worker 102*61046927SAndroid Build Coastguard Worker /** 103*61046927SAndroid Build Coastguard Worker * Value to pipe_frontend_streen::get_param function. 104*61046927SAndroid Build Coastguard Worker */ 105*61046927SAndroid Build Coastguard Worker enum st_manager_param { 106*61046927SAndroid Build Coastguard Worker /** 107*61046927SAndroid Build Coastguard Worker * The DRI frontend on old libGL's doesn't do the right thing 108*61046927SAndroid Build Coastguard Worker * with regards to invalidating the framebuffers. 109*61046927SAndroid Build Coastguard Worker * 110*61046927SAndroid Build Coastguard Worker * For the GL gallium frontend that means that it needs to invalidate 111*61046927SAndroid Build Coastguard Worker * the framebuffer in glViewport itself. 112*61046927SAndroid Build Coastguard Worker */ 113*61046927SAndroid Build Coastguard Worker ST_MANAGER_BROKEN_INVALIDATE 114*61046927SAndroid Build Coastguard Worker }; 115*61046927SAndroid Build Coastguard Worker 116*61046927SAndroid Build Coastguard Worker struct pipe_resource; 117*61046927SAndroid Build Coastguard Worker struct util_queue_monitoring; 118*61046927SAndroid Build Coastguard Worker 119*61046927SAndroid Build Coastguard Worker /** 120*61046927SAndroid Build Coastguard Worker * Used in pipe_frontend_screen::get_egl_image. 121*61046927SAndroid Build Coastguard Worker */ 122*61046927SAndroid Build Coastguard Worker struct st_egl_image 123*61046927SAndroid Build Coastguard Worker { 124*61046927SAndroid Build Coastguard Worker /* this is owned by the caller */ 125*61046927SAndroid Build Coastguard Worker struct pipe_resource *texture; 126*61046927SAndroid Build Coastguard Worker 127*61046927SAndroid Build Coastguard Worker /* format only differs from texture->format for multi-planar (YUV): */ 128*61046927SAndroid Build Coastguard Worker enum pipe_format format; 129*61046927SAndroid Build Coastguard Worker 130*61046927SAndroid Build Coastguard Worker unsigned level; 131*61046927SAndroid Build Coastguard Worker unsigned layer; 132*61046927SAndroid Build Coastguard Worker /* GL internal format. */ 133*61046927SAndroid Build Coastguard Worker unsigned internalformat; 134*61046927SAndroid Build Coastguard Worker 135*61046927SAndroid Build Coastguard Worker /* one of __DRI_YUV_COLOR_SPACE_* */ 136*61046927SAndroid Build Coastguard Worker unsigned yuv_color_space; 137*61046927SAndroid Build Coastguard Worker 138*61046927SAndroid Build Coastguard Worker /* one of __DRI_YUV_RANGE_* */ 139*61046927SAndroid Build Coastguard Worker unsigned yuv_range; 140*61046927SAndroid Build Coastguard Worker 141*61046927SAndroid Build Coastguard Worker bool imported_dmabuf; 142*61046927SAndroid Build Coastguard Worker }; 143*61046927SAndroid Build Coastguard Worker 144*61046927SAndroid Build Coastguard Worker /** 145*61046927SAndroid Build Coastguard Worker * Represent the visual of a framebuffer. 146*61046927SAndroid Build Coastguard Worker */ 147*61046927SAndroid Build Coastguard Worker struct st_visual 148*61046927SAndroid Build Coastguard Worker { 149*61046927SAndroid Build Coastguard Worker /** 150*61046927SAndroid Build Coastguard Worker * Available buffers. Bitfield of ST_ATTACHMENT_*_MASK bits. 151*61046927SAndroid Build Coastguard Worker */ 152*61046927SAndroid Build Coastguard Worker unsigned buffer_mask; 153*61046927SAndroid Build Coastguard Worker 154*61046927SAndroid Build Coastguard Worker /** 155*61046927SAndroid Build Coastguard Worker * Buffer formats. The formats are always set even when the buffer is 156*61046927SAndroid Build Coastguard Worker * not available. 157*61046927SAndroid Build Coastguard Worker */ 158*61046927SAndroid Build Coastguard Worker enum pipe_format color_format; 159*61046927SAndroid Build Coastguard Worker enum pipe_format depth_stencil_format; 160*61046927SAndroid Build Coastguard Worker enum pipe_format accum_format; 161*61046927SAndroid Build Coastguard Worker unsigned samples; 162*61046927SAndroid Build Coastguard Worker }; 163*61046927SAndroid Build Coastguard Worker 164*61046927SAndroid Build Coastguard Worker 165*61046927SAndroid Build Coastguard Worker /** 166*61046927SAndroid Build Coastguard Worker * Configuration options from driconf 167*61046927SAndroid Build Coastguard Worker */ 168*61046927SAndroid Build Coastguard Worker struct st_config_options 169*61046927SAndroid Build Coastguard Worker { 170*61046927SAndroid Build Coastguard Worker bool disable_blend_func_extended; 171*61046927SAndroid Build Coastguard Worker bool disable_glsl_line_continuations; 172*61046927SAndroid Build Coastguard Worker bool disable_arb_gpu_shader5; 173*61046927SAndroid Build Coastguard Worker bool disable_uniform_array_resize; 174*61046927SAndroid Build Coastguard Worker char *alias_shader_extension; 175*61046927SAndroid Build Coastguard Worker bool allow_vertex_texture_bias; 176*61046927SAndroid Build Coastguard Worker bool force_compat_shaders; 177*61046927SAndroid Build Coastguard Worker bool force_glsl_extensions_warn; 178*61046927SAndroid Build Coastguard Worker unsigned force_glsl_version; 179*61046927SAndroid Build Coastguard Worker bool allow_extra_pp_tokens; 180*61046927SAndroid Build Coastguard Worker bool allow_glsl_extension_directive_midshader; 181*61046927SAndroid Build Coastguard Worker bool allow_glsl_120_subset_in_110; 182*61046927SAndroid Build Coastguard Worker bool allow_glsl_builtin_const_expression; 183*61046927SAndroid Build Coastguard Worker bool allow_glsl_relaxed_es; 184*61046927SAndroid Build Coastguard Worker bool allow_glsl_builtin_variable_redeclaration; 185*61046927SAndroid Build Coastguard Worker bool allow_higher_compat_version; 186*61046927SAndroid Build Coastguard Worker bool allow_glsl_compat_shaders; 187*61046927SAndroid Build Coastguard Worker bool glsl_ignore_write_to_readonly_var; 188*61046927SAndroid Build Coastguard Worker bool glsl_zero_init; 189*61046927SAndroid Build Coastguard Worker bool vs_position_always_invariant; 190*61046927SAndroid Build Coastguard Worker bool vs_position_always_precise; 191*61046927SAndroid Build Coastguard Worker bool force_glsl_abs_sqrt; 192*61046927SAndroid Build Coastguard Worker bool allow_glsl_cross_stage_interpolation_mismatch; 193*61046927SAndroid Build Coastguard Worker bool do_dce_before_clip_cull_analysis; 194*61046927SAndroid Build Coastguard Worker bool allow_draw_out_of_order; 195*61046927SAndroid Build Coastguard Worker bool glthread_nop_check_framebuffer_status; 196*61046927SAndroid Build Coastguard Worker bool ignore_map_unsynchronized; 197*61046927SAndroid Build Coastguard Worker bool ignore_discard_framebuffer; 198*61046927SAndroid Build Coastguard Worker bool force_integer_tex_nearest; 199*61046927SAndroid Build Coastguard Worker bool force_gl_names_reuse; 200*61046927SAndroid Build Coastguard Worker bool force_gl_map_buffer_synchronized; 201*61046927SAndroid Build Coastguard Worker bool transcode_etc; 202*61046927SAndroid Build Coastguard Worker bool transcode_astc; 203*61046927SAndroid Build Coastguard Worker char *force_gl_vendor; 204*61046927SAndroid Build Coastguard Worker char *force_gl_renderer; 205*61046927SAndroid Build Coastguard Worker char *mesa_extension_override; 206*61046927SAndroid Build Coastguard Worker bool allow_multisampled_copyteximage; 207*61046927SAndroid Build Coastguard Worker 208*61046927SAndroid Build Coastguard Worker unsigned char config_options_sha1[20]; 209*61046927SAndroid Build Coastguard Worker }; 210*61046927SAndroid Build Coastguard Worker 211*61046927SAndroid Build Coastguard Worker struct pipe_frontend_screen; 212*61046927SAndroid Build Coastguard Worker 213*61046927SAndroid Build Coastguard Worker /** 214*61046927SAndroid Build Coastguard Worker * Represent a windowing system drawable. 215*61046927SAndroid Build Coastguard Worker * 216*61046927SAndroid Build Coastguard Worker * This is inherited by the drawable implementation of the DRI/GLX/WGL 217*61046927SAndroid Build Coastguard Worker * frontends, e.g. this is the first field in dri_drawable. 218*61046927SAndroid Build Coastguard Worker * 219*61046927SAndroid Build Coastguard Worker * st_context uses the callbacks to invoke one of the DRI/GLX/WGL-specific 220*61046927SAndroid Build Coastguard Worker * functions. 221*61046927SAndroid Build Coastguard Worker * 222*61046927SAndroid Build Coastguard Worker * This drawable can be shared between different threads. The atomic stamp 223*61046927SAndroid Build Coastguard Worker * is used to communicate that the drawable has been changed, and 224*61046927SAndroid Build Coastguard Worker * the framebuffer state should be updated. 225*61046927SAndroid Build Coastguard Worker */ 226*61046927SAndroid Build Coastguard Worker struct pipe_frontend_drawable 227*61046927SAndroid Build Coastguard Worker { 228*61046927SAndroid Build Coastguard Worker /** 229*61046927SAndroid Build Coastguard Worker * Atomic stamp which changes when framebuffers need to be updated. 230*61046927SAndroid Build Coastguard Worker */ 231*61046927SAndroid Build Coastguard Worker int32_t stamp; 232*61046927SAndroid Build Coastguard Worker 233*61046927SAndroid Build Coastguard Worker /** 234*61046927SAndroid Build Coastguard Worker * Identifier that uniquely identifies the framebuffer interface object. 235*61046927SAndroid Build Coastguard Worker */ 236*61046927SAndroid Build Coastguard Worker uint32_t ID; 237*61046927SAndroid Build Coastguard Worker 238*61046927SAndroid Build Coastguard Worker /** 239*61046927SAndroid Build Coastguard Worker * The frontend screen for DRI/GLX/WGL. This is e.g. dri_screen. 240*61046927SAndroid Build Coastguard Worker */ 241*61046927SAndroid Build Coastguard Worker struct pipe_frontend_screen *fscreen; 242*61046927SAndroid Build Coastguard Worker 243*61046927SAndroid Build Coastguard Worker /** 244*61046927SAndroid Build Coastguard Worker * The visual of the framebuffer. 245*61046927SAndroid Build Coastguard Worker */ 246*61046927SAndroid Build Coastguard Worker const struct st_visual *visual; 247*61046927SAndroid Build Coastguard Worker 248*61046927SAndroid Build Coastguard Worker /** 249*61046927SAndroid Build Coastguard Worker * Flush the front buffer. 250*61046927SAndroid Build Coastguard Worker * 251*61046927SAndroid Build Coastguard Worker * On some window systems, changes to the front buffers are not immediately 252*61046927SAndroid Build Coastguard Worker * visible. They need to be flushed. 253*61046927SAndroid Build Coastguard Worker * 254*61046927SAndroid Build Coastguard Worker * @att is one of the front buffer attachments. 255*61046927SAndroid Build Coastguard Worker */ 256*61046927SAndroid Build Coastguard Worker bool (*flush_front)(struct st_context *st, 257*61046927SAndroid Build Coastguard Worker struct pipe_frontend_drawable *drawable, 258*61046927SAndroid Build Coastguard Worker enum st_attachment_type statt); 259*61046927SAndroid Build Coastguard Worker 260*61046927SAndroid Build Coastguard Worker /** 261*61046927SAndroid Build Coastguard Worker * The GL frontend asks for the framebuffer attachments it needs. 262*61046927SAndroid Build Coastguard Worker * 263*61046927SAndroid Build Coastguard Worker * It should try to only ask for attachments that it currently renders 264*61046927SAndroid Build Coastguard Worker * to, thus allowing the winsys to delay the allocation of textures not 265*61046927SAndroid Build Coastguard Worker * needed. For example front buffer attachments are not needed if you 266*61046927SAndroid Build Coastguard Worker * only do back buffer rendering. 267*61046927SAndroid Build Coastguard Worker * 268*61046927SAndroid Build Coastguard Worker * The implementor of this function needs to also ensure 269*61046927SAndroid Build Coastguard Worker * thread safty as this call might be done from multiple threads. 270*61046927SAndroid Build Coastguard Worker * 271*61046927SAndroid Build Coastguard Worker * The returned textures are owned by the caller. They should be 272*61046927SAndroid Build Coastguard Worker * unreferenced when no longer used. If this function is called multiple 273*61046927SAndroid Build Coastguard Worker * times with different sets of attachments, those buffers not included in 274*61046927SAndroid Build Coastguard Worker * the last call might be destroyed. 275*61046927SAndroid Build Coastguard Worker */ 276*61046927SAndroid Build Coastguard Worker bool (*validate)(struct st_context *st, 277*61046927SAndroid Build Coastguard Worker struct pipe_frontend_drawable *drawable, 278*61046927SAndroid Build Coastguard Worker const enum st_attachment_type *statts, 279*61046927SAndroid Build Coastguard Worker unsigned count, 280*61046927SAndroid Build Coastguard Worker struct pipe_resource **out, 281*61046927SAndroid Build Coastguard Worker struct pipe_resource **resolve); 282*61046927SAndroid Build Coastguard Worker 283*61046927SAndroid Build Coastguard Worker bool (*flush_swapbuffers)(struct st_context *st, 284*61046927SAndroid Build Coastguard Worker struct pipe_frontend_drawable *drawable); 285*61046927SAndroid Build Coastguard Worker }; 286*61046927SAndroid Build Coastguard Worker 287*61046927SAndroid Build Coastguard Worker 288*61046927SAndroid Build Coastguard Worker /** 289*61046927SAndroid Build Coastguard Worker * This is inherited by a screen in the DRI/GLX/WGL frontends, e.g. dri_screen. 290*61046927SAndroid Build Coastguard Worker */ 291*61046927SAndroid Build Coastguard Worker struct pipe_frontend_screen 292*61046927SAndroid Build Coastguard Worker { 293*61046927SAndroid Build Coastguard Worker struct pipe_screen *screen; 294*61046927SAndroid Build Coastguard Worker 295*61046927SAndroid Build Coastguard Worker /** 296*61046927SAndroid Build Coastguard Worker * Look up and return the info of an EGLImage. 297*61046927SAndroid Build Coastguard Worker * 298*61046927SAndroid Build Coastguard Worker * This is used to implement for example EGLImageTargetTexture2DOES. 299*61046927SAndroid Build Coastguard Worker * The GLeglImageOES agrument of that call is passed directly to this 300*61046927SAndroid Build Coastguard Worker * function call and the information needed to access this is returned 301*61046927SAndroid Build Coastguard Worker * in the given struct out. 302*61046927SAndroid Build Coastguard Worker * 303*61046927SAndroid Build Coastguard Worker * @fscreen: the screen 304*61046927SAndroid Build Coastguard Worker * @egl_image: EGLImage that caller recived 305*61046927SAndroid Build Coastguard Worker * @out: return struct filled out with access information. 306*61046927SAndroid Build Coastguard Worker * 307*61046927SAndroid Build Coastguard Worker * This function is optional. 308*61046927SAndroid Build Coastguard Worker */ 309*61046927SAndroid Build Coastguard Worker bool (*get_egl_image)(struct pipe_frontend_screen *fscreen, 310*61046927SAndroid Build Coastguard Worker void *egl_image, 311*61046927SAndroid Build Coastguard Worker struct st_egl_image *out); 312*61046927SAndroid Build Coastguard Worker 313*61046927SAndroid Build Coastguard Worker /** 314*61046927SAndroid Build Coastguard Worker * Validate EGLImage passed to get_egl_image. 315*61046927SAndroid Build Coastguard Worker */ 316*61046927SAndroid Build Coastguard Worker bool (*validate_egl_image)(struct pipe_frontend_screen *fscreen, 317*61046927SAndroid Build Coastguard Worker void *egl_image); 318*61046927SAndroid Build Coastguard Worker 319*61046927SAndroid Build Coastguard Worker /** 320*61046927SAndroid Build Coastguard Worker * Query a feature or property from the DRI/GLX/WGL frontend. 321*61046927SAndroid Build Coastguard Worker */ 322*61046927SAndroid Build Coastguard Worker int (*get_param)(struct pipe_frontend_screen *fscreen, 323*61046927SAndroid Build Coastguard Worker enum st_manager_param param); 324*61046927SAndroid Build Coastguard Worker 325*61046927SAndroid Build Coastguard Worker /** 326*61046927SAndroid Build Coastguard Worker * Call the loader function setBackgroundContext. Called from the worker 327*61046927SAndroid Build Coastguard Worker * thread. 328*61046927SAndroid Build Coastguard Worker */ 329*61046927SAndroid Build Coastguard Worker void (*set_background_context)(struct st_context *st, 330*61046927SAndroid Build Coastguard Worker struct util_queue_monitoring *queue_info); 331*61046927SAndroid Build Coastguard Worker 332*61046927SAndroid Build Coastguard Worker /** 333*61046927SAndroid Build Coastguard Worker * GL frontend state associated with the screen. 334*61046927SAndroid Build Coastguard Worker * 335*61046927SAndroid Build Coastguard Worker * This is where st_context stores the state shared by all contexts. 336*61046927SAndroid Build Coastguard Worker */ 337*61046927SAndroid Build Coastguard Worker void *st_screen; 338*61046927SAndroid Build Coastguard Worker }; 339*61046927SAndroid Build Coastguard Worker 340*61046927SAndroid Build Coastguard Worker #endif /* _API_H_ */ 341