blob: 4e83c021c918994706e5e3911ac4d849b09d5ce1 [file] [log] [blame]
David 'Digit' Turnercb88e792011-08-26 01:35:14 +02001/* Copyright (C) 2011 The Android Open Source Project
2**
3** This software is licensed under the terms of the GNU General Public
4** License version 2, as published by the Free Software Foundation, and
5** may be copied, distributed, and modified under those terms.
6**
7** This program is distributed in the hope that it will be useful,
8** but WITHOUT ANY WARRANTY; without even the implied warranty of
9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10** GNU General Public License for more details.
11*/
12#ifndef ANDROID_OPENGLES_H
13#define ANDROID_OPENGLES_H
14
David Turner7b56a4a2011-09-12 18:21:58 +020015#include <stddef.h>
16
David 'Digit' Turnercb88e792011-08-26 01:35:14 +020017#define ANDROID_OPENGLES_BASE_PORT 22468
18
Jesse Hall7105d422012-03-21 11:49:42 -070019/* See the description in render_api.h. */
Jesse Hall07ca7c22012-04-25 22:05:07 -070020typedef void (*OnPostFunc)(void* context, int width, int height, int ydir,
21 int format, int type, unsigned char* pixels);
Jesse Hall7105d422012-03-21 11:49:42 -070022
David 'Digit' Turnercb88e792011-08-26 01:35:14 +020023/* Call this function to initialize the hardware opengles emulation.
24 * This function will abort if we can't find the corresponding host
25 * libraries through dlopen() or equivalent.
26 */
27int android_initOpenglesEmulation(void);
28
29/* Tries to start the renderer process. Returns 0 on success, -1 on error.
Jesse Hall7105d422012-03-21 11:49:42 -070030 * At the moment, this must be done before the VM starts. The onPost callback
31 * may be NULL.
David 'Digit' Turnercb88e792011-08-26 01:35:14 +020032 */
Jesse Hall7105d422012-03-21 11:49:42 -070033int android_startOpenglesRenderer(int width, int height,
Jesse Hall07ca7c22012-04-25 22:05:07 -070034 OnPostFunc onPost, void* onPostContext);
David 'Digit' Turnercb88e792011-08-26 01:35:14 +020035
Jesse Hall733fffa2012-04-26 11:07:32 -070036/* Retrieve the Vendor/Renderer/Version strings describing the underlying GL
37 * implementation. The call only works while the renderer is started.
38 *
39 * Each string is copied into the corresponding buffer. If the original string
40 * (including NUL terminator) is more than xxBufSize bytes, it will be
41 * truncated. In all cases, including failure, the buffer will be NUL-
42 * terminated when this function returns.
43 */
44void android_getOpenglesHardwareStrings(char* vendor, size_t vendorBufSize,
45 char* renderer, size_t rendererBufSize,
46 char* version, size_t versionBufSize);
47
David 'Digit' Turnercb88e792011-08-26 01:35:14 +020048int android_showOpenglesWindow(void* window, int x, int y, int width, int height, float rotation);
49
50int android_hideOpenglesWindow(void);
51
52void android_redrawOpenglesWindow(void);
53
54/* Stop the renderer process */
55void android_stopOpenglesRenderer(void);
56
David Turner7b56a4a2011-09-12 18:21:58 +020057/* set to TRUE if you want to use fast GLES pipes, 0 if you want to
58 * fallback to local TCP ones
59 */
60extern int android_gles_fast_pipes;
61
62/* Write the path of the Unix socket we're going to use to access GLES on a given <port> */
63/* The result is only valid on Unix systems */
64void android_gles_unix_path(char* buff, size_t buffsize, int port);
65
David 'Digit' Turnercb88e792011-08-26 01:35:14 +020066#endif /* ANDROID_OPENGLES_H */