opengl translator: make GLcommon static library
This change turns GLcommon to be static instead of shared library. Removed the s_globalNameSpace static object from objectNameManager and moved it to live inside the EglDisplay object which is shared for all display space objects (GLESv1, GLESv2 and EGL). Change-Id: I92fa71fb7cbac423c22b7188e8d9642a5fddf0d9
This commit is contained in:
committed by
David 'Digit' Turner
parent
cc3b388746
commit
cd1489a89c
@@ -51,13 +51,11 @@ LOCAL_MODULE_TAGS := debug
|
|||||||
LOCAL_MODULE := libEGL_translator
|
LOCAL_MODULE := libEGL_translator
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := \
|
LOCAL_STATIC_LIBRARIES := \
|
||||||
|
libGLcommon \
|
||||||
libcutils \
|
libcutils \
|
||||||
libutils \
|
libutils \
|
||||||
liblog \
|
liblog \
|
||||||
libOpenglOsUtils
|
libOpenglOsUtils
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
|
||||||
libGLcommon
|
|
||||||
|
|
||||||
include $(BUILD_HOST_SHARED_LIBRARY)
|
include $(BUILD_HOST_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,16 @@
|
|||||||
#include <GLcommon/GLutils.h>
|
#include <GLcommon/GLutils.h>
|
||||||
#include <utils/threads.h>
|
#include <utils/threads.h>
|
||||||
|
|
||||||
EglDisplay::EglDisplay(EGLNativeDisplayType dpy,bool isDefault):m_dpy(dpy),m_initialized(false),m_configInitialized(false),m_isDefault(isDefault),m_nextEglImageId(0){};
|
EglDisplay::EglDisplay(EGLNativeDisplayType dpy,bool isDefault) :
|
||||||
|
m_dpy(dpy),
|
||||||
|
m_initialized(false),
|
||||||
|
m_configInitialized(false),
|
||||||
|
m_isDefault(isDefault),
|
||||||
|
m_nextEglImageId(0)
|
||||||
|
{
|
||||||
|
m_manager[GLES_1_1] = new ObjectNameManager(&m_globalNameSpace);
|
||||||
|
m_manager[GLES_2_0] = new ObjectNameManager(&m_globalNameSpace);
|
||||||
|
};
|
||||||
|
|
||||||
EglDisplay::~EglDisplay() {
|
EglDisplay::~EglDisplay() {
|
||||||
android::Mutex::Autolock mutex(m_lock);
|
android::Mutex::Autolock mutex(m_lock);
|
||||||
@@ -31,6 +40,9 @@ EglDisplay::~EglDisplay() {
|
|||||||
EglConfig* pConfig = *it;
|
EglConfig* pConfig = *it;
|
||||||
if(pConfig) delete pConfig;
|
if(pConfig) delete pConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete m_manager[GLES_1_1];
|
||||||
|
delete m_manager[GLES_2_0];
|
||||||
}
|
}
|
||||||
|
|
||||||
EGLNativeDisplayType EglDisplay::nativeType(){return m_dpy;}
|
EGLNativeDisplayType EglDisplay::nativeType(){return m_dpy;}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public:
|
|||||||
ContextPtr getContext(EGLContext ctx);
|
ContextPtr getContext(EGLContext ctx);
|
||||||
bool removeContext(EGLContext ctx);
|
bool removeContext(EGLContext ctx);
|
||||||
bool removeContext(ContextPtr ctx);
|
bool removeContext(ContextPtr ctx);
|
||||||
ObjectNameManager* getManager(GLESVersion ver){ return &m_manager[ver];}
|
ObjectNameManager* getManager(GLESVersion ver){ return m_manager[ver];}
|
||||||
|
|
||||||
~EglDisplay();
|
~EglDisplay();
|
||||||
void initialize(int renderableType);
|
void initialize(int renderableType);
|
||||||
@@ -76,7 +76,8 @@ private:
|
|||||||
ConfigsList m_configs;
|
ConfigsList m_configs;
|
||||||
ContextsHndlMap m_contexts;
|
ContextsHndlMap m_contexts;
|
||||||
SurfacesHndlMap m_surfaces;
|
SurfacesHndlMap m_surfaces;
|
||||||
ObjectNameManager m_manager[MAX_GLES_VERSION];
|
GlobalNameSpace m_globalNameSpace;
|
||||||
|
ObjectNameManager *m_manager[MAX_GLES_VERSION];
|
||||||
android::Mutex m_lock;
|
android::Mutex m_lock;
|
||||||
ImagesHndlMap m_eglImages;
|
ImagesHndlMap m_eglImages;
|
||||||
unsigned int m_nextEglImageId;
|
unsigned int m_nextEglImageId;
|
||||||
|
|||||||
@@ -17,13 +17,11 @@ LOCAL_C_INCLUDES += \
|
|||||||
$(translator_path)/../../../shared
|
$(translator_path)/../../../shared
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := \
|
LOCAL_STATIC_LIBRARIES := \
|
||||||
|
libGLcommon \
|
||||||
libOpenglOsUtils \
|
libOpenglOsUtils \
|
||||||
libutils \
|
libutils \
|
||||||
libcutils
|
libcutils
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
|
||||||
libGLcommon
|
|
||||||
|
|
||||||
LOCAL_CFLAGS := -g -O0
|
LOCAL_CFLAGS := -g -O0
|
||||||
LOCAL_MODULE_TAGS := debug
|
LOCAL_MODULE_TAGS := debug
|
||||||
LOCAL_MODULE := libGLES_CM_translator
|
LOCAL_MODULE := libGLES_CM_translator
|
||||||
|
|||||||
@@ -14,9 +14,19 @@ LOCAL_SRC_FILES := \
|
|||||||
LOCAL_C_INCLUDES += \
|
LOCAL_C_INCLUDES += \
|
||||||
$(translator_path)/include \
|
$(translator_path)/include \
|
||||||
|
|
||||||
|
LOCAL_STATIC_LIBRARIES := \
|
||||||
|
libGLcommon \
|
||||||
|
libOpenglOsUtils \
|
||||||
|
libutils \
|
||||||
|
libcutils
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
ifeq ($(HOST_OS),linux)
|
||||||
libGLcommon
|
LOCAL_LDLIBS := -lGL -ldl
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(HOST_OS),windows)
|
||||||
|
LOCAL_LDLIBS := -lopengl32 -lgdi32
|
||||||
|
endif
|
||||||
|
|
||||||
LOCAL_CFLAGS := -g -O0
|
LOCAL_CFLAGS := -g -O0
|
||||||
LOCAL_MODULE_TAGS := debug
|
LOCAL_MODULE_TAGS := debug
|
||||||
|
|||||||
@@ -39,4 +39,4 @@ ifeq ($(HOST_OS),windows)
|
|||||||
LOCAL_LDLIBS := -lopengl32 -lgdi32
|
LOCAL_LDLIBS := -lopengl32 -lgdi32
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include $(BUILD_HOST_SHARED_LIBRARY)
|
include $(BUILD_HOST_STATIC_LIBRARY)
|
||||||
|
|||||||
@@ -16,58 +16,11 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <GLcommon/objectNameManager.h>
|
#include <GLcommon/objectNameManager.h>
|
||||||
|
|
||||||
class GlobalNameSpace
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
GlobalNameSpace()
|
|
||||||
{
|
|
||||||
mutex_init(&m_lock);
|
|
||||||
|
|
||||||
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
NameSpace::NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace) :
|
||||||
m_nameSpace[i] = new NameSpace((NamedObjectType)i);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
~GlobalNameSpace()
|
|
||||||
{
|
|
||||||
mutex_lock(&m_lock);
|
|
||||||
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
|
||||||
delete m_nameSpace[i];
|
|
||||||
}
|
|
||||||
mutex_unlock(&m_lock);
|
|
||||||
mutex_destroy(&m_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int genName(NamedObjectType p_type)
|
|
||||||
{
|
|
||||||
if ( p_type >= NUM_OBJECT_TYPES ) return 0;
|
|
||||||
|
|
||||||
mutex_lock(&m_lock);
|
|
||||||
unsigned int name = m_nameSpace[p_type]->genName(0, false);
|
|
||||||
mutex_unlock(&m_lock);
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
void deleteName(NamedObjectType p_type, unsigned int p_name)
|
|
||||||
{
|
|
||||||
if ( p_type >= NUM_OBJECT_TYPES ) return;
|
|
||||||
|
|
||||||
mutex_lock(&m_lock);
|
|
||||||
m_nameSpace[p_type]->deleteName(p_name);
|
|
||||||
mutex_unlock(&m_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
mutex_t m_lock;
|
|
||||||
NameSpace *m_nameSpace[NUM_OBJECT_TYPES];
|
|
||||||
};
|
|
||||||
|
|
||||||
static GlobalNameSpace *s_globalNameSpace = NULL;
|
|
||||||
|
|
||||||
NameSpace::NameSpace(NamedObjectType p_type) :
|
|
||||||
m_nextName(0),
|
m_nextName(0),
|
||||||
m_type(p_type)
|
m_type(p_type),
|
||||||
|
m_globalNameSpace(globalNameSpace)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +29,7 @@ NameSpace::~NameSpace()
|
|||||||
for (NamesMap::iterator n = m_localToGlobalMap.begin();
|
for (NamesMap::iterator n = m_localToGlobalMap.begin();
|
||||||
n != m_localToGlobalMap.end();
|
n != m_localToGlobalMap.end();
|
||||||
n++) {
|
n++) {
|
||||||
s_globalNameSpace->deleteName(m_type, (*n).second);
|
m_globalNameSpace->deleteName(m_type, (*n).second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +45,7 @@ NameSpace::genName(unsigned int p_localName, bool genGlobal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (genGlobal) {
|
if (genGlobal) {
|
||||||
unsigned int globalName = s_globalNameSpace->genName(m_type);
|
unsigned int globalName = m_globalNameSpace->genName(m_type);
|
||||||
m_localToGlobalMap[localName] = globalName;
|
m_localToGlobalMap[localName] = globalName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +84,7 @@ NameSpace::deleteName(unsigned int p_localName)
|
|||||||
{
|
{
|
||||||
NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
|
NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
|
||||||
if (n != m_localToGlobalMap.end()) {
|
if (n != m_localToGlobalMap.end()) {
|
||||||
s_globalNameSpace->deleteName(m_type, (*n).second);
|
m_globalNameSpace->deleteName(m_type, (*n).second);
|
||||||
m_localToGlobalMap.erase(p_localName);
|
m_localToGlobalMap.erase(p_localName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,7 +100,7 @@ NameSpace::replaceGlobalName(unsigned int p_localName, unsigned int p_globalName
|
|||||||
{
|
{
|
||||||
NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
|
NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
|
||||||
if (n != m_localToGlobalMap.end()) {
|
if (n != m_localToGlobalMap.end()) {
|
||||||
s_globalNameSpace->deleteName(m_type, (*n).second);
|
m_globalNameSpace->deleteName(m_type, (*n).second);
|
||||||
(*n).second = p_globalName;
|
(*n).second = p_globalName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -155,12 +108,12 @@ NameSpace::replaceGlobalName(unsigned int p_localName, unsigned int p_globalName
|
|||||||
typedef std::pair<NamedObjectType, unsigned int> ObjectIDPair;
|
typedef std::pair<NamedObjectType, unsigned int> ObjectIDPair;
|
||||||
typedef std::map<ObjectIDPair, ObjectDataPtr> ObjectDataMap;
|
typedef std::map<ObjectIDPair, ObjectDataPtr> ObjectDataMap;
|
||||||
|
|
||||||
ShareGroup::ShareGroup()
|
ShareGroup::ShareGroup(GlobalNameSpace *globalNameSpace)
|
||||||
{
|
{
|
||||||
mutex_init(&m_lock);
|
mutex_init(&m_lock);
|
||||||
|
|
||||||
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
||||||
m_nameSpace[i] = new NameSpace((NamedObjectType)i);
|
m_nameSpace[i] = new NameSpace((NamedObjectType)i, globalNameSpace);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_objectsData = NULL;
|
m_objectsData = NULL;
|
||||||
@@ -291,7 +244,8 @@ ShareGroup::getObjectData(NamedObjectType p_type, unsigned int p_localName)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectNameManager::ObjectNameManager()
|
ObjectNameManager::ObjectNameManager(GlobalNameSpace *globalNameSpace) :
|
||||||
|
m_globalNameSpace(globalNameSpace)
|
||||||
{
|
{
|
||||||
mutex_init(&m_lock);
|
mutex_init(&m_lock);
|
||||||
}
|
}
|
||||||
@@ -306,8 +260,6 @@ ObjectNameManager::createShareGroup(void *p_groupName)
|
|||||||
{
|
{
|
||||||
mutex_lock(&m_lock);
|
mutex_lock(&m_lock);
|
||||||
|
|
||||||
if (!s_globalNameSpace) s_globalNameSpace = new GlobalNameSpace();
|
|
||||||
|
|
||||||
ShareGroupPtr shareGroupReturn;
|
ShareGroupPtr shareGroupReturn;
|
||||||
|
|
||||||
ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
|
ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
|
||||||
@@ -318,7 +270,7 @@ ObjectNameManager::createShareGroup(void *p_groupName)
|
|||||||
//
|
//
|
||||||
// Group does not exist, create new group
|
// Group does not exist, create new group
|
||||||
//
|
//
|
||||||
shareGroupReturn = ShareGroupPtr( new ShareGroup() );
|
shareGroupReturn = ShareGroupPtr( new ShareGroup(m_globalNameSpace) );
|
||||||
m_groups.insert( std::pair<void *, ShareGroupPtr>(p_groupName, shareGroupReturn) );
|
m_groups.insert( std::pair<void *, ShareGroupPtr>(p_groupName, shareGroupReturn) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,8 +284,6 @@ ObjectNameManager::getShareGroup(void *p_groupName)
|
|||||||
{
|
{
|
||||||
mutex_lock(&m_lock);
|
mutex_lock(&m_lock);
|
||||||
|
|
||||||
if (!s_globalNameSpace) s_globalNameSpace = new GlobalNameSpace();
|
|
||||||
|
|
||||||
ShareGroupPtr shareGroupReturn(NULL);
|
ShareGroupPtr shareGroupReturn(NULL);
|
||||||
|
|
||||||
ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
|
ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
|
||||||
@@ -350,8 +300,6 @@ ObjectNameManager::attachShareGroup(void *p_groupName, void *p_existingGroupName
|
|||||||
{
|
{
|
||||||
mutex_lock(&m_lock);
|
mutex_lock(&m_lock);
|
||||||
|
|
||||||
if (!s_globalNameSpace) s_globalNameSpace = new GlobalNameSpace();
|
|
||||||
|
|
||||||
ShareGroupPtr shareGroupReturn;
|
ShareGroupPtr shareGroupReturn;
|
||||||
|
|
||||||
ShareGroupsMap::iterator s( m_groups.find(p_existingGroupName) );
|
ShareGroupsMap::iterator s( m_groups.find(p_existingGroupName) );
|
||||||
@@ -383,10 +331,6 @@ ObjectNameManager::deleteShareGroup(void *p_groupName)
|
|||||||
m_groups.erase(s);
|
m_groups.erase(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_groups.size() == 0 && s_globalNameSpace) {
|
|
||||||
delete s_globalNameSpace;
|
|
||||||
s_globalNameSpace = NULL;
|
|
||||||
}
|
|
||||||
mutex_unlock(&m_lock);
|
mutex_unlock(&m_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,13 +48,14 @@ typedef SmartPtr<ObjectData> ObjectDataPtr;
|
|||||||
// NOTE: this class does not used by the EGL/GLES layer directly,
|
// NOTE: this class does not used by the EGL/GLES layer directly,
|
||||||
// the EGL/GLES layer creates objects using the ShareGroup class
|
// the EGL/GLES layer creates objects using the ShareGroup class
|
||||||
// interface (see below).
|
// interface (see below).
|
||||||
|
class GlobalNameSpace;
|
||||||
class NameSpace
|
class NameSpace
|
||||||
{
|
{
|
||||||
friend class ShareGroup;
|
friend class ShareGroup;
|
||||||
friend class GlobalNameSpace;
|
friend class GlobalNameSpace;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit NameSpace(NamedObjectType p_type);
|
NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace);
|
||||||
~NameSpace();
|
~NameSpace();
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -98,6 +99,54 @@ private:
|
|||||||
unsigned int m_nextName;
|
unsigned int m_nextName;
|
||||||
NamesMap m_localToGlobalMap;
|
NamesMap m_localToGlobalMap;
|
||||||
const NamedObjectType m_type;
|
const NamedObjectType m_type;
|
||||||
|
GlobalNameSpace *m_globalNameSpace;
|
||||||
|
};
|
||||||
|
|
||||||
|
class GlobalNameSpace
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GlobalNameSpace()
|
||||||
|
{
|
||||||
|
mutex_init(&m_lock);
|
||||||
|
|
||||||
|
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
||||||
|
m_nameSpace[i] = new NameSpace((NamedObjectType)i, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
~GlobalNameSpace()
|
||||||
|
{
|
||||||
|
mutex_lock(&m_lock);
|
||||||
|
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
||||||
|
delete m_nameSpace[i];
|
||||||
|
}
|
||||||
|
mutex_unlock(&m_lock);
|
||||||
|
mutex_destroy(&m_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int genName(NamedObjectType p_type)
|
||||||
|
{
|
||||||
|
if ( p_type >= NUM_OBJECT_TYPES ) return 0;
|
||||||
|
|
||||||
|
mutex_lock(&m_lock);
|
||||||
|
unsigned int name = m_nameSpace[p_type]->genName(0, false);
|
||||||
|
mutex_unlock(&m_lock);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void deleteName(NamedObjectType p_type, unsigned int p_name)
|
||||||
|
{
|
||||||
|
if ( p_type >= NUM_OBJECT_TYPES ) return;
|
||||||
|
|
||||||
|
mutex_lock(&m_lock);
|
||||||
|
m_nameSpace[p_type]->deleteName(p_name);
|
||||||
|
mutex_unlock(&m_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutex_t m_lock;
|
||||||
|
NameSpace *m_nameSpace[NUM_OBJECT_TYPES];
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -163,7 +212,7 @@ public:
|
|||||||
ObjectDataPtr getObjectData(NamedObjectType p_type, unsigned int p_localName);
|
ObjectDataPtr getObjectData(NamedObjectType p_type, unsigned int p_localName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ShareGroup();
|
explicit ShareGroup(GlobalNameSpace *globalNameSpace);
|
||||||
~ShareGroup();
|
~ShareGroup();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -187,7 +236,7 @@ typedef std::multimap<void *, ShareGroupPtr> ShareGroupsMap;
|
|||||||
class ObjectNameManager
|
class ObjectNameManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ObjectNameManager();
|
explicit ObjectNameManager(GlobalNameSpace *globalNameSpace);
|
||||||
~ObjectNameManager();
|
~ObjectNameManager();
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -226,6 +275,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
ShareGroupsMap m_groups;
|
ShareGroupsMap m_groups;
|
||||||
mutex_t m_lock;
|
mutex_t m_lock;
|
||||||
|
GlobalNameSpace *m_globalNameSpace;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ LOCAL_SRC_FILES:= \
|
|||||||
|
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
libGLcommon \
|
|
||||||
libEGL_translator \
|
libEGL_translator \
|
||||||
libGLES_CM_translator
|
libGLES_CM_translator
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ LOCAL_SRC_FILES:= \
|
|||||||
|
|
||||||
|
|
||||||
LOCAL_SHARED_LIBRARIES := \
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
libGLcommon \
|
|
||||||
libEGL_translator \
|
libEGL_translator \
|
||||||
libGLES_V2_translator
|
libGLES_V2_translator
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user