egl_g3d.h revision 5ec4b636c4042fecac6aa0b592e35ed32c4ce5c4
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Mesa 3-D graphics library 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Version: 7.8 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * Copyright (C) 2009-2010 Chia-I Wu <olv@0xlab.org> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Permission is hereby granted, free of charge, to any person obtaining a 85e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) * copy of this software and associated documentation files (the "Software"), 95e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) * to deal in the Software without restriction, including without limitation 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * and/or sell copies of the Software, and to permit persons to whom the 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * Software is furnished to do so, subject to the following conditions: 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The above copyright notice and this permission notice shall be included 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * in all copies or substantial portions of the Software. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * DEALINGS IN THE SOFTWARE. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _EGL_G3D_H_ 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _EGL_G3D_H_ 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "pipe/p_compiler.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "pipe/p_screen.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "pipe/p_context.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "pipe/p_format.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "egldriver.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "egldisplay.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "eglcontext.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "eglsurface.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "eglconfig.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "eglimage.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "eglscreen.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "eglmode.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "native.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "egl_g3d_st.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct egl_g3d_driver { 4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) _EGLDriver base; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_api *stapis[ST_API_COUNT]; 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EGLint api_mask; 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EGLint probe_key; 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)struct egl_g3d_display { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct native_display *native; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_manager *smapi; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct pipe_context *pipe; 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct egl_g3d_context { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _EGLContext base; 621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_api *stapi; 64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_context_iface *stctxi; 66868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)struct egl_g3d_surface { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _EGLSurface base; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_visual stvis; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_framebuffer_iface *stfbi; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* the native surface; NULL for pbuffers */ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct native_surface *native; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct pipe_resource *render_texture; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned int sequence_number; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct egl_g3d_config { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _EGLConfig base; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct native_config *native; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct st_visual stvis; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct egl_g3d_image { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _EGLImage base; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct pipe_resource *texture; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned face; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned level; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned zslice; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct egl_g3d_screen { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _EGLScreen base; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct native_connector *native; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const struct native_mode **native_modes; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* standard typecasts */ 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_EGL_DRIVER_STANDARD_TYPECASTS(egl_g3d) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_EGL_DRIVER_TYPECAST(egl_g3d_screen, _EGLScreen, obj) 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)_EGL_DRIVER_TYPECAST(egl_g3d_image, _EGLImage, obj) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* _EGL_G3D_H_ */ 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)