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:
Jamie Gennis 2011-11-09 15:35:34 -08:00
parent 8e540328fc
commit c42fcf05ce
5 changed files with 58 additions and 56 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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);

View File

@ -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.

View File

@ -63,33 +63,33 @@ 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,
EGLSetBlobFunc set,
EGLGetBlobFunc get);
void eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
EGLSetBlobFunc set,
EGLGetBlobFunc get);
New Tokens
@ -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