EGL: add the ANDROID suffix to the blob cache ext
This change adds the ANDROID suffix to the all the types and functions defined by the EGL_ANDROID_blob_cache extension. Change-Id: I087875b96d9a7053efb9c8d5614f9f765eed799d
This commit is contained in:
parent
8e540328fc
commit
c42fcf05ce
|
@ -261,14 +261,14 @@ typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void);
|
|||
*/
|
||||
#ifndef EGL_ANDROID_blob_cache
|
||||
#define EGL_ANDROID_blob_cache 1
|
||||
typedef khronos_ssize_t EGLsizei;
|
||||
typedef void (*EGLSetBlobFunc) (const void* key, EGLsizei keySize, const void* value, EGLsizei valueSize);
|
||||
typedef EGLsizei (*EGLGetBlobFunc) (const void* key, EGLsizei keySize, void* value, EGLsizei valueSize);
|
||||
typedef khronos_ssize_t EGLsizeiANDROID;
|
||||
typedef void (*EGLSetBlobFuncANDROID) (const void* key, EGLsizeiANDROID keySize, const void* value, EGLsizeiANDROID valueSize);
|
||||
typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void* key, EGLsizeiANDROID keySize, void* value, EGLsizeiANDROID valueSize);
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncs(EGLDisplay dpy, EGLSetBlobFunc set, EGLGetBlobFunc get);
|
||||
EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
|
||||
#endif /* EGL_EGLEXT_PROTOTYPES */
|
||||
typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSPROC) (EGLDisplay dpy,
|
||||
EGLSetBlobFunc set, EGLGetBlobFunc get);
|
||||
typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy,
|
||||
EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -860,7 +860,7 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname)
|
|||
|
||||
// The EGL_ANDROID_blob_cache extension should not be exposed to
|
||||
// applications. It is used internally by the Android EGL layer.
|
||||
if (!strcmp(procname, "eglSetBlobCacheFuncs")) {
|
||||
if (!strcmp(procname, "eglSetBlobCacheFuncsANDROID")) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -46,13 +46,13 @@ namespace android {
|
|||
//
|
||||
// Callback functions passed to EGL.
|
||||
//
|
||||
static void setBlob(const void* key, EGLsizei keySize, const void* value,
|
||||
EGLsizei valueSize) {
|
||||
static void setBlob(const void* key, EGLsizeiANDROID keySize,
|
||||
const void* value, EGLsizeiANDROID valueSize) {
|
||||
egl_cache_t::get()->setBlob(key, keySize, value, valueSize);
|
||||
}
|
||||
|
||||
static EGLsizei getBlob(const void* key, EGLsizei keySize, void* value,
|
||||
EGLsizei valueSize) {
|
||||
static EGLsizeiANDROID getBlob(const void* key, EGLsizeiANDROID keySize,
|
||||
void* value, EGLsizeiANDROID valueSize) {
|
||||
return egl_cache_t::get()->getBlob(key, keySize, value, valueSize);
|
||||
}
|
||||
|
||||
|
@ -87,22 +87,23 @@ void egl_cache_t::initialize(egl_display_t *display) {
|
|||
!strcmp(" " BC_EXT_STR, exts + extsLen - (bcExtLen+1));
|
||||
bool inMiddle = strstr(" " BC_EXT_STR " ", exts);
|
||||
if (equal || atStart || atEnd || inMiddle) {
|
||||
PFNEGLSETBLOBCACHEFUNCSPROC eglSetBlobCacheFuncs;
|
||||
eglSetBlobCacheFuncs =
|
||||
reinterpret_cast<PFNEGLSETBLOBCACHEFUNCSPROC>(
|
||||
cnx->egl.eglGetProcAddress("eglSetBlobCacheFuncs"));
|
||||
if (eglSetBlobCacheFuncs == NULL) {
|
||||
PFNEGLSETBLOBCACHEFUNCSANDROIDPROC eglSetBlobCacheFuncsANDROID;
|
||||
eglSetBlobCacheFuncsANDROID =
|
||||
reinterpret_cast<PFNEGLSETBLOBCACHEFUNCSANDROIDPROC>(
|
||||
cnx->egl.eglGetProcAddress(
|
||||
"eglSetBlobCacheFuncsANDROID"));
|
||||
if (eglSetBlobCacheFuncsANDROID == NULL) {
|
||||
LOGE("EGL_ANDROID_blob_cache advertised by display %d, "
|
||||
"but unable to get eglSetBlobCacheFuncs", i);
|
||||
"but unable to get eglSetBlobCacheFuncsANDROID", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
eglSetBlobCacheFuncs(display->disp[i].dpy, android::setBlob,
|
||||
android::getBlob);
|
||||
eglSetBlobCacheFuncsANDROID(display->disp[i].dpy,
|
||||
android::setBlob, android::getBlob);
|
||||
EGLint err = cnx->egl.eglGetError();
|
||||
if (err != EGL_SUCCESS) {
|
||||
LOGE("eglSetBlobCacheFuncs resulted in an error: %#x",
|
||||
err);
|
||||
LOGE("eglSetBlobCacheFuncsANDROID resulted in an error: "
|
||||
"%#x", err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -119,8 +120,8 @@ void egl_cache_t::terminate() {
|
|||
mInitialized = false;
|
||||
}
|
||||
|
||||
void egl_cache_t::setBlob(const void* key, EGLsizei keySize, const void* value,
|
||||
EGLsizei valueSize) {
|
||||
void egl_cache_t::setBlob(const void* key, EGLsizeiANDROID keySize,
|
||||
const void* value, EGLsizeiANDROID valueSize) {
|
||||
Mutex::Autolock lock(mMutex);
|
||||
|
||||
if (keySize < 0 || valueSize < 0) {
|
||||
|
@ -158,8 +159,8 @@ void egl_cache_t::setBlob(const void* key, EGLsizei keySize, const void* value,
|
|||
}
|
||||
}
|
||||
|
||||
EGLsizei egl_cache_t::getBlob(const void* key, EGLsizei keySize, void* value,
|
||||
EGLsizei valueSize) {
|
||||
EGLsizeiANDROID egl_cache_t::getBlob(const void* key, EGLsizeiANDROID keySize,
|
||||
void* value, EGLsizeiANDROID valueSize) {
|
||||
Mutex::Autolock lock(mMutex);
|
||||
|
||||
if (keySize < 0 || valueSize < 0) {
|
||||
|
@ -323,7 +324,8 @@ void egl_cache_t::loadBlobCacheLocked() {
|
|||
return;
|
||||
}
|
||||
|
||||
status_t err = mBlobCache->unflatten(buf + headerSize, cacheSize, NULL, 0);
|
||||
status_t err = mBlobCache->unflatten(buf + headerSize, cacheSize, NULL,
|
||||
0);
|
||||
if (err != OK) {
|
||||
LOGE("error reading cache contents: %s (%d)", strerror(-err),
|
||||
-err);
|
||||
|
|
|
@ -52,14 +52,14 @@ public:
|
|||
// setBlob attempts to insert a new key/value blob pair into the cache.
|
||||
// This will be called by the hardware vendor's EGL implementation via the
|
||||
// EGL_ANDROID_blob_cache extension.
|
||||
void setBlob(const void* key, EGLsizei keySize, const void* value,
|
||||
EGLsizei valueSize);
|
||||
void setBlob(const void* key, EGLsizeiANDROID keySize, const void* value,
|
||||
EGLsizeiANDROID valueSize);
|
||||
|
||||
// getBlob attempts to retrieve the value blob associated with a given key
|
||||
// blob from cache. This will be called by the hardware vendor's EGL
|
||||
// implementation via the EGL_ANDROID_blob_cache extension.
|
||||
EGLsizei getBlob(const void* key, EGLsizei keySize, void* value,
|
||||
EGLsizei valueSize);
|
||||
EGLsizeiANDROID getBlob(const void* key, EGLsizeiANDROID keySize,
|
||||
void* value, EGLsizeiANDROID valueSize);
|
||||
|
||||
// setCacheFilename sets the name of the file that should be used to store
|
||||
// cache contents from one program invocation to another.
|
||||
|
|
|
@ -63,31 +63,31 @@ Overview
|
|||
New Types
|
||||
|
||||
/*
|
||||
* EGLsizei is a signed integer type for representing the size of a memory
|
||||
* buffer.
|
||||
* EGLsizeiANDROID is a signed integer type for representing the size of a
|
||||
* memory buffer.
|
||||
*/
|
||||
#include <khrplatform.h>
|
||||
typedef khronos_ssize_t EGLsizei;
|
||||
typedef khronos_ssize_t EGLsizeiANDROID;
|
||||
|
||||
/*
|
||||
* EGLSetBlobFunc is a pointer to an application-provided function that a
|
||||
* client API implementation may use to insert a key/value pair into the
|
||||
* cache.
|
||||
*/
|
||||
typedef void (*EGLSetBlobFunc) (const void* key, EGLsizei keySize,
|
||||
const void* value, EGLsizei valueSize)
|
||||
typedef void (*EGLSetBlobFuncANDROID) (const void* key,
|
||||
EGLsizeiANDROID keySize, const void* value, EGLsizeiANDROID valueSize)
|
||||
|
||||
/*
|
||||
* EGLGetBlobFunc is a pointer to an application-provided function that a
|
||||
* client API implementation may use to retrieve a cached value from the
|
||||
* cache.
|
||||
*/
|
||||
typedef EGLsizei (*EGLGetBlobFunc) (const void* key, EGLsizei keySize,
|
||||
void* value, EGLsizei valueSize)
|
||||
typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void* key,
|
||||
EGLsizeiANDROID keySize, void* value, EGLsizeiANDROID valueSize)
|
||||
|
||||
New Procedures and Functions
|
||||
|
||||
void eglSetBlobCacheFuncs(EGLDisplay dpy,
|
||||
void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
|
||||
EGLSetBlobFunc set,
|
||||
EGLGetBlobFunc get);
|
||||
|
||||
|
@ -107,8 +107,8 @@ Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
|
|||
function pointers through which the client APIs can request data be cached
|
||||
and retrieved. The command
|
||||
|
||||
void eglSetBlobCacheFuncs(EGLDisplay dpy,
|
||||
EGLSetBlobFunc set, EGLGetBlobFunc get);
|
||||
void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
|
||||
EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
|
||||
|
||||
sets the callback function pointers that client APIs associated with
|
||||
display <dpy> can use to interact with caching functionality provided by
|
||||
|
@ -120,17 +120,17 @@ Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
|
|||
|
||||
Cache functions may only be specified once during the lifetime of an
|
||||
EGLDisplay. The <set> and <get> functions may be called at any time and
|
||||
from any thread from the time at which eglSetBlobCacheFuncs is called until
|
||||
the time that the last resource associated with <dpy> is deleted and <dpy>
|
||||
itself is terminated. Concurrent calls to these functions from different
|
||||
threads is also allowed.
|
||||
from any thread from the time at which eglSetBlobCacheFuncsANDROID is
|
||||
called until the time that the last resource associated with <dpy> is
|
||||
deleted and <dpy> itself is terminated. Concurrent calls to these
|
||||
functions from different threads is also allowed.
|
||||
|
||||
If eglSetBlobCacheFuncs generates an error then all client APIs must behave
|
||||
as though eglSetBlobCacheFuncs was not called for the display <dpy>. If
|
||||
<set> or <get> is NULL then an EGL_BAD_PARAMETER error is generated. If a
|
||||
successful eglSetBlobCacheFuncs call was already made for <dpy> and the
|
||||
display has not since been terminated then an EGL_BAD_PARAMETER error is
|
||||
generated.
|
||||
If eglSetBlobCacheFuncsANDROID generates an error then all client APIs must
|
||||
behave as though eglSetBlobCacheFuncsANDROID was not called for the display
|
||||
<dpy>. If <set> or <get> is NULL then an EGL_BAD_PARAMETER error is
|
||||
generated. If a successful eglSetBlobCacheFuncsANDROID call was already
|
||||
made for <dpy> and the display has not since been terminated then an
|
||||
EGL_BAD_PARAMETER error is generated.
|
||||
|
||||
3.9.1 Cache Operations
|
||||
|
||||
|
@ -138,8 +138,8 @@ Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
|
|||
key, a client API implementation can call the application-provided callback
|
||||
function
|
||||
|
||||
void (*set) (const void* key, EGLsizei keySize, const void* value,
|
||||
EGLsizei valueSize)
|
||||
void (*set) (const void* key, EGLsizeiANDROID keySize,
|
||||
const void* value, EGLsizeiANDROID valueSize)
|
||||
|
||||
<key> and <value> are pointers to the beginning of the key and value,
|
||||
respectively, that are to be inserted. <keySize> and <valueSize> specify
|
||||
|
@ -157,8 +157,8 @@ Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
|
|||
client API implementation can call the application-provided callback
|
||||
function
|
||||
|
||||
EGLsizei (*get) (const void* key, EGLsizei keySize, void* value,
|
||||
EGLsizei valueSize)
|
||||
EGLsizeiANDROID (*get) (const void* key, EGLsizeiANDROID keySize,
|
||||
void* value, EGLsizeiANDROID valueSize)
|
||||
|
||||
<key> is a pointer to the beginning of the key. <keySize> specifies the
|
||||
size in bytes of the binary key pointed to by <key>. If the cache contains
|
||||
|
|
Loading…
Reference in New Issue