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)