mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[Refactor] (BackendLoader): share extension name matching between GLES and EGL probes
This commit is contained in:
@@ -18613,16 +18613,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
||||
Bool YuvTarget = false;
|
||||
};
|
||||
|
||||
Bool HasExtensionWord(const char* list, const char* word) {
|
||||
if (list == nullptr) return false;
|
||||
const SizeT n = std::strlen(word);
|
||||
for (const char* at = std::strstr(list, word); at != nullptr; at = std::strstr(at + 1, word)) {
|
||||
const Bool startOk = at == list || at[-1] == ' ';
|
||||
const Bool endOk = at[n] == '\0' || at[n] == ' ';
|
||||
if (startOk && endOk) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
using MG_Util::BackendLoader::HasExtensionWord;
|
||||
|
||||
// None of these is in the loader's tables, and eglGetProcAddress hands back live-looking
|
||||
// stubs for entry points a driver lacks, so the extension strings decide first. Resolved
|
||||
|
||||
@@ -2898,16 +2898,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
||||
kT0MapReadBit | kT0MapWriteBit | kMapPersistentBit | kMapCoherentBit | kDynamicStorageBit;
|
||||
constexpr GLbitfield kT0MapFlags = kT0MapReadBit | kT0MapWriteBit | kMapPersistentBit | kMapCoherentBit;
|
||||
|
||||
Bool HasExtensionWord(const char* list, const char* word) {
|
||||
if (list == nullptr) return false;
|
||||
const SizeT n = std::strlen(word);
|
||||
for (const char* at = std::strstr(list, word); at != nullptr; at = std::strstr(at + 1, word)) {
|
||||
const Bool startOk = at == list || at[-1] == ' ';
|
||||
const Bool endOk = at[n] == '\0' || at[n] == ' ';
|
||||
if (startOk && endOk) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
using MG_Util::BackendLoader::HasExtensionWord;
|
||||
|
||||
Bool ResolveT0EntryPoints(String& why) {
|
||||
if (g_t0GetNativeClientBuffer != nullptr && g_t0BufferStorageExternal != nullptr) return true;
|
||||
|
||||
@@ -21,6 +21,17 @@
|
||||
#endif
|
||||
|
||||
namespace MobileGL::MG_Util::BackendLoader {
|
||||
Bool HasExtensionWord(const char* list, const char* word) {
|
||||
if (list == nullptr || word == nullptr || *word == '\0') return false;
|
||||
const SizeT n = std::strlen(word);
|
||||
for (const char* at = std::strstr(list, word); at != nullptr; at = std::strstr(at + 1, word)) {
|
||||
const Bool startOk = at == list || at[-1] == ' ';
|
||||
const Bool endOk = at[n] == '\0' || at[n] == ' ';
|
||||
if (startOk && endOk) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static Bool UseAngle() {
|
||||
return MG_Config::Features.EsprytUseAngle;
|
||||
}
|
||||
|
||||
@@ -1364,6 +1364,8 @@ namespace MobileGL {
|
||||
} // namespace MG_External
|
||||
|
||||
namespace MG_Util::BackendLoader {
|
||||
// Match a complete name in a space-separated GLES/EGL extension string.
|
||||
Bool HasExtensionWord(const char* list, const char* word);
|
||||
void AcquireGLESFunctions(MG_External::GLESFunctionsTable& funcs,
|
||||
MG_External::EGL::eglGetProcAddress_PTR procAddress);
|
||||
void AcquireEGLFunctions(MG_External::EGLFunctionsTable& funcs);
|
||||
|
||||
Reference in New Issue
Block a user