From 9f93afecb6e3467e43f919e8f20f3ab3d11f45b2 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Wed, 11 Oct 2017 12:42:46 -0700 Subject: Add missing includes. Test: mma Bug: None Change-Id: I27d0860770f40b0d210277fbbf0242db450e0e0d --- opengl/libs/EGL/BlobCache.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/BlobCache.cpp b/opengl/libs/EGL/BlobCache.cpp index f1b30c7957..0624b609ce 100644 --- a/opengl/libs/EGL/BlobCache.cpp +++ b/opengl/libs/EGL/BlobCache.cpp @@ -18,6 +18,7 @@ #include "BlobCache.h" +#include #include #include -- cgit v1.2.3-59-g8ed1b From 9e7cd07a30a0ed27852ad04d2997f00387b55dcf Mon Sep 17 00:00:00 2001 From: Stan Iliev Date: Mon, 9 Oct 2017 15:56:10 -0400 Subject: Move some of the logic from egl_cache_t into FileBlobCache HWUI is using BlobCache to implement SkSL shader cache very similar to egl_cache_t. Create a new class FileBlobCache, that is used by both egl_cache_t and HWUI. FileBlobCache adds the logic to save and load the BlobCache from a memory mapped file. Test: Built and ran Android. Verified that EGL cache still works Test: for gmail and calc apps. Bug: 66740665 Change-Id: Ia4d194963d039a60244f3bc76108844418adc99d --- opengl/libs/Android.bp | 16 +++- opengl/libs/EGL/BlobCache.cpp | 2 +- opengl/libs/EGL/BlobCache.h | 15 ++-- opengl/libs/EGL/FileBlobCache.cpp | 185 ++++++++++++++++++++++++++++++++++++++ opengl/libs/EGL/FileBlobCache.h | 43 +++++++++ opengl/libs/EGL/egl_cache.cpp | 170 ++--------------------------------- opengl/libs/EGL/egl_cache.h | 12 +-- 7 files changed, 259 insertions(+), 184 deletions(-) create mode 100644 opengl/libs/EGL/FileBlobCache.cpp create mode 100644 opengl/libs/EGL/FileBlobCache.h (limited to 'opengl/libs') diff --git a/opengl/libs/Android.bp b/opengl/libs/Android.bp index 32c2d7e0d5..d43c1648be 100644 --- a/opengl/libs/Android.bp +++ b/opengl/libs/Android.bp @@ -122,6 +122,16 @@ cc_library_static { }, } +cc_library_static { + name: "libEGL_blobCache", + defaults: ["egl_libs_defaults"], + srcs: [ + "EGL/BlobCache.cpp", + "EGL/FileBlobCache.cpp", + ], + export_include_dirs: ["EGL"], +} + cc_library_shared { name: "libEGL", defaults: ["egl_libs_defaults"], @@ -133,7 +143,6 @@ cc_library_shared { "EGL/egl.cpp", "EGL/eglApi.cpp", "EGL/Loader.cpp", - "EGL/BlobCache.cpp", ], shared_libs: [ "libvndksupport", @@ -143,7 +152,10 @@ cc_library_shared { "libhidltransport", "libutils", ], - static_libs: ["libEGL_getProcAddress"], + static_libs: [ + "libEGL_getProcAddress", + "libEGL_blobCache", + ], ldflags: ["-Wl,--exclude-libs=ALL"], export_include_dirs: ["EGL/include"], } diff --git a/opengl/libs/EGL/BlobCache.cpp b/opengl/libs/EGL/BlobCache.cpp index 0624b609ce..b3752f5bcc 100644 --- a/opengl/libs/EGL/BlobCache.cpp +++ b/opengl/libs/EGL/BlobCache.cpp @@ -37,9 +37,9 @@ static const uint32_t blobCacheVersion = 3; static const uint32_t blobCacheDeviceVersion = 1; BlobCache::BlobCache(size_t maxKeySize, size_t maxValueSize, size_t maxTotalSize): + mMaxTotalSize(maxTotalSize), mMaxKeySize(maxKeySize), mMaxValueSize(maxValueSize), - mMaxTotalSize(maxTotalSize), mTotalSize(0) { int64_t now = std::chrono::steady_clock::now().time_since_epoch().count(); #ifdef _WIN32 diff --git a/opengl/libs/EGL/BlobCache.h b/opengl/libs/EGL/BlobCache.h index a0a270a5fe..1f5d5357e6 100644 --- a/opengl/libs/EGL/BlobCache.h +++ b/opengl/libs/EGL/BlobCache.h @@ -97,6 +97,14 @@ public: // int unflatten(void const* buffer, size_t size); +protected: + // mMaxTotalSize is the maximum size that all cache entries can occupy. This + // includes space for both keys and values. When a call to BlobCache::set + // would otherwise cause this limit to be exceeded, either the key/value + // pair passed to BlobCache::set will not be cached or other cache entries + // will be evicted from the cache to make room for the new entry. + const size_t mMaxTotalSize; + private: // Copying is disallowed. BlobCache(const BlobCache&); @@ -220,13 +228,6 @@ private: // simply not add the key/value pair to the cache. const size_t mMaxValueSize; - // mMaxTotalSize is the maximum size that all cache entries can occupy. This - // includes space for both keys and values. When a call to BlobCache::set - // would otherwise cause this limit to be exceeded, either the key/value - // pair passed to BlobCache::set will not be cached or other cache entries - // will be evicted from the cache to make room for the new entry. - const size_t mMaxTotalSize; - // mTotalSize is the total combined size of all keys and values currently in // the cache. size_t mTotalSize; diff --git a/opengl/libs/EGL/FileBlobCache.cpp b/opengl/libs/EGL/FileBlobCache.cpp new file mode 100644 index 0000000000..ff608a38a4 --- /dev/null +++ b/opengl/libs/EGL/FileBlobCache.cpp @@ -0,0 +1,185 @@ +/* + ** Copyright 2017, The Android Open Source Project + ** + ** Licensed under the Apache License, Version 2.0 (the "License"); + ** you may not use this file except in compliance with the License. + ** You may obtain a copy of the License at + ** + ** http://www.apache.org/licenses/LICENSE-2.0 + ** + ** Unless required by applicable law or agreed to in writing, software + ** distributed under the License is distributed on an "AS IS" BASIS, + ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ** See the License for the specific language governing permissions and + ** limitations under the License. + */ + +#include "FileBlobCache.h" + +#include +#include +#include +#include + + +// Cache file header +static const char* cacheFileMagic = "EGL$"; +static const size_t cacheFileHeaderSize = 8; + +namespace android { + +static uint32_t crc32c(const uint8_t* buf, size_t len) { + const uint32_t polyBits = 0x82F63B78; + uint32_t r = 0; + for (size_t i = 0; i < len; i++) { + r ^= buf[i]; + for (int j = 0; j < 8; j++) { + if (r & 1) { + r = (r >> 1) ^ polyBits; + } else { + r >>= 1; + } + } + } + return r; +} + +FileBlobCache::FileBlobCache(size_t maxKeySize, size_t maxValueSize, size_t maxTotalSize, + const std::string& filename) + : BlobCache(maxKeySize, maxValueSize, maxTotalSize) + , mFilename(filename) { + if (mFilename.length() > 0) { + size_t headerSize = cacheFileHeaderSize; + + int fd = open(mFilename.c_str(), O_RDONLY, 0); + if (fd == -1) { + if (errno != ENOENT) { + ALOGE("error opening cache file %s: %s (%d)", mFilename.c_str(), + strerror(errno), errno); + } + return; + } + + struct stat statBuf; + if (fstat(fd, &statBuf) == -1) { + ALOGE("error stat'ing cache file: %s (%d)", strerror(errno), errno); + close(fd); + return; + } + + // Sanity check the size before trying to mmap it. + size_t fileSize = statBuf.st_size; + if (fileSize > mMaxTotalSize * 2) { + ALOGE("cache file is too large: %#" PRIx64, + static_cast(statBuf.st_size)); + close(fd); + return; + } + + uint8_t* buf = reinterpret_cast(mmap(NULL, fileSize, + PROT_READ, MAP_PRIVATE, fd, 0)); + if (buf == MAP_FAILED) { + ALOGE("error mmaping cache file: %s (%d)", strerror(errno), + errno); + close(fd); + return; + } + + // Check the file magic and CRC + size_t cacheSize = fileSize - headerSize; + if (memcmp(buf, cacheFileMagic, 4) != 0) { + ALOGE("cache file has bad mojo"); + close(fd); + return; + } + uint32_t* crc = reinterpret_cast(buf + 4); + if (crc32c(buf + headerSize, cacheSize) != *crc) { + ALOGE("cache file failed CRC check"); + close(fd); + return; + } + + int err = unflatten(buf + headerSize, cacheSize); + if (err < 0) { + ALOGE("error reading cache contents: %s (%d)", strerror(-err), + -err); + munmap(buf, fileSize); + close(fd); + return; + } + + munmap(buf, fileSize); + close(fd); + } +} + +void FileBlobCache::writeToFile() { + if (mFilename.length() > 0) { + size_t cacheSize = getFlattenedSize(); + size_t headerSize = cacheFileHeaderSize; + const char* fname = mFilename.c_str(); + + // Try to create the file with no permissions so we can write it + // without anyone trying to read it. + int fd = open(fname, O_CREAT | O_EXCL | O_RDWR, 0); + if (fd == -1) { + if (errno == EEXIST) { + // The file exists, delete it and try again. + if (unlink(fname) == -1) { + // No point in retrying if the unlink failed. + ALOGE("error unlinking cache file %s: %s (%d)", fname, + strerror(errno), errno); + return; + } + // Retry now that we've unlinked the file. + fd = open(fname, O_CREAT | O_EXCL | O_RDWR, 0); + } + if (fd == -1) { + ALOGE("error creating cache file %s: %s (%d)", fname, + strerror(errno), errno); + return; + } + } + + size_t fileSize = headerSize + cacheSize; + + uint8_t* buf = new uint8_t [fileSize]; + if (!buf) { + ALOGE("error allocating buffer for cache contents: %s (%d)", + strerror(errno), errno); + close(fd); + unlink(fname); + return; + } + + int err = flatten(buf + headerSize, cacheSize); + if (err < 0) { + ALOGE("error writing cache contents: %s (%d)", strerror(-err), + -err); + delete [] buf; + close(fd); + unlink(fname); + return; + } + + // Write the file magic and CRC + memcpy(buf, cacheFileMagic, 4); + uint32_t* crc = reinterpret_cast(buf + 4); + *crc = crc32c(buf + headerSize, cacheSize); + + if (write(fd, buf, fileSize) == -1) { + ALOGE("error writing cache file: %s (%d)", strerror(errno), + errno); + delete [] buf; + close(fd); + unlink(fname); + return; + } + + delete [] buf; + fchmod(fd, S_IRUSR); + close(fd); + } +} + +} \ No newline at end of file diff --git a/opengl/libs/EGL/FileBlobCache.h b/opengl/libs/EGL/FileBlobCache.h new file mode 100644 index 0000000000..393703f234 --- /dev/null +++ b/opengl/libs/EGL/FileBlobCache.h @@ -0,0 +1,43 @@ +/* + ** Copyright 2017, The Android Open Source Project + ** + ** Licensed under the Apache License, Version 2.0 (the "License"); + ** you may not use this file except in compliance with the License. + ** You may obtain a copy of the License at + ** + ** http://www.apache.org/licenses/LICENSE-2.0 + ** + ** Unless required by applicable law or agreed to in writing, software + ** distributed under the License is distributed on an "AS IS" BASIS, + ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ** See the License for the specific language governing permissions and + ** limitations under the License. + */ + +#ifndef ANDROID_FILE_BLOB_CACHE_H +#define ANDROID_FILE_BLOB_CACHE_H + +#include "BlobCache.h" +#include + +namespace android { + +class FileBlobCache : public BlobCache { +public: + // FileBlobCache attempts to load the saved cache contents from disk into + // BlobCache. + FileBlobCache(size_t maxKeySize, size_t maxValueSize, size_t maxTotalSize, + const std::string& filename); + + // writeToFile attempts to save the current contents of BlobCache to + // disk. + void writeToFile(); + +private: + // mFilename is the name of the file for storing cache contents. + std::string mFilename; +}; + +} // namespace android + +#endif // ANDROID_BLOB_CACHE_H diff --git a/opengl/libs/EGL/egl_cache.cpp b/opengl/libs/EGL/egl_cache.cpp index 579e422c1a..ec548f3121 100644 --- a/opengl/libs/EGL/egl_cache.cpp +++ b/opengl/libs/EGL/egl_cache.cpp @@ -20,12 +20,8 @@ #include "egl_display.h" - #include -#include -#include -#include #include #include @@ -37,10 +33,6 @@ static const size_t maxKeySize = 12 * 1024; static const size_t maxValueSize = 64 * 1024; static const size_t maxTotalSize = 2 * 1024 * 1024; -// Cache file header -static const char* cacheFileMagic = "EGL$"; -static const size_t cacheFileHeaderSize = 8; - // The time in seconds to wait before saving newly inserted cache entries. static const unsigned int deferredSaveDelay = 4; @@ -124,7 +116,9 @@ void egl_cache_t::initialize(egl_display_t *display) { void egl_cache_t::terminate() { std::lock_guard lock(mMutex); - saveBlobCacheLocked(); + if (mBlobCache) { + mBlobCache->writeToFile(); + } mBlobCache = NULL; } @@ -146,8 +140,8 @@ void egl_cache_t::setBlob(const void* key, EGLsizeiANDROID keySize, std::thread deferredSaveThread([this]() { sleep(deferredSaveDelay); std::lock_guard lock(mMutex); - if (mInitialized) { - saveBlobCacheLocked(); + if (mInitialized && mBlobCache) { + mBlobCache->writeToFile(); } mSavePending = false; }); @@ -179,163 +173,11 @@ void egl_cache_t::setCacheFilename(const char* filename) { BlobCache* egl_cache_t::getBlobCacheLocked() { if (mBlobCache == nullptr) { - mBlobCache.reset(new BlobCache(maxKeySize, maxValueSize, maxTotalSize)); - loadBlobCacheLocked(); + mBlobCache.reset(new FileBlobCache(maxKeySize, maxValueSize, maxTotalSize, mFilename)); } return mBlobCache.get(); } -static uint32_t crc32c(const uint8_t* buf, size_t len) { - const uint32_t polyBits = 0x82F63B78; - uint32_t r = 0; - for (size_t i = 0; i < len; i++) { - r ^= buf[i]; - for (int j = 0; j < 8; j++) { - if (r & 1) { - r = (r >> 1) ^ polyBits; - } else { - r >>= 1; - } - } - } - return r; -} - -void egl_cache_t::saveBlobCacheLocked() { - if (mFilename.length() > 0 && mBlobCache != NULL) { - size_t cacheSize = mBlobCache->getFlattenedSize(); - size_t headerSize = cacheFileHeaderSize; - const char* fname = mFilename.c_str(); - - // Try to create the file with no permissions so we can write it - // without anyone trying to read it. - int fd = open(fname, O_CREAT | O_EXCL | O_RDWR, 0); - if (fd == -1) { - if (errno == EEXIST) { - // The file exists, delete it and try again. - if (unlink(fname) == -1) { - // No point in retrying if the unlink failed. - ALOGE("error unlinking cache file %s: %s (%d)", fname, - strerror(errno), errno); - return; - } - // Retry now that we've unlinked the file. - fd = open(fname, O_CREAT | O_EXCL | O_RDWR, 0); - } - if (fd == -1) { - ALOGE("error creating cache file %s: %s (%d)", fname, - strerror(errno), errno); - return; - } - } - - size_t fileSize = headerSize + cacheSize; - - uint8_t* buf = new uint8_t [fileSize]; - if (!buf) { - ALOGE("error allocating buffer for cache contents: %s (%d)", - strerror(errno), errno); - close(fd); - unlink(fname); - return; - } - - int err = mBlobCache->flatten(buf + headerSize, cacheSize); - if (err < 0) { - ALOGE("error writing cache contents: %s (%d)", strerror(-err), - -err); - delete [] buf; - close(fd); - unlink(fname); - return; - } - - // Write the file magic and CRC - memcpy(buf, cacheFileMagic, 4); - uint32_t* crc = reinterpret_cast(buf + 4); - *crc = crc32c(buf + headerSize, cacheSize); - - if (write(fd, buf, fileSize) == -1) { - ALOGE("error writing cache file: %s (%d)", strerror(errno), - errno); - delete [] buf; - close(fd); - unlink(fname); - return; - } - - delete [] buf; - fchmod(fd, S_IRUSR); - close(fd); - } -} - -void egl_cache_t::loadBlobCacheLocked() { - if (mFilename.length() > 0) { - size_t headerSize = cacheFileHeaderSize; - - int fd = open(mFilename.c_str(), O_RDONLY, 0); - if (fd == -1) { - if (errno != ENOENT) { - ALOGE("error opening cache file %s: %s (%d)", mFilename.c_str(), - strerror(errno), errno); - } - return; - } - - struct stat statBuf; - if (fstat(fd, &statBuf) == -1) { - ALOGE("error stat'ing cache file: %s (%d)", strerror(errno), errno); - close(fd); - return; - } - - // Sanity check the size before trying to mmap it. - size_t fileSize = statBuf.st_size; - if (fileSize > maxTotalSize * 2) { - ALOGE("cache file is too large: %#" PRIx64, - static_cast(statBuf.st_size)); - close(fd); - return; - } - - uint8_t* buf = reinterpret_cast(mmap(NULL, fileSize, - PROT_READ, MAP_PRIVATE, fd, 0)); - if (buf == MAP_FAILED) { - ALOGE("error mmaping cache file: %s (%d)", strerror(errno), - errno); - close(fd); - return; - } - - // Check the file magic and CRC - size_t cacheSize = fileSize - headerSize; - if (memcmp(buf, cacheFileMagic, 4) != 0) { - ALOGE("cache file has bad mojo"); - close(fd); - return; - } - uint32_t* crc = reinterpret_cast(buf + 4); - if (crc32c(buf + headerSize, cacheSize) != *crc) { - ALOGE("cache file failed CRC check"); - close(fd); - return; - } - - int err = mBlobCache->unflatten(buf + headerSize, cacheSize); - if (err < 0) { - ALOGE("error reading cache contents: %s (%d)", strerror(-err), - -err); - munmap(buf, fileSize); - close(fd); - return; - } - - munmap(buf, fileSize); - close(fd); - } -} - // ---------------------------------------------------------------------------- }; // namespace android // ---------------------------------------------------------------------------- diff --git a/opengl/libs/EGL/egl_cache.h b/opengl/libs/EGL/egl_cache.h index 56360f0bc8..7382b913fa 100644 --- a/opengl/libs/EGL/egl_cache.h +++ b/opengl/libs/EGL/egl_cache.h @@ -20,7 +20,7 @@ #include #include -#include "BlobCache.h" +#include "FileBlobCache.h" #include #include @@ -82,14 +82,6 @@ private: // possible. BlobCache* getBlobCacheLocked(); - // saveBlobCache attempts to save the current contents of mBlobCache to - // disk. - void saveBlobCacheLocked(); - - // loadBlobCache attempts to load the saved cache contents from disk into - // mBlobCache. - void loadBlobCacheLocked(); - // mInitialized indicates whether the egl_cache_t is in the initialized // state. It is initialized to false at construction time, and gets set to // true when initialize is called. It is set back to false when terminate @@ -101,7 +93,7 @@ private: // mBlobCache is the cache in which the key/value blob pairs are stored. It // is initially NULL, and will be initialized by getBlobCacheLocked the // first time it's needed. - std::unique_ptr mBlobCache; + std::unique_ptr mBlobCache; // mFilename is the name of the file for storing cache contents in between // program invocations. It is initialized to an empty string at -- cgit v1.2.3-59-g8ed1b From 52870fcd077c3a296873785a42c2ca6f60910423 Mon Sep 17 00:00:00 2001 From: Lingfeng Yang Date: Fri, 11 Aug 2017 01:18:00 -0700 Subject: emulator: api 26 fix guest rendering Load swiftshader libraries when -gpu guest mode is used by emulator. Change-Id: I95dbacdcb2b2a5e5ff143ed413ebbefbc20d81bd --- opengl/libs/EGL/Loader.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index 399affc509..9822849e3f 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -338,6 +338,14 @@ static void* load_system_driver(const char* kind) { result = std::string("/vendor/lib64/egl/lib") + kind + "_emulation.so"; #else result = std::string("/vendor/lib/egl/lib") + kind + "_emulation.so"; +#endif + return result; + case 2: + // Use guest side swiftshader library +#if defined(__LP64__) + result = std::string("/vendor/lib64/egl/lib") + kind + "_swiftshader.so"; +#else + result = std::string("/vendor/lib/egl/lib") + kind + "_swiftshader.so"; #endif return result; default: -- cgit v1.2.3-59-g8ed1b From 7025b54d8ac4b108c93b45958f7776c9098f6394 Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Wed, 6 Dec 2017 14:19:44 -0800 Subject: Fix sanitizer in egl_display_t::get. On integer overflow sanitized builds, uintptr_t(dpy)-1U is causing a runtime error: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int' This handles the case where dpy is 0 before the decrement occurs. Bug: 30969751 Test: Compiles. Change-Id: Ieafe818addfa09cf5b50e2df8f078296c5e3c759 --- opengl/libs/EGL/egl_display.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index 4e5833ab12..3c1edd148a 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -79,6 +79,10 @@ egl_display_t::~egl_display_t() { } egl_display_t* egl_display_t::get(EGLDisplay dpy) { + if (uintptr_t(dpy) == 0) { + return nullptr; + } + uintptr_t index = uintptr_t(dpy)-1U; if (index >= NUM_DISPLAYS || !sDisplay[index].isValid()) { return nullptr; -- cgit v1.2.3-59-g8ed1b From cbf81da13ab171f6394485f4572f915a69fd9bca Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 5 Jan 2018 14:24:09 -0800 Subject: Add missing include. Test: make checkbuild Bug: None Change-Id: I717bdcc9551dde6ca604d3d46ad085e98fbbee51 --- opengl/libs/EGL/FileBlobCache.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/FileBlobCache.cpp b/opengl/libs/EGL/FileBlobCache.cpp index ff608a38a4..79237159bf 100644 --- a/opengl/libs/EGL/FileBlobCache.cpp +++ b/opengl/libs/EGL/FileBlobCache.cpp @@ -16,6 +16,7 @@ #include "FileBlobCache.h" +#include #include #include #include @@ -182,4 +183,4 @@ void FileBlobCache::writeToFile() { } } -} \ No newline at end of file +} -- cgit v1.2.3-59-g8ed1b From 12ffe0966f5969a16a90e7ead838b21b96283c16 Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Thu, 16 Nov 2017 14:27:48 -0700 Subject: Add HDR dataspaces to EGL bug: 63710530 Test: adb shell /data/nativetest/EGL_test/EGL_test Test: adb -d shell am start -n \ com.drawelements.deqp/android.app.NativeActivity \ -e cmdLine '"deqp --deqp-case=dEQP-EGL.functional.hdr_color.* \ --deqp-log-filename=/sdcard/dEQP-Log.qpa"' Change-Id: I52c43539806c901c674f037489d502d771080a30 --- opengl/libs/EGL/eglApi.cpp | 123 +++++++++++++---- opengl/libs/EGL/egl_display.cpp | 17 +++ opengl/libs/EGL/egl_object.cpp | 121 +++++++++++++++- opengl/libs/EGL/egl_object.h | 9 ++ opengl/tests/EGLTest/EGL_test.cpp | 280 +++++++++++++++++++++++++++++++++++++- 5 files changed, 519 insertions(+), 31 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 94dfe6a9de..484e0baffc 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -468,12 +468,17 @@ static android_dataspace modifyBufferDataspace(android_dataspace dataSpace, return HAL_DATASPACE_V0_SCRGB; } else if (colorspace == EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT) { return HAL_DATASPACE_V0_SCRGB_LINEAR; + } else if (colorspace == EGL_GL_COLORSPACE_BT2020_LINEAR_EXT) { + return HAL_DATASPACE_BT2020_LINEAR; + } else if (colorspace == EGL_GL_COLORSPACE_BT2020_PQ_EXT) { + return HAL_DATASPACE_BT2020_PQ; } return dataSpace; } -// Return true if we stripped any EGL_GL_COLORSPACE_KHR attributes. -static EGLBoolean stripColorSpaceAttribute(egl_display_ptr dp, const EGLint* attrib_list, +// Return true if we stripped any EGL_GL_COLORSPACE_KHR or HDR metadata attributes. +// Protect devices from attributes they don't recognize that are managed by Android +static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, EGLint format, std::vector& stripped_attrib_list) { std::vector allowedColorSpaces; @@ -494,33 +499,64 @@ static EGLBoolean stripColorSpaceAttribute(egl_display_ptr dp, const EGLint* att break; } + if (!attrib_list) return false; + bool stripped = false; - if (attrib_list && dp->haveExtension("EGL_KHR_gl_colorspace")) { - for (const EGLint* attr = attrib_list; attr[0] != EGL_NONE; attr += 2) { - if (attr[0] == EGL_GL_COLORSPACE_KHR) { - EGLint colorSpace = attr[1]; - bool found = false; - // Verify that color space is allowed - for (auto it : allowedColorSpaces) { - if (colorSpace == it) { - found = true; + for (const EGLint* attr = attrib_list; attr[0] != EGL_NONE; attr += 2) { + switch (attr[0]) { + case EGL_GL_COLORSPACE_KHR: { + EGLint colorSpace = attr[1]; + bool found = false; + // Verify that color space is allowed + for (auto it : allowedColorSpaces) { + if (colorSpace == it) { + found = true; + } + } + if (found && dp->haveExtension("EGL_KHR_gl_colorspace")) { + stripped = true; + } else { + stripped_attrib_list.push_back(attr[0]); + stripped_attrib_list.push_back(attr[1]); } } - if (!found) { + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: + case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: + case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: + case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: + case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: + case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: + case EGL_SMPTE2086_WHITE_POINT_X_EXT: + case EGL_SMPTE2086_WHITE_POINT_Y_EXT: + case EGL_SMPTE2086_MAX_LUMINANCE_EXT: + case EGL_SMPTE2086_MIN_LUMINANCE_EXT: + if (dp->haveExtension("EGL_EXT_surface_SMPTE2086_metadata")) { stripped = true; } else { stripped_attrib_list.push_back(attr[0]); stripped_attrib_list.push_back(attr[1]); } - } else { + break; + case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: + case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: + if (dp->haveExtension("EGL_EXT_surface_CTA861_3_metadata")) { + stripped = true; + } else { + stripped_attrib_list.push_back(attr[0]); + stripped_attrib_list.push_back(attr[1]); + } + break; + default: stripped_attrib_list.push_back(attr[0]); stripped_attrib_list.push_back(attr[1]); - } + break; } } + + // Make sure there is at least one attribute if (stripped) { stripped_attrib_list.push_back(EGL_NONE); - stripped_attrib_list.push_back(EGL_NONE); } return stripped; } @@ -544,10 +580,10 @@ static EGLBoolean getColorSpaceAttribute(egl_display_ptr dp, NativeWindowType wi // is available, so no need to verify. found = true; verify = false; - } else if (colorSpace == EGL_EXT_gl_colorspace_bt2020_linear && + } else if (colorSpace == EGL_GL_COLORSPACE_BT2020_LINEAR_EXT && dp->haveExtension("EGL_EXT_gl_colorspace_bt2020_linear")) { found = true; - } else if (colorSpace == EGL_EXT_gl_colorspace_bt2020_pq && + } else if (colorSpace == EGL_GL_COLORSPACE_BT2020_PQ_EXT && dp->haveExtension("EGL_EXT_gl_colorspace_bt2020_pq")) { found = true; } else if (colorSpace == EGL_GL_COLORSPACE_SCRGB_EXT && @@ -664,10 +700,43 @@ void getNativePixelFormat(EGLDisplay dpy, egl_connection_t* cnx, EGLConfig confi } } +EGLBoolean setSurfaceMetadata(egl_surface_t* s, NativeWindowType window, + const EGLint *attrib_list) { + // set any HDR metadata + bool smpte2086 = false; + bool cta8613 = false; + if (attrib_list == nullptr) return EGL_TRUE; + + for (const EGLint* attr = attrib_list; attr[0] != EGL_NONE; attr += 2) { + smpte2086 |= s->setSmpte2086Attribute(attr[0], attr[1]); + cta8613 |= s->setCta8613Attribute(attr[0], attr[1]); + } + if (smpte2086) { + int err = native_window_set_buffers_smpte2086_metadata(window, s->getSmpte2086Metadata()); + if (err != 0) { + ALOGE("error setting native window smpte2086 metadata: %s (%d)", + strerror(-err), err); + native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL); + return EGL_FALSE; + } + } + if (cta8613) { + int err = native_window_set_buffers_cta861_3_metadata(window, s->getCta8613Metadata()); + if (err != 0) { + ALOGE("error setting native window CTS 861.3 metadata: %s (%d)", + strerror(-err), err); + native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL); + return EGL_FALSE; + } + } + return EGL_TRUE; +} + EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list) { + const EGLint *origAttribList = attrib_list; clearError(); egl_connection_t* cnx = NULL; @@ -705,7 +774,7 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, } std::vector strippedAttribList; - if (stripColorSpaceAttribute(dp, attrib_list, format, strippedAttribList)) { + if (stripAttributes(dp, attrib_list, format, strippedAttribList)) { // Had to modify the attribute list due to use of color space. // Use modified list from here on. attrib_list = strippedAttribList.data(); @@ -741,7 +810,11 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, if (surface != EGL_NO_SURFACE) { egl_surface_t* s = new egl_surface_t(dp.get(), config, window, surface, colorSpace, cnx); - return s; + + if (setSurfaceMetadata(s, window, origAttribList)) { + return s; + } + eglDestroySurface(dpy, s); } // EGLSurface creation failed @@ -802,7 +875,7 @@ EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, // colorspace. We do need to filter out color spaces the // driver doesn't know how to process. std::vector strippedAttribList; - if (stripColorSpaceAttribute(dp, attrib_list, format, strippedAttribList)) { + if (stripAttributes(dp, attrib_list, format, strippedAttribList)) { // Had to modify the attribute list due to use of color space. // Use modified list from here on. attrib_list = strippedAttribList.data(); @@ -850,12 +923,14 @@ EGLBoolean eglQuerySurface( EGLDisplay dpy, EGLSurface surface, return setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); egl_surface_t const * const s = get_surface(surface); - if (attribute == EGL_GL_COLORSPACE_KHR) { - *value = s->getColorSpace(); + if (s->getColorSpaceAttribute(attribute, value)) { + return EGL_TRUE; + } else if (s->getSmpte2086Attribute(attribute, value)) { + return EGL_TRUE; + } else if (s->getCta8613Attribute(attribute, value)) { return EGL_TRUE; } - return s->cnx->egl.eglQuerySurface( - dp->disp.dpy, s->surface, attribute, value); + return s->cnx->egl.eglQuerySurface(dp->disp.dpy, s->surface, attribute, value); } void EGLAPI eglBeginFrame(EGLDisplay dpy, EGLSurface surface) { diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index 3c1edd148a..0f36614ac1 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -214,6 +214,23 @@ EGLBoolean egl_display_t::initialize(EGLint *major, EGLint *minor) { "EGL_EXT_gl_colorspace_display_p3_linear EGL_EXT_gl_colorspace_display_p3 "); } + bool hasHdrBoardConfig = + getBool(false); + + if (hasHdrBoardConfig) { + // hasHDRBoardConfig indicates the system is capable of supporting HDR content. + // Typically that means there is an HDR capable display attached, but could be + // support for attaching an HDR display. In either case, advertise support for + // HDR color spaces. + mExtensionString.append( + "EGL_EXT_gl_colorspace_bt2020_linear EGL_EXT_gl_colorspace_bt2020_pq "); + } + + // Always advertise HDR metadata extensions since it's okay for an application + // to specify such information even though it may not be used by the system. + mExtensionString.append( + "EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata "); + char const* start = gExtensionString; do { // length of the extension name diff --git a/opengl/libs/EGL/egl_object.cpp b/opengl/libs/EGL/egl_object.cpp index 72b4823ea0..13b94b6361 100644 --- a/opengl/libs/EGL/egl_object.cpp +++ b/opengl/libs/EGL/egl_object.cpp @@ -63,7 +63,9 @@ egl_surface_t::egl_surface_t(egl_display_t* dpy, EGLConfig config, EGLNativeWind win(win), cnx(cnx), connected(true), - colorSpace(colorSpace) { + colorSpace(colorSpace), + smpte2086_metadata({}), + cta861_3_metadata({}) { if (win) { win->incStrong(this); } @@ -86,6 +88,123 @@ void egl_surface_t::disconnect() { } } +EGLBoolean egl_surface_t::setSmpte2086Attribute(EGLint attribute, EGLint value) { + switch (attribute) { + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: + smpte2086_metadata.displayPrimaryRed.x = value; + return EGL_TRUE; + case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: + smpte2086_metadata.displayPrimaryRed.y = value; + return EGL_TRUE; + case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: + smpte2086_metadata.displayPrimaryGreen.x = value; + return EGL_TRUE; + case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: + smpte2086_metadata.displayPrimaryGreen.y = value; + return EGL_TRUE; + case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: + smpte2086_metadata.displayPrimaryBlue.x = value; + return EGL_TRUE; + case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: + smpte2086_metadata.displayPrimaryBlue.y = value; + return EGL_TRUE; + case EGL_SMPTE2086_WHITE_POINT_X_EXT: + smpte2086_metadata.whitePoint.x = value; + return EGL_TRUE; + case EGL_SMPTE2086_WHITE_POINT_Y_EXT: + smpte2086_metadata.whitePoint.y = value; + return EGL_TRUE; + case EGL_SMPTE2086_MAX_LUMINANCE_EXT: + smpte2086_metadata.maxLuminance = value; + return EGL_TRUE; + case EGL_SMPTE2086_MIN_LUMINANCE_EXT: + smpte2086_metadata.minLuminance = value; + return EGL_TRUE; + } + return EGL_FALSE; +} + +EGLBoolean egl_surface_t::setCta8613Attribute(EGLint attribute, EGLint value) { + switch (attribute) { + case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: + cta861_3_metadata.maxContentLightLevel = value; + return EGL_TRUE; + case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: + cta861_3_metadata.maxFrameAverageLightLevel = value; + return EGL_TRUE; + } + return EGL_FALSE; +} + +EGLBoolean egl_surface_t::getColorSpaceAttribute(EGLint attribute, EGLint* value) const { + if (attribute == EGL_GL_COLORSPACE_KHR) { + *value = colorSpace; + return EGL_TRUE; + } + return EGL_FALSE; +} + +EGLBoolean egl_surface_t::getSmpte2086Attribute(EGLint attribute, EGLint *value) const { + switch (attribute) { + case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryRed.x); + return EGL_TRUE; + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryRed.y); + return EGL_TRUE; + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryGreen.x); + return EGL_TRUE; + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryGreen.y); + return EGL_TRUE; + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryBlue.x); + return EGL_TRUE; + break; + case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryBlue.y); + return EGL_TRUE; + break; + case EGL_SMPTE2086_WHITE_POINT_X_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.whitePoint.x); + return EGL_TRUE; + break; + case EGL_SMPTE2086_WHITE_POINT_Y_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.whitePoint.y); + return EGL_TRUE; + break; + case EGL_SMPTE2086_MAX_LUMINANCE_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.maxLuminance); + return EGL_TRUE; + break; + case EGL_SMPTE2086_MIN_LUMINANCE_EXT: + *value = *reinterpret_cast(&smpte2086_metadata.minLuminance); + return EGL_TRUE; + break; + } + return EGL_FALSE; +} + +EGLBoolean egl_surface_t::getCta8613Attribute(EGLint attribute, EGLint *value) const { + switch (attribute) { + case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: + *value = *reinterpret_cast(&cta861_3_metadata.maxContentLightLevel); + return EGL_TRUE; + break; + case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: + *value = *reinterpret_cast(&cta861_3_metadata.maxFrameAverageLightLevel); + return EGL_TRUE; + break; + } + return EGL_FALSE; +} + void egl_surface_t::terminate() { disconnect(); egl_object_t::terminate(); diff --git a/opengl/libs/EGL/egl_object.h b/opengl/libs/EGL/egl_object.h index 7c3075c9fc..a9020a17ee 100644 --- a/opengl/libs/EGL/egl_object.h +++ b/opengl/libs/EGL/egl_object.h @@ -137,6 +137,13 @@ public: ANativeWindow* getNativeWindow() { return win; } ANativeWindow* getNativeWindow() const { return win; } EGLint getColorSpace() const { return colorSpace; } + EGLBoolean setSmpte2086Attribute(EGLint attribute, EGLint value); + EGLBoolean setCta8613Attribute(EGLint attribute, EGLint value); + EGLBoolean getColorSpaceAttribute(EGLint attribute, EGLint* value) const; + EGLBoolean getSmpte2086Attribute(EGLint attribute, EGLint* value) const; + EGLBoolean getCta8613Attribute(EGLint attribute, EGLint* value) const; + const android_smpte2086_metadata* getSmpte2086Metadata() const { return &smpte2086_metadata; } + const android_cta861_3_metadata* getCta8613Metadata() const { return &cta861_3_metadata; } // Try to keep the order of these fields and size unchanged. It's not public API, but // it's not hard to imagine native games accessing them. @@ -150,6 +157,8 @@ private: bool connected; void disconnect(); EGLint colorSpace; + android_smpte2086_metadata smpte2086_metadata; + android_cta861_3_metadata cta861_3_metadata; }; class egl_context_t: public egl_object_t { diff --git a/opengl/tests/EGLTest/EGL_test.cpp b/opengl/tests/EGLTest/EGL_test.cpp index b67a053021..8bb74a2b29 100644 --- a/opengl/tests/EGLTest/EGL_test.cpp +++ b/opengl/tests/EGLTest/EGL_test.cpp @@ -53,7 +53,20 @@ using namespace android::hardware::configstore::V1_0; static bool hasWideColorDisplay = getBool(false); +static bool hasHdrDisplay = + getBool(false); + +union FlexAttribute { + EGLint uint_value; + float float_value; +}; + class EGLTest : public ::testing::Test { +public: + void get8BitConfig(EGLConfig& config); + void addOptionalWindowMetadata(std::vector& attrs); + void checkOptionalWindowMetadata(EGLSurface eglSurface); + protected: EGLDisplay mEglDisplay; @@ -365,6 +378,261 @@ TEST_F(EGLTest, EGLDisplayP31010102) { EXPECT_TRUE(eglDestroySurface(mEglDisplay, eglSurface)); } +void EGLTest::get8BitConfig(EGLConfig& config) { + EGLint numConfigs; + EGLBoolean success; + + // Use 8-bit to keep focus on colorspace aspect + const EGLint attrs[] = { + // clang-format off + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PBUFFER_BIT, + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_COLOR_COMPONENT_TYPE_EXT, EGL_COLOR_COMPONENT_TYPE_FIXED_EXT, + EGL_NONE, + // clang-format on + }; + success = eglChooseConfig(mEglDisplay, attrs, &config, 1, &numConfigs); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(1, numConfigs); + + EGLint components[4]; + EGLint value; + eglGetConfigAttrib(mEglDisplay, config, EGL_CONFIG_ID, &value); + + success = eglGetConfigAttrib(mEglDisplay, config, EGL_RED_SIZE, &components[0]); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(EGL_SUCCESS, eglGetError()); + success = eglGetConfigAttrib(mEglDisplay, config, EGL_GREEN_SIZE, &components[1]); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(EGL_SUCCESS, eglGetError()); + success = eglGetConfigAttrib(mEglDisplay, config, EGL_BLUE_SIZE, &components[2]); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(EGL_SUCCESS, eglGetError()); + success = eglGetConfigAttrib(mEglDisplay, config, EGL_ALPHA_SIZE, &components[3]); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(EGL_SUCCESS, eglGetError()); + + // Verify component sizes on config match what was asked for. + EXPECT_EQ(components[0], 8); + EXPECT_EQ(components[1], 8); + EXPECT_EQ(components[2], 8); + EXPECT_EQ(components[3], 8); +} + +void EGLTest::addOptionalWindowMetadata(std::vector& attrs) { + FlexAttribute data; + if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_SMPTE2086_metadata")) { + attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT); + data.float_value = 0.640; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT); + data.float_value = 0.330; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT); + data.float_value = 0.290; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT); + data.float_value = 0.600; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT); + data.float_value = 0.150; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT); + data.float_value = 0.060; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_WHITE_POINT_X_EXT); + data.float_value = 0.3127; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_WHITE_POINT_Y_EXT); + data.float_value = 0.3290; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_MAX_LUMINANCE_EXT); + data.float_value = 300.0; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_SMPTE2086_MIN_LUMINANCE_EXT); + data.float_value = 0.7; + attrs.push_back(data.uint_value); + } + + if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_CTA861_3_metadata")) { + attrs.push_back(EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT); + data.float_value = 300.0; + attrs.push_back(data.uint_value); + attrs.push_back(EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT); + data.float_value = 75.0; + attrs.push_back(data.uint_value); + } +} + +void EGLTest::checkOptionalWindowMetadata(EGLSurface eglSurface) { + EGLBoolean success; + EGLint value; + FlexAttribute expected; + + if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_SMPTE2086_metadata")) { + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.640; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.330; + ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(0, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.290; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.600; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.150; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.060; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_WHITE_POINT_X_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.3127; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_WHITE_POINT_Y_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.3290; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 300.0; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_MIN_LUMINANCE_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 0.7; + ASSERT_EQ(expected.uint_value, value); + } + + if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_CTA861_3_metadata")) { + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 300.0; + ASSERT_EQ(expected.uint_value, value); + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + expected.float_value = 75.0; + ASSERT_EQ(expected.uint_value, value); + } +} + +TEST_F(EGLTest, EGLBT2020Linear) { + EGLConfig config; + EGLBoolean success; + + if (!hasHdrDisplay) { + // skip this test if device does not have HDR display + RecordProperty("hasHdrDisplay", false); + return; + } + + // Test that bt2020 linear extension exists + ASSERT_TRUE(hasEglExtension(mEglDisplay, "EGL_EXT_gl_colorspace_bt2020_linear")) + << "EGL_EXT_gl_colorspace_bt2020_linear extension not available"; + + ASSERT_NO_FATAL_FAILURE(get8BitConfig(config)); + + struct DummyConsumer : public BnConsumerListener { + void onFrameAvailable(const BufferItem& /* item */) override {} + void onBuffersReleased() override {} + void onSidebandStreamChanged() override {} + }; + + // Create a EGLSurface + sp producer; + sp consumer; + BufferQueue::createBufferQueue(&producer, &consumer); + consumer->consumerConnect(new DummyConsumer, false); + sp mSTC = new Surface(producer); + sp mANW = mSTC; + + std::vector winAttrs; + winAttrs.push_back(EGL_GL_COLORSPACE_KHR); + winAttrs.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); + + ASSERT_NO_FATAL_FAILURE(addOptionalWindowMetadata(winAttrs)); + + winAttrs.push_back(EGL_NONE); + + EGLSurface eglSurface = eglCreateWindowSurface(mEglDisplay, config, mANW.get(), winAttrs.data()); + ASSERT_EQ(EGL_SUCCESS, eglGetError()); + ASSERT_NE(EGL_NO_SURFACE, eglSurface); + + EGLint value; + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_GL_COLORSPACE_KHR, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(EGL_GL_COLORSPACE_BT2020_PQ_EXT, value); + + ASSERT_NO_FATAL_FAILURE(checkOptionalWindowMetadata(eglSurface)); + + EXPECT_TRUE(eglDestroySurface(mEglDisplay, eglSurface)); +} + +TEST_F(EGLTest, EGLBT2020PQ) { + EGLConfig config; + EGLBoolean success; + + if (!hasHdrDisplay) { + // skip this test if device does not have HDR display + RecordProperty("hasHdrDisplay", false); + return; + } + + // Test that bt2020-pq extension exists + ASSERT_TRUE(hasEglExtension(mEglDisplay, "EGL_EXT_gl_colorspace_bt2020_pq")) + << "EGL_EXT_gl_colorspace_bt2020_pq extension not available"; + + ASSERT_NO_FATAL_FAILURE(get8BitConfig(config)); + + struct DummyConsumer : public BnConsumerListener { + void onFrameAvailable(const BufferItem& /* item */) override {} + void onBuffersReleased() override {} + void onSidebandStreamChanged() override {} + }; + + // Create a EGLSurface + sp producer; + sp consumer; + BufferQueue::createBufferQueue(&producer, &consumer); + consumer->consumerConnect(new DummyConsumer, false); + sp mSTC = new Surface(producer); + sp mANW = mSTC; + std::vector winAttrs; + winAttrs.push_back(EGL_GL_COLORSPACE_KHR); + winAttrs.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); + + ASSERT_NO_FATAL_FAILURE(addOptionalWindowMetadata(winAttrs)); + + winAttrs.push_back(EGL_NONE); + + EGLSurface eglSurface = eglCreateWindowSurface(mEglDisplay, config, mANW.get(), winAttrs.data()); + ASSERT_EQ(EGL_SUCCESS, eglGetError()); + ASSERT_NE(EGL_NO_SURFACE, eglSurface); + + EGLint value; + success = eglQuerySurface(mEglDisplay, eglSurface, EGL_GL_COLORSPACE_KHR, &value); + ASSERT_EQ(EGL_UNSIGNED_TRUE, success); + ASSERT_EQ(EGL_GL_COLORSPACE_BT2020_PQ_EXT, value); + + ASSERT_NO_FATAL_FAILURE(checkOptionalWindowMetadata(eglSurface)); + + EXPECT_TRUE(eglDestroySurface(mEglDisplay, eglSurface)); +} + TEST_F(EGLTest, EGLConfigFP16) { EGLint numConfigs; EGLConfig config; @@ -372,13 +640,13 @@ TEST_F(EGLTest, EGLConfigFP16) { if (!hasWideColorDisplay) { // skip this test if device does not have wide-color display - std::cerr << "[ ] Device does not support wide-color, test skipped" << std::endl; + RecordProperty("hasWideColorDisplay", false); return; } ASSERT_TRUE(hasEglExtension(mEglDisplay, "EGL_EXT_pixel_format_float")); - EGLint attrs[] = { + const EGLint attrs[] = { // clang-format off EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, @@ -387,7 +655,7 @@ TEST_F(EGLTest, EGLConfigFP16) { EGL_BLUE_SIZE, 16, EGL_ALPHA_SIZE, 16, EGL_COLOR_COMPONENT_TYPE_EXT, EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT, - EGL_NONE, EGL_NONE + EGL_NONE, // clang-format on }; success = eglChooseConfig(mEglDisplay, attrs, &config, 1, &numConfigs); @@ -437,7 +705,7 @@ TEST_F(EGLTest, EGLConfigFP16) { TEST_F(EGLTest, EGLNoConfigContext) { if (!hasWideColorDisplay) { // skip this test if device does not have wide-color display - std::cerr << "[ ] Device does not support wide-color, test skipped" << std::endl; + RecordProperty("hasWideColorDisplay", false); return; } @@ -475,11 +743,11 @@ TEST_F(EGLTest, EGLConfig1010102) { if (!hasWideColorDisplay) { // skip this test if device does not have wide-color display - std::cerr << "[ ] Device does not support wide-color, test skipped" << std::endl; + RecordProperty("hasWideColorDisplay", false); return; } - EGLint attrs[] = { + const EGLint attrs[] = { // clang-format off EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, -- cgit v1.2.3-59-g8ed1b From 52de2fdaf23e17ca73cf1dd09ee5ebd31245966b Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Thu, 1 Feb 2018 09:51:58 -0700 Subject: EGL: Properly strip out unknown attributes Introduced a bug when adding SMPTE support. EGL wrapper needs to strip out color space extension information that the driver doesn't recognize to prevent calls into the driver from failing. e.g. EGL_GL_COLORSPACE_DISPLAY_P3_EXT or SMPTE extension attributes such as EGL_SMPTE2086_WHITE_POINT_X_EXT. Test: adb -d shell am start -n \ com.drawelements.deqp/android.app.NativeActivity \ -e cmdLine '"deqp --deqp-case=dEQP-EGL.functional.hdr_color.* \ --deqp-log-filename=/sdcard/dEQP-Log.qpa"' Bug: b/72705818, b/72753050 Change-Id: I7a4bb9579da04783952aaf49d96f9d67460390db --- opengl/libs/EGL/eglApi.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 484e0baffc..26ae13da25 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -513,11 +513,11 @@ static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, found = true; } } - if (found && dp->haveExtension("EGL_KHR_gl_colorspace")) { - stripped = true; - } else { + if (found || !dp->haveExtension("EGL_KHR_gl_colorspace")) { stripped_attrib_list.push_back(attr[0]); stripped_attrib_list.push_back(attr[1]); + } else { + stripped = true; } } break; -- cgit v1.2.3-59-g8ed1b From 786ab8840b5726362c777496686106df27160cfb Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Fri, 26 Jan 2018 13:37:33 -0800 Subject: Add hdr attributes to setSurfaceAttr Keep original copies of hdr metadata to return to the user if requested. Scale integer values prior to sending to system. Test: --deqp-case=dEQP-EGL.functional.hdr_color.* Bug: 72491459, 72828483 Change-Id: I86ed35cf96d740ac230cc10acde322acbeffe847 --- opengl/libs/EGL/eglApi.cpp | 16 +++++--- opengl/libs/EGL/egl_object.cpp | 77 +++++++++++++++++++++++------------- opengl/libs/EGL/egl_object.h | 27 +++++++++++-- opengl/tests/EGLTest/EGL_test.cpp | 82 +++++++++++++-------------------------- 4 files changed, 110 insertions(+), 92 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 26ae13da25..b00602c909 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -479,8 +479,8 @@ static android_dataspace modifyBufferDataspace(android_dataspace dataSpace, // Return true if we stripped any EGL_GL_COLORSPACE_KHR or HDR metadata attributes. // Protect devices from attributes they don't recognize that are managed by Android static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, - EGLint format, - std::vector& stripped_attrib_list) { + EGLint format, + std::vector& stripped_attrib_list) { std::vector allowedColorSpaces; switch (format) { case HAL_PIXEL_FORMAT_RGBA_8888: @@ -712,7 +712,8 @@ EGLBoolean setSurfaceMetadata(egl_surface_t* s, NativeWindowType window, cta8613 |= s->setCta8613Attribute(attr[0], attr[1]); } if (smpte2086) { - int err = native_window_set_buffers_smpte2086_metadata(window, s->getSmpte2086Metadata()); + android_smpte2086_metadata metadata = s->getSmpte2086Metadata(); + int err = native_window_set_buffers_smpte2086_metadata(window, &metadata); if (err != 0) { ALOGE("error setting native window smpte2086 metadata: %s (%d)", strerror(-err), err); @@ -721,7 +722,8 @@ EGLBoolean setSurfaceMetadata(egl_surface_t* s, NativeWindowType window, } } if (cta8613) { - int err = native_window_set_buffers_cta861_3_metadata(window, s->getCta8613Metadata()); + android_cta861_3_metadata metadata = s->getCta8613Metadata(); + int err = native_window_set_buffers_cta861_3_metadata(window, &metadata); if (err != 0) { ALOGE("error setting native window CTS 861.3 metadata: %s (%d)", strerror(-err), err); @@ -1578,7 +1580,11 @@ EGLBoolean eglSurfaceAttrib( return (err == 0) ? EGL_TRUE : setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); } - if (s->cnx->egl.eglSurfaceAttrib) { + if (s->setSmpte2086Attribute(attribute, value)) { + return EGL_TRUE; + } else if (s->setCta8613Attribute(attribute, value)) { + return EGL_TRUE; + } else if (s->cnx->egl.eglSurfaceAttrib) { return s->cnx->egl.eglSurfaceAttrib( dp->disp.dpy, s->surface, attribute, value); } diff --git a/opengl/libs/EGL/egl_object.cpp b/opengl/libs/EGL/egl_object.cpp index 13b94b6361..b68fd61c11 100644 --- a/opengl/libs/EGL/egl_object.cpp +++ b/opengl/libs/EGL/egl_object.cpp @@ -64,8 +64,8 @@ egl_surface_t::egl_surface_t(egl_display_t* dpy, EGLConfig config, EGLNativeWind cnx(cnx), connected(true), colorSpace(colorSpace), - smpte2086_metadata({}), - cta861_3_metadata({}) { + egl_smpte2086_metadata({}), + egl_cta861_3_metadata({}) { if (win) { win->incStrong(this); } @@ -90,36 +90,35 @@ void egl_surface_t::disconnect() { EGLBoolean egl_surface_t::setSmpte2086Attribute(EGLint attribute, EGLint value) { switch (attribute) { - break; case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: - smpte2086_metadata.displayPrimaryRed.x = value; + egl_smpte2086_metadata.displayPrimaryRed.x = value; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: - smpte2086_metadata.displayPrimaryRed.y = value; + egl_smpte2086_metadata.displayPrimaryRed.y = value; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: - smpte2086_metadata.displayPrimaryGreen.x = value; + egl_smpte2086_metadata.displayPrimaryGreen.x = value; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: - smpte2086_metadata.displayPrimaryGreen.y = value; + egl_smpte2086_metadata.displayPrimaryGreen.y = value; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: - smpte2086_metadata.displayPrimaryBlue.x = value; + egl_smpte2086_metadata.displayPrimaryBlue.x = value; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: - smpte2086_metadata.displayPrimaryBlue.y = value; + egl_smpte2086_metadata.displayPrimaryBlue.y = value; return EGL_TRUE; case EGL_SMPTE2086_WHITE_POINT_X_EXT: - smpte2086_metadata.whitePoint.x = value; + egl_smpte2086_metadata.whitePoint.x = value; return EGL_TRUE; case EGL_SMPTE2086_WHITE_POINT_Y_EXT: - smpte2086_metadata.whitePoint.y = value; + egl_smpte2086_metadata.whitePoint.y = value; return EGL_TRUE; case EGL_SMPTE2086_MAX_LUMINANCE_EXT: - smpte2086_metadata.maxLuminance = value; + egl_smpte2086_metadata.maxLuminance = value; return EGL_TRUE; case EGL_SMPTE2086_MIN_LUMINANCE_EXT: - smpte2086_metadata.minLuminance = value; + egl_smpte2086_metadata.minLuminance = value; return EGL_TRUE; } return EGL_FALSE; @@ -128,15 +127,39 @@ EGLBoolean egl_surface_t::setSmpte2086Attribute(EGLint attribute, EGLint value) EGLBoolean egl_surface_t::setCta8613Attribute(EGLint attribute, EGLint value) { switch (attribute) { case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: - cta861_3_metadata.maxContentLightLevel = value; + egl_cta861_3_metadata.maxContentLightLevel = value; return EGL_TRUE; case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: - cta861_3_metadata.maxFrameAverageLightLevel = value; + egl_cta861_3_metadata.maxFrameAverageLightLevel = value; return EGL_TRUE; } return EGL_FALSE; } +const android_smpte2086_metadata egl_surface_t::getSmpte2086Metadata() { + android_smpte2086_metadata metadata; + metadata.displayPrimaryRed.x = static_cast(egl_smpte2086_metadata.displayPrimaryRed.x) / EGL_METADATA_SCALING_EXT; + metadata.displayPrimaryRed.y = static_cast(egl_smpte2086_metadata.displayPrimaryRed.y) / EGL_METADATA_SCALING_EXT; + metadata.displayPrimaryGreen.x = static_cast(egl_smpte2086_metadata.displayPrimaryGreen.x) / EGL_METADATA_SCALING_EXT; + metadata.displayPrimaryGreen.y = static_cast(egl_smpte2086_metadata.displayPrimaryGreen.y) / EGL_METADATA_SCALING_EXT; + metadata.displayPrimaryBlue.x = static_cast(egl_smpte2086_metadata.displayPrimaryBlue.x) / EGL_METADATA_SCALING_EXT; + metadata.displayPrimaryBlue.y = static_cast(egl_smpte2086_metadata.displayPrimaryBlue.y) / EGL_METADATA_SCALING_EXT; + metadata.whitePoint.x = static_cast(egl_smpte2086_metadata.whitePoint.x) / EGL_METADATA_SCALING_EXT; + metadata.whitePoint.y = static_cast(egl_smpte2086_metadata.whitePoint.y) / EGL_METADATA_SCALING_EXT; + metadata.maxLuminance = static_cast(egl_smpte2086_metadata.maxLuminance) / EGL_METADATA_SCALING_EXT; + metadata.minLuminance = static_cast(egl_smpte2086_metadata.minLuminance) / EGL_METADATA_SCALING_EXT; + + return metadata; +} + +const android_cta861_3_metadata egl_surface_t::getCta8613Metadata() { + android_cta861_3_metadata metadata; + metadata.maxContentLightLevel = static_cast(egl_cta861_3_metadata.maxContentLightLevel) / EGL_METADATA_SCALING_EXT; + metadata.maxFrameAverageLightLevel = static_cast(egl_cta861_3_metadata.maxFrameAverageLightLevel) / EGL_METADATA_SCALING_EXT; + return metadata; +} + + EGLBoolean egl_surface_t::getColorSpaceAttribute(EGLint attribute, EGLint* value) const { if (attribute == EGL_GL_COLORSPACE_KHR) { *value = colorSpace; @@ -148,43 +171,43 @@ EGLBoolean egl_surface_t::getColorSpaceAttribute(EGLint attribute, EGLint* value EGLBoolean egl_surface_t::getSmpte2086Attribute(EGLint attribute, EGLint *value) const { switch (attribute) { case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryRed.x); + *value = egl_smpte2086_metadata.displayPrimaryRed.x; return EGL_TRUE; break; case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryRed.y); + *value = egl_smpte2086_metadata.displayPrimaryRed.y; return EGL_TRUE; break; case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryGreen.x); + *value = egl_smpte2086_metadata.displayPrimaryGreen.x; return EGL_TRUE; break; case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryGreen.y); + *value = egl_smpte2086_metadata.displayPrimaryGreen.y; return EGL_TRUE; break; case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryBlue.x); + *value = egl_smpte2086_metadata.displayPrimaryBlue.x; return EGL_TRUE; break; case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.displayPrimaryBlue.y); + *value = egl_smpte2086_metadata.displayPrimaryBlue.y; return EGL_TRUE; break; case EGL_SMPTE2086_WHITE_POINT_X_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.whitePoint.x); + *value = egl_smpte2086_metadata.whitePoint.x; return EGL_TRUE; break; case EGL_SMPTE2086_WHITE_POINT_Y_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.whitePoint.y); + *value = egl_smpte2086_metadata.whitePoint.y; return EGL_TRUE; break; case EGL_SMPTE2086_MAX_LUMINANCE_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.maxLuminance); + *value = egl_smpte2086_metadata.maxLuminance; return EGL_TRUE; break; case EGL_SMPTE2086_MIN_LUMINANCE_EXT: - *value = *reinterpret_cast(&smpte2086_metadata.minLuminance); + *value = egl_smpte2086_metadata.minLuminance; return EGL_TRUE; break; } @@ -194,11 +217,11 @@ EGLBoolean egl_surface_t::getSmpte2086Attribute(EGLint attribute, EGLint *value) EGLBoolean egl_surface_t::getCta8613Attribute(EGLint attribute, EGLint *value) const { switch (attribute) { case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: - *value = *reinterpret_cast(&cta861_3_metadata.maxContentLightLevel); + *value = egl_cta861_3_metadata.maxContentLightLevel; return EGL_TRUE; break; case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: - *value = *reinterpret_cast(&cta861_3_metadata.maxFrameAverageLightLevel); + *value = egl_cta861_3_metadata.maxFrameAverageLightLevel; return EGL_TRUE; break; } diff --git a/opengl/libs/EGL/egl_object.h b/opengl/libs/EGL/egl_object.h index a9020a17ee..bda91bb280 100644 --- a/opengl/libs/EGL/egl_object.h +++ b/opengl/libs/EGL/egl_object.h @@ -142,8 +142,8 @@ public: EGLBoolean getColorSpaceAttribute(EGLint attribute, EGLint* value) const; EGLBoolean getSmpte2086Attribute(EGLint attribute, EGLint* value) const; EGLBoolean getCta8613Attribute(EGLint attribute, EGLint* value) const; - const android_smpte2086_metadata* getSmpte2086Metadata() const { return &smpte2086_metadata; } - const android_cta861_3_metadata* getCta8613Metadata() const { return &cta861_3_metadata; } + const android_smpte2086_metadata getSmpte2086Metadata(); + const android_cta861_3_metadata getCta8613Metadata(); // Try to keep the order of these fields and size unchanged. It's not public API, but // it's not hard to imagine native games accessing them. @@ -157,8 +157,27 @@ private: bool connected; void disconnect(); EGLint colorSpace; - android_smpte2086_metadata smpte2086_metadata; - android_cta861_3_metadata cta861_3_metadata; + + struct egl_xy_color { + EGLint x; + EGLint y; + }; + + struct egl_smpte2086_metadata { + struct egl_xy_color displayPrimaryRed; + struct egl_xy_color displayPrimaryGreen; + struct egl_xy_color displayPrimaryBlue; + struct egl_xy_color whitePoint; + EGLint maxLuminance; + EGLint minLuminance; + }; + + struct egl_cta861_3_metadata { + EGLint maxContentLightLevel; + EGLint maxFrameAverageLightLevel; + }; + egl_smpte2086_metadata egl_smpte2086_metadata; + egl_cta861_3_metadata egl_cta861_3_metadata; }; class egl_context_t: public egl_object_t { diff --git a/opengl/tests/EGLTest/EGL_test.cpp b/opengl/tests/EGLTest/EGL_test.cpp index 8bb74a2b29..9ffe036abe 100644 --- a/opengl/tests/EGLTest/EGL_test.cpp +++ b/opengl/tests/EGLTest/EGL_test.cpp @@ -50,17 +50,14 @@ namespace android { using namespace android::hardware::configstore; using namespace android::hardware::configstore::V1_0; +#define METADATA_SCALE(x) (static_cast(x * EGL_METADATA_SCALING_EXT)) + static bool hasWideColorDisplay = getBool(false); static bool hasHdrDisplay = getBool(false); -union FlexAttribute { - EGLint uint_value; - float float_value; -}; - class EGLTest : public ::testing::Test { public: void get8BitConfig(EGLConfig& config); @@ -425,108 +422,81 @@ void EGLTest::get8BitConfig(EGLConfig& config) { } void EGLTest::addOptionalWindowMetadata(std::vector& attrs) { - FlexAttribute data; if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_SMPTE2086_metadata")) { attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT); - data.float_value = 0.640; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.640)); attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT); - data.float_value = 0.330; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.330)); attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT); - data.float_value = 0.290; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.290)); attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT); - data.float_value = 0.600; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.600)); attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT); - data.float_value = 0.150; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.150)); attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT); - data.float_value = 0.060; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.060)); attrs.push_back(EGL_SMPTE2086_WHITE_POINT_X_EXT); - data.float_value = 0.3127; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.3127)); attrs.push_back(EGL_SMPTE2086_WHITE_POINT_Y_EXT); - data.float_value = 0.3290; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.3290)); attrs.push_back(EGL_SMPTE2086_MAX_LUMINANCE_EXT); - data.float_value = 300.0; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(300)); attrs.push_back(EGL_SMPTE2086_MIN_LUMINANCE_EXT); - data.float_value = 0.7; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(0.7)); } if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_CTA861_3_metadata")) { attrs.push_back(EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT); - data.float_value = 300.0; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(300)); attrs.push_back(EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT); - data.float_value = 75.0; - attrs.push_back(data.uint_value); + attrs.push_back(METADATA_SCALE(75)); } } void EGLTest::checkOptionalWindowMetadata(EGLSurface eglSurface) { EGLBoolean success; EGLint value; - FlexAttribute expected; if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_SMPTE2086_metadata")) { success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.640; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.640), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.330; - ASSERT_EQ(expected.uint_value, value); - ASSERT_EQ(0, value); + ASSERT_EQ(METADATA_SCALE(0.330), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.290; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.290), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.600; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.600), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.150; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.150), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.060; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.060), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_WHITE_POINT_X_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.3127; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.3127), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_WHITE_POINT_Y_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.3290; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.3290), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 300.0; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(300.0), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_SMPTE2086_MIN_LUMINANCE_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 0.7; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(0.7), value); } if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_CTA861_3_metadata")) { success = eglQuerySurface(mEglDisplay, eglSurface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 300.0; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(300.0), value); success = eglQuerySurface(mEglDisplay, eglSurface, EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT, &value); ASSERT_EQ(EGL_UNSIGNED_TRUE, success); - expected.float_value = 75.0; - ASSERT_EQ(expected.uint_value, value); + ASSERT_EQ(METADATA_SCALE(75.0), value); } } -- cgit v1.2.3-59-g8ed1b From b1d70ecc36dd928269066e9cf65e1080c00dc56c Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Thu, 8 Feb 2018 18:09:33 -0700 Subject: Remove colorspace attribute processing on Stream The colorspace extensions do not cover the EGL_KHR_stream_attrib functions. Test: compile Change-Id: I44babbea3cb6502e8e670b37eca0ee001a2670db --- opengl/libs/EGL/eglApi.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index b00602c909..46e7a97e2c 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -2006,22 +2006,13 @@ EGLSurface eglCreateStreamProducerSurfaceKHR(EGLDisplay dpy, EGLConfig config, egl_display_ptr dp = validate_display(dpy); if (!dp) return EGL_NO_SURFACE; - EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; - android_dataspace dataSpace = HAL_DATASPACE_UNKNOWN; - // TODO: Probably need to update EGL_KHR_stream_producer_eglsurface to - // indicate support for EGL_GL_COLORSPACE_KHR. - // now select a corresponding sRGB format if needed - if (!getColorSpaceAttribute(dp, attrib_list, colorSpace, dataSpace)) { - ALOGE("error invalid colorspace: %d", colorSpace); - return setError(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); - } - egl_connection_t* const cnx = &gEGLImpl; if (cnx->dso && cnx->egl.eglCreateStreamProducerSurfaceKHR) { EGLSurface surface = cnx->egl.eglCreateStreamProducerSurfaceKHR( dp->disp.dpy, config, stream, attrib_list); if (surface != EGL_NO_SURFACE) { - egl_surface_t* s = new egl_surface_t(dp.get(), config, NULL, surface, colorSpace, cnx); + egl_surface_t* s = new egl_surface_t(dp.get(), config, NULL, surface, + EGL_GL_COLORSPACE_LINEAR_KHR, cnx); return s; } } -- cgit v1.2.3-59-g8ed1b From 936799c1d4bb80f5595153ef9efddbef4983526b Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Fri, 2 Mar 2018 16:47:08 -0700 Subject: EGL: Plumb HDR metadata HDR metadata comes in bit by bit via eglSurfaceAttribute. Don't want to call native_window_set_buffers_smpte2086_metadata for every piece, instead wait until eglSwapBuffers and call native_window_set_buffers_smpte2086_metadata then. Does require changing the state of the surface, so some const goes away. Bug: 63710530 Test: adb -d shell am start -n \ com.drawelements.deqp/android.app.NativeActivity \ -e cmdLine '"deqp --deqp-case=dEQP-EGL.functional.hdr_metadata.* \ --deqp-log-filename=/sdcard/dEQP-Log.qpa"' Test: adb shell /data/nativetest/test-opengl-gl2_basic/test-opengl-gl2_basic Test: adb shell /data/nativetest/test-opengl-gl_basic/test-opengl-gl_basic Change-Id: I2e428ec18737f6caa8c0e1893705b7796fd77272 --- opengl/libs/EGL/eglApi.cpp | 37 +++++++++---------- opengl/libs/EGL/egl_object.cpp | 59 +++++++++++++++++++++++++----- opengl/libs/EGL/egl_object.h | 10 ++++-- opengl/tests/EGLTest/EGL_test.cpp | 69 ++++++++++++++++++------------------ opengl/tests/gl2_basic/gl2_basic.cpp | 41 +++++++++++++++++++-- opengl/tests/gl_basic/gl_basic.cpp | 36 +++++++++++++++++++ 6 files changed, 185 insertions(+), 67 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 46e7a97e2c..d9be9dbc67 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -700,34 +700,26 @@ void getNativePixelFormat(EGLDisplay dpy, egl_connection_t* cnx, EGLConfig confi } } -EGLBoolean setSurfaceMetadata(egl_surface_t* s, NativeWindowType window, - const EGLint *attrib_list) { - // set any HDR metadata - bool smpte2086 = false; - bool cta8613 = false; - if (attrib_list == nullptr) return EGL_TRUE; - - for (const EGLint* attr = attrib_list; attr[0] != EGL_NONE; attr += 2) { - smpte2086 |= s->setSmpte2086Attribute(attr[0], attr[1]); - cta8613 |= s->setCta8613Attribute(attr[0], attr[1]); - } - if (smpte2086) { - android_smpte2086_metadata metadata = s->getSmpte2086Metadata(); - int err = native_window_set_buffers_smpte2086_metadata(window, &metadata); +EGLBoolean sendSurfaceMetadata(egl_surface_t* s) { + android_smpte2086_metadata smpteMetadata; + if (s->getSmpte2086Metadata(smpteMetadata)) { + int err = + native_window_set_buffers_smpte2086_metadata(s->getNativeWindow(), &smpteMetadata); + s->resetSmpte2086Metadata(); if (err != 0) { ALOGE("error setting native window smpte2086 metadata: %s (%d)", strerror(-err), err); - native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL); return EGL_FALSE; } } - if (cta8613) { - android_cta861_3_metadata metadata = s->getCta8613Metadata(); - int err = native_window_set_buffers_cta861_3_metadata(window, &metadata); + android_cta861_3_metadata cta8613Metadata; + if (s->getCta8613Metadata(cta8613Metadata)) { + int err = + native_window_set_buffers_cta861_3_metadata(s->getNativeWindow(), &cta8613Metadata); + s->resetCta8613Metadata(); if (err != 0) { ALOGE("error setting native window CTS 861.3 metadata: %s (%d)", strerror(-err), err); - native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL); return EGL_FALSE; } } @@ -1424,7 +1416,7 @@ EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface draw, if (!_s.get()) return setError(EGL_BAD_SURFACE, (EGLBoolean)EGL_FALSE); - egl_surface_t const * const s = get_surface(draw); + egl_surface_t* const s = get_surface(draw); if (CC_UNLIKELY(dp->traceGpuCompletion)) { EGLSyncKHR sync = eglCreateSyncKHR(dpy, EGL_SYNC_FENCE_KHR, NULL); @@ -1443,6 +1435,11 @@ EGLBoolean eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface draw, } } + if (!sendSurfaceMetadata(s)) { + native_window_api_disconnect(s->getNativeWindow(), NATIVE_WINDOW_API_EGL); + return setError(EGL_BAD_NATIVE_WINDOW, (EGLBoolean)EGL_FALSE); + } + if (n_rects == 0) { return s->cnx->egl.eglSwapBuffers(dp->disp.dpy, s->surface); } diff --git a/opengl/libs/EGL/egl_object.cpp b/opengl/libs/EGL/egl_object.cpp index b68fd61c11..f879254f76 100644 --- a/opengl/libs/EGL/egl_object.cpp +++ b/opengl/libs/EGL/egl_object.cpp @@ -64,8 +64,17 @@ egl_surface_t::egl_surface_t(egl_display_t* dpy, EGLConfig config, EGLNativeWind cnx(cnx), connected(true), colorSpace(colorSpace), - egl_smpte2086_metadata({}), - egl_cta861_3_metadata({}) { + egl_smpte2086_dirty(false), + egl_cta861_3_dirty(false) { + egl_smpte2086_metadata.displayPrimaryRed = { EGL_DONT_CARE, EGL_DONT_CARE }; + egl_smpte2086_metadata.displayPrimaryGreen = { EGL_DONT_CARE, EGL_DONT_CARE }; + egl_smpte2086_metadata.displayPrimaryBlue = { EGL_DONT_CARE, EGL_DONT_CARE }; + egl_smpte2086_metadata.whitePoint = { EGL_DONT_CARE, EGL_DONT_CARE }; + egl_smpte2086_metadata.maxLuminance = EGL_DONT_CARE; + egl_smpte2086_metadata.minLuminance = EGL_DONT_CARE; + egl_cta861_3_metadata.maxFrameAverageLightLevel = EGL_DONT_CARE; + egl_cta861_3_metadata.maxContentLightLevel = EGL_DONT_CARE; + if (win) { win->incStrong(this); } @@ -92,33 +101,43 @@ EGLBoolean egl_surface_t::setSmpte2086Attribute(EGLint attribute, EGLint value) switch (attribute) { case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: egl_smpte2086_metadata.displayPrimaryRed.x = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: egl_smpte2086_metadata.displayPrimaryRed.y = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: egl_smpte2086_metadata.displayPrimaryGreen.x = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: egl_smpte2086_metadata.displayPrimaryGreen.y = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: egl_smpte2086_metadata.displayPrimaryBlue.x = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: egl_smpte2086_metadata.displayPrimaryBlue.y = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_WHITE_POINT_X_EXT: egl_smpte2086_metadata.whitePoint.x = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_WHITE_POINT_Y_EXT: egl_smpte2086_metadata.whitePoint.y = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_MAX_LUMINANCE_EXT: egl_smpte2086_metadata.maxLuminance = value; + egl_smpte2086_dirty = true; return EGL_TRUE; case EGL_SMPTE2086_MIN_LUMINANCE_EXT: egl_smpte2086_metadata.minLuminance = value; + egl_smpte2086_dirty = true; return EGL_TRUE; } return EGL_FALSE; @@ -128,16 +147,32 @@ EGLBoolean egl_surface_t::setCta8613Attribute(EGLint attribute, EGLint value) { switch (attribute) { case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: egl_cta861_3_metadata.maxContentLightLevel = value; + egl_cta861_3_dirty = true; return EGL_TRUE; case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: egl_cta861_3_metadata.maxFrameAverageLightLevel = value; + egl_cta861_3_dirty = true; return EGL_TRUE; } return EGL_FALSE; } -const android_smpte2086_metadata egl_surface_t::getSmpte2086Metadata() { - android_smpte2086_metadata metadata; +EGLBoolean egl_surface_t::getSmpte2086Metadata(android_smpte2086_metadata& metadata) const { + if (!egl_smpte2086_dirty) return EGL_FALSE; + if (egl_smpte2086_metadata.displayPrimaryRed.x == EGL_DONT_CARE || + egl_smpte2086_metadata.displayPrimaryRed.y == EGL_DONT_CARE || + egl_smpte2086_metadata.displayPrimaryGreen.x == EGL_DONT_CARE || + egl_smpte2086_metadata.displayPrimaryGreen.y == EGL_DONT_CARE || + egl_smpte2086_metadata.displayPrimaryBlue.x == EGL_DONT_CARE || + egl_smpte2086_metadata.displayPrimaryBlue.y == EGL_DONT_CARE || + egl_smpte2086_metadata.whitePoint.x == EGL_DONT_CARE || + egl_smpte2086_metadata.whitePoint.y == EGL_DONT_CARE || + egl_smpte2086_metadata.maxLuminance == EGL_DONT_CARE || + egl_smpte2086_metadata.minLuminance == EGL_DONT_CARE) { + ALOGW("egl_surface_t: incomplete SMPTE 2086 metadata!"); + return EGL_FALSE; + } + metadata.displayPrimaryRed.x = static_cast(egl_smpte2086_metadata.displayPrimaryRed.x) / EGL_METADATA_SCALING_EXT; metadata.displayPrimaryRed.y = static_cast(egl_smpte2086_metadata.displayPrimaryRed.y) / EGL_METADATA_SCALING_EXT; metadata.displayPrimaryGreen.x = static_cast(egl_smpte2086_metadata.displayPrimaryGreen.x) / EGL_METADATA_SCALING_EXT; @@ -149,14 +184,22 @@ const android_smpte2086_metadata egl_surface_t::getSmpte2086Metadata() { metadata.maxLuminance = static_cast(egl_smpte2086_metadata.maxLuminance) / EGL_METADATA_SCALING_EXT; metadata.minLuminance = static_cast(egl_smpte2086_metadata.minLuminance) / EGL_METADATA_SCALING_EXT; - return metadata; + return EGL_TRUE; } -const android_cta861_3_metadata egl_surface_t::getCta8613Metadata() { - android_cta861_3_metadata metadata; +EGLBoolean egl_surface_t::getCta8613Metadata(android_cta861_3_metadata& metadata) const { + if (!egl_cta861_3_dirty) return EGL_FALSE; + + if (egl_cta861_3_metadata.maxContentLightLevel == EGL_DONT_CARE || + egl_cta861_3_metadata.maxFrameAverageLightLevel == EGL_DONT_CARE) { + ALOGW("egl_surface_t: incomplete CTA861.3 metadata!"); + return EGL_FALSE; + } + metadata.maxContentLightLevel = static_cast(egl_cta861_3_metadata.maxContentLightLevel) / EGL_METADATA_SCALING_EXT; metadata.maxFrameAverageLightLevel = static_cast(egl_cta861_3_metadata.maxFrameAverageLightLevel) / EGL_METADATA_SCALING_EXT; - return metadata; + + return EGL_TRUE; } diff --git a/opengl/libs/EGL/egl_object.h b/opengl/libs/EGL/egl_object.h index bda91bb280..4e1de5cec4 100644 --- a/opengl/libs/EGL/egl_object.h +++ b/opengl/libs/EGL/egl_object.h @@ -142,8 +142,10 @@ public: EGLBoolean getColorSpaceAttribute(EGLint attribute, EGLint* value) const; EGLBoolean getSmpte2086Attribute(EGLint attribute, EGLint* value) const; EGLBoolean getCta8613Attribute(EGLint attribute, EGLint* value) const; - const android_smpte2086_metadata getSmpte2086Metadata(); - const android_cta861_3_metadata getCta8613Metadata(); + EGLBoolean getSmpte2086Metadata(android_smpte2086_metadata& smpte2086) const; + EGLBoolean getCta8613Metadata(android_cta861_3_metadata& cta861_3) const; + void resetSmpte2086Metadata() { egl_smpte2086_dirty = false; } + void resetCta8613Metadata() { egl_cta861_3_dirty = false; } // Try to keep the order of these fields and size unchanged. It's not public API, but // it's not hard to imagine native games accessing them. @@ -176,6 +178,10 @@ private: EGLint maxContentLightLevel; EGLint maxFrameAverageLightLevel; }; + + bool egl_smpte2086_dirty; + bool egl_cta861_3_dirty; + egl_smpte2086_metadata egl_smpte2086_metadata; egl_cta861_3_metadata egl_cta861_3_metadata; }; diff --git a/opengl/tests/EGLTest/EGL_test.cpp b/opengl/tests/EGLTest/EGL_test.cpp index 9ffe036abe..5927dc14e8 100644 --- a/opengl/tests/EGLTest/EGL_test.cpp +++ b/opengl/tests/EGLTest/EGL_test.cpp @@ -61,8 +61,8 @@ static bool hasHdrDisplay = class EGLTest : public ::testing::Test { public: void get8BitConfig(EGLConfig& config); - void addOptionalWindowMetadata(std::vector& attrs); - void checkOptionalWindowMetadata(EGLSurface eglSurface); + void setSurfaceSmpteMetadata(EGLSurface surface); + void checkSurfaceSmpteMetadata(EGLSurface eglSurface); protected: EGLDisplay mEglDisplay; @@ -421,39 +421,39 @@ void EGLTest::get8BitConfig(EGLConfig& config) { EXPECT_EQ(components[3], 8); } -void EGLTest::addOptionalWindowMetadata(std::vector& attrs) { +void EGLTest::setSurfaceSmpteMetadata(EGLSurface surface) { if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_SMPTE2086_metadata")) { - attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT); - attrs.push_back(METADATA_SCALE(0.640)); - attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT); - attrs.push_back(METADATA_SCALE(0.330)); - attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT); - attrs.push_back(METADATA_SCALE(0.290)); - attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT); - attrs.push_back(METADATA_SCALE(0.600)); - attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT); - attrs.push_back(METADATA_SCALE(0.150)); - attrs.push_back(EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT); - attrs.push_back(METADATA_SCALE(0.060)); - attrs.push_back(EGL_SMPTE2086_WHITE_POINT_X_EXT); - attrs.push_back(METADATA_SCALE(0.3127)); - attrs.push_back(EGL_SMPTE2086_WHITE_POINT_Y_EXT); - attrs.push_back(METADATA_SCALE(0.3290)); - attrs.push_back(EGL_SMPTE2086_MAX_LUMINANCE_EXT); - attrs.push_back(METADATA_SCALE(300)); - attrs.push_back(EGL_SMPTE2086_MIN_LUMINANCE_EXT); - attrs.push_back(METADATA_SCALE(0.7)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, + METADATA_SCALE(0.640)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT, + METADATA_SCALE(0.330)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, + METADATA_SCALE(0.290)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, + METADATA_SCALE(0.600)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT, + METADATA_SCALE(0.150)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, + METADATA_SCALE(0.060)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_WHITE_POINT_X_EXT, + METADATA_SCALE(0.3127)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_WHITE_POINT_Y_EXT, + METADATA_SCALE(0.3290)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, + METADATA_SCALE(300)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_SMPTE2086_MIN_LUMINANCE_EXT, + METADATA_SCALE(0.7)); } if (hasEglExtension(mEglDisplay, "EGL_EXT_surface_CTA861_3_metadata")) { - attrs.push_back(EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT); - attrs.push_back(METADATA_SCALE(300)); - attrs.push_back(EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT); - attrs.push_back(METADATA_SCALE(75)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, + METADATA_SCALE(300)); + eglSurfaceAttrib(mEglDisplay, surface, EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT, + METADATA_SCALE(75)); } } -void EGLTest::checkOptionalWindowMetadata(EGLSurface eglSurface) { +void EGLTest::checkSurfaceSmpteMetadata(EGLSurface eglSurface) { EGLBoolean success; EGLint value; @@ -534,8 +534,6 @@ TEST_F(EGLTest, EGLBT2020Linear) { winAttrs.push_back(EGL_GL_COLORSPACE_KHR); winAttrs.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); - ASSERT_NO_FATAL_FAILURE(addOptionalWindowMetadata(winAttrs)); - winAttrs.push_back(EGL_NONE); EGLSurface eglSurface = eglCreateWindowSurface(mEglDisplay, config, mANW.get(), winAttrs.data()); @@ -547,7 +545,9 @@ TEST_F(EGLTest, EGLBT2020Linear) { ASSERT_EQ(EGL_UNSIGNED_TRUE, success); ASSERT_EQ(EGL_GL_COLORSPACE_BT2020_PQ_EXT, value); - ASSERT_NO_FATAL_FAILURE(checkOptionalWindowMetadata(eglSurface)); + ASSERT_NO_FATAL_FAILURE(setSurfaceSmpteMetadata(eglSurface)); + + ASSERT_NO_FATAL_FAILURE(checkSurfaceSmpteMetadata(eglSurface)); EXPECT_TRUE(eglDestroySurface(mEglDisplay, eglSurface)); } @@ -584,9 +584,6 @@ TEST_F(EGLTest, EGLBT2020PQ) { std::vector winAttrs; winAttrs.push_back(EGL_GL_COLORSPACE_KHR); winAttrs.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); - - ASSERT_NO_FATAL_FAILURE(addOptionalWindowMetadata(winAttrs)); - winAttrs.push_back(EGL_NONE); EGLSurface eglSurface = eglCreateWindowSurface(mEglDisplay, config, mANW.get(), winAttrs.data()); @@ -598,7 +595,9 @@ TEST_F(EGLTest, EGLBT2020PQ) { ASSERT_EQ(EGL_UNSIGNED_TRUE, success); ASSERT_EQ(EGL_GL_COLORSPACE_BT2020_PQ_EXT, value); - ASSERT_NO_FATAL_FAILURE(checkOptionalWindowMetadata(eglSurface)); + ASSERT_NO_FATAL_FAILURE(setSurfaceSmpteMetadata(eglSurface)); + + ASSERT_NO_FATAL_FAILURE(checkSurfaceSmpteMetadata(eglSurface)); EXPECT_TRUE(eglDestroySurface(mEglDisplay, eglSurface)); } diff --git a/opengl/tests/gl2_basic/gl2_basic.cpp b/opengl/tests/gl2_basic/gl2_basic.cpp index 13f6fba92e..0bb77f35f9 100644 --- a/opengl/tests/gl2_basic/gl2_basic.cpp +++ b/opengl/tests/gl2_basic/gl2_basic.cpp @@ -32,6 +32,8 @@ using namespace android; extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name); +#define METADATA_SCALE(x) (static_cast(x * EGL_METADATA_SCALING_EXT)) + static void printGLString(const char *name, GLenum s) { // fprintf(stderr, "printGLString %s, %d\n", name, s); const char *v = (const char *) glGetString(s); @@ -265,6 +267,39 @@ int printEGLConfigurations(EGLDisplay dpy) { return true; } +void setSurfaceMetadata(EGLDisplay dpy, EGLSurface surface) { + static EGLBoolean toggle = GL_FALSE; + if (EGLUtils::hasEglExtension(dpy, "EGL_EXT_surface_SMPTE2086_metadata")) { + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, METADATA_SCALE(0.640)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT, METADATA_SCALE(0.330)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, METADATA_SCALE(0.290)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, METADATA_SCALE(0.600)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT, METADATA_SCALE(0.150)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, METADATA_SCALE(0.060)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_WHITE_POINT_X_EXT, METADATA_SCALE(0.3127)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_WHITE_POINT_Y_EXT, METADATA_SCALE(0.3290)); + if (toggle) { + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, METADATA_SCALE(350)); + } else { + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, METADATA_SCALE(300)); + } + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_MIN_LUMINANCE_EXT, METADATA_SCALE(0.7)); + } + + if (EGLUtils::hasEglExtension(dpy, "EGL_EXT_surface_CTA861_3_metadata")) { + if (toggle) { + eglSurfaceAttrib(dpy, surface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, + METADATA_SCALE(300)); + } else { + eglSurfaceAttrib(dpy, surface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, + METADATA_SCALE(325)); + } + eglSurfaceAttrib(dpy, surface, EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT, + METADATA_SCALE(75)); + } + toggle = !toggle; +} + int main(int /*argc*/, char** /*argv*/) { EGLBoolean returnValue; EGLConfig myConfig = {0}; @@ -318,10 +353,11 @@ int main(int /*argc*/, char** /*argv*/) { printf("Chose this configuration:\n"); printEGLConfiguration(dpy, myConfig); - surface = eglCreateWindowSurface(dpy, myConfig, window, NULL); + EGLint winAttribs[] = {EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR, EGL_NONE}; + surface = eglCreateWindowSurface(dpy, myConfig, window, winAttribs); checkEglError("eglCreateWindowSurface"); if (surface == EGL_NO_SURFACE) { - printf("gelCreateWindowSurface failed.\n"); + printf("eglCreateWindowSurface failed.\n"); return 0; } @@ -356,6 +392,7 @@ int main(int /*argc*/, char** /*argv*/) { for (;;) { renderFrame(); + setSurfaceMetadata(dpy, surface); eglSwapBuffers(dpy, surface); checkEglError("eglSwapBuffers"); } diff --git a/opengl/tests/gl_basic/gl_basic.cpp b/opengl/tests/gl_basic/gl_basic.cpp index a675c7c5bd..63d94be6ec 100644 --- a/opengl/tests/gl_basic/gl_basic.cpp +++ b/opengl/tests/gl_basic/gl_basic.cpp @@ -15,6 +15,8 @@ using namespace android; +#define METADATA_SCALE(x) (static_cast(x * EGL_METADATA_SCALING_EXT)) + EGLDisplay eglDisplay; EGLSurface eglSurface; EGLContext eglContext; @@ -330,6 +332,39 @@ void create_texture(void) glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); } +void setSurfaceMetadata(EGLDisplay dpy, EGLSurface surface) { + static EGLBoolean toggle = GL_FALSE; + if (EGLUtils::hasEglExtension(dpy, "EGL_EXT_surface_SMPTE2086_metadata")) { + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT, METADATA_SCALE(0.640)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT, METADATA_SCALE(0.330)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT, METADATA_SCALE(0.290)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT, METADATA_SCALE(0.600)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT, METADATA_SCALE(0.150)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT, METADATA_SCALE(0.060)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_WHITE_POINT_X_EXT, METADATA_SCALE(0.3127)); + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_WHITE_POINT_Y_EXT, METADATA_SCALE(0.3290)); + if (toggle) { + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, METADATA_SCALE(350)); + } else { + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_MAX_LUMINANCE_EXT, METADATA_SCALE(300)); + } + eglSurfaceAttrib(dpy, surface, EGL_SMPTE2086_MIN_LUMINANCE_EXT, METADATA_SCALE(0.7)); + } + + if (EGLUtils::hasEglExtension(dpy, "EGL_EXT_surface_CTA861_3_metadata")) { + if (toggle) { + eglSurfaceAttrib(dpy, surface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, + METADATA_SCALE(300)); + } else { + eglSurfaceAttrib(dpy, surface, EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT, + METADATA_SCALE(325)); + } + eglSurfaceAttrib(dpy, surface, EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT, + METADATA_SCALE(75)); + } + toggle = !toggle; +} + void render() { const GLfloat vertices[] = { @@ -354,5 +389,6 @@ void render() int nelem = sizeof(indices)/sizeof(indices[0]); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glDrawElements(GL_TRIANGLES, nelem, GL_UNSIGNED_SHORT, indices); + setSurfaceMetadata(eglDisplay, eglSurface); eglSwapBuffers(eglDisplay, eglSurface); } -- cgit v1.2.3-59-g8ed1b From a1e59f106f84a95f8d27eb5116a88c122039fe1b Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Mon, 5 Mar 2018 08:19:25 -0700 Subject: EGL: Fix over zealous colorspace implementation Was processing HDR metadata attributes at CreateSurface time and that's not what's in the spec. Removed it. Update comments to clarify what's happening. Be sure to check for colorspace extension support. Test: adb -d shell am start -n \ com.drawelements.deqp/android.app.NativeActivity \ -e cmdLine '"deqp --deqp-case=dEQP-EGL.functional.wide_color.* \ --deqp-log-filename=/sdcard/dEQP-Log.qpa"' Test: adb -d shell am start -n \ com.drawelements.deqp/android.app.NativeActivity \ -e cmdLine '"deqp --deqp-case=dEQP-EGL.functional.hdr_metadata.* \ --deqp-log-filename=/sdcard/dEQP-Log.qpa"' Bug: 72828483 Change-Id: I2b89dce1f9c78331ea6cd550c4dda5893dd3ee7e --- opengl/libs/EGL/eglApi.cpp | 100 +++++++++++++++++++++++----------------- opengl/libs/EGL/egl_display.cpp | 10 ++-- opengl/libs/EGL/egl_display.h | 2 + 3 files changed, 63 insertions(+), 49 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index d9be9dbc67..b453d19d83 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -87,6 +87,8 @@ char const * const gBuiltinExtensionString = "EGL_ANDROID_get_native_client_buffer " "EGL_ANDROID_front_buffer_auto_refresh " "EGL_ANDROID_get_frame_timestamps " + "EGL_EXT_surface_SMPTE2086_metadata " + "EGL_EXT_surface_CTA861_3_metadata " ; char const * const gExtensionString = @@ -240,8 +242,6 @@ static const extention_map_t sExtensionMap[] = { !strcmp((procname), "eglHibernateProcessIMG") || \ !strcmp((procname), "eglAwakenProcessIMG")) - - // accesses protected by sExtensionMapMutex static std::unordered_map sGLExtentionMap; @@ -476,26 +476,61 @@ static android_dataspace modifyBufferDataspace(android_dataspace dataSpace, return dataSpace; } -// Return true if we stripped any EGL_GL_COLORSPACE_KHR or HDR metadata attributes. -// Protect devices from attributes they don't recognize that are managed by Android +// stripAttributes is used by eglCreateWindowSurface, eglCreatePbufferSurface +// and eglCreatePixmapSurface to clean up color space related Window parameters +// that a driver does not advertise support for. +// Return true if stripped_attrib_list has stripped contents. + static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, EGLint format, std::vector& stripped_attrib_list) { std::vector allowedColorSpaces; + bool haveColorSpaceSupport = dp->haveExtension("EGL_KHR_gl_colorspace"); switch (format) { case HAL_PIXEL_FORMAT_RGBA_8888: - case HAL_PIXEL_FORMAT_RGB_565: - // driver okay with linear & sRGB for 8888, but can't handle - // Display-P3 or other spaces. - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_SRGB_KHR); - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_LINEAR_KHR); + if (haveColorSpaceSupport) { + // Spec says: + // [fn1] Only OpenGL and OpenGL ES contexts which support sRGB + // rendering must respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and + // only to sRGB formats supported by the context (normally just SRGB8) + // Older versions not supporting sRGB rendering will ignore this + // surface attribute. + // + // We support sRGB and pixel format is SRGB8, so allow + // the EGL_GL_COLORSPACE_SRGB_KHR and + // EGL_GL_COLORSPACE_LINEAR_KHR + // colorspaces to be specified. + + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_SRGB_KHR); + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_LINEAR_KHR); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_display_p3_linear")) { + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_display_p3")) { + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_EXT); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_bt2020_linear")) { + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_BT2020_LINEAR_EXT); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_bt2020_pq")) { + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_scrgb_linear")) { + allowedColorSpaces.push_back(EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT); + } break; case HAL_PIXEL_FORMAT_RGBA_FP16: case HAL_PIXEL_FORMAT_RGBA_1010102: - default: - // driver does not want to see colorspace attributes for 1010102 or fp16. + case HAL_PIXEL_FORMAT_RGB_565: // Future: if driver supports XXXX extension, we can pass down that colorspace + default: break; } @@ -513,40 +548,23 @@ static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, found = true; } } - if (found || !dp->haveExtension("EGL_KHR_gl_colorspace")) { + if (found) { + // Found supported attribute + stripped_attrib_list.push_back(attr[0]); + stripped_attrib_list.push_back(attr[1]); + } else if (!haveColorSpaceSupport) { + // Device does not support colorspace extension + // pass on the attribute and let downstream + // components validate like normal stripped_attrib_list.push_back(attr[0]); stripped_attrib_list.push_back(attr[1]); } else { + // Found supported attribute that driver does not + // support, strip it. stripped = true; } } break; - case EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT: - case EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT: - case EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT: - case EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT: - case EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT: - case EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT: - case EGL_SMPTE2086_WHITE_POINT_X_EXT: - case EGL_SMPTE2086_WHITE_POINT_Y_EXT: - case EGL_SMPTE2086_MAX_LUMINANCE_EXT: - case EGL_SMPTE2086_MIN_LUMINANCE_EXT: - if (dp->haveExtension("EGL_EXT_surface_SMPTE2086_metadata")) { - stripped = true; - } else { - stripped_attrib_list.push_back(attr[0]); - stripped_attrib_list.push_back(attr[1]); - } - break; - case EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT: - case EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT: - if (dp->haveExtension("EGL_EXT_surface_CTA861_3_metadata")) { - stripped = true; - } else { - stripped_attrib_list.push_back(attr[0]); - stripped_attrib_list.push_back(attr[1]); - } - break; default: stripped_attrib_list.push_back(attr[0]); stripped_attrib_list.push_back(attr[1]); @@ -804,11 +822,7 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, if (surface != EGL_NO_SURFACE) { egl_surface_t* s = new egl_surface_t(dp.get(), config, window, surface, colorSpace, cnx); - - if (setSurfaceMetadata(s, window, origAttribList)) { - return s; - } - eglDestroySurface(dpy, s); + return s; } // EGLSurface creation failed diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index 0f36614ac1..74ddd1c31e 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -51,8 +51,11 @@ extern void setGLHooksThreadSpecific(gl_hooks_t const *value); // ---------------------------------------------------------------------------- -static bool findExtension(const char* exts, const char* name, size_t nameLen) { +bool findExtension(const char* exts, const char* name, size_t nameLen) { if (exts) { + if (!nameLen) { + nameLen = strlen(name); + } for (const char* match = strstr(exts, name); match; match = strstr(match + nameLen, name)) { if (match[nameLen] == '\0' || match[nameLen] == ' ') { return true; @@ -226,11 +229,6 @@ EGLBoolean egl_display_t::initialize(EGLint *major, EGLint *minor) { "EGL_EXT_gl_colorspace_bt2020_linear EGL_EXT_gl_colorspace_bt2020_pq "); } - // Always advertise HDR metadata extensions since it's okay for an application - // to specify such information even though it may not be used by the system. - mExtensionString.append( - "EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata "); - char const* start = gExtensionString; do { // length of the extension name diff --git a/opengl/libs/EGL/egl_display.h b/opengl/libs/EGL/egl_display.h index 661f47e2f3..ccd333d5ff 100644 --- a/opengl/libs/EGL/egl_display.h +++ b/opengl/libs/EGL/egl_display.h @@ -42,6 +42,8 @@ class egl_object_t; class egl_context_t; struct egl_connection_t; +bool findExtension(const char* exts, const char* name, size_t nameLen = 0); + // ---------------------------------------------------------------------------- class EGLAPI egl_display_t { // marked as EGLAPI for testing purposes -- cgit v1.2.3-59-g8ed1b From 4245cba083801e7fb892e490128390d8e1b88fec Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Fri, 30 Mar 2018 16:21:39 -0700 Subject: Add EGL_EXT_image_gl_colorspace to EGL whitelist. This extension will be required by CDD for Android P when the feature android.vr.high_performance is present. Bug: 32147090 Bug: 76152545 Test: Built and flashed Pixel XL, verified that the extension is present. Change-Id: Id14d80c7ec6e956b317d227f9f1ab7b2aea656f2 --- opengl/libs/EGL/eglApi.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index b453d19d83..f3a9ad8b88 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -94,6 +94,7 @@ char const * const gBuiltinExtensionString = char const * const gExtensionString = "EGL_KHR_image " // mandatory "EGL_KHR_image_base " // mandatory + "EGL_KHR_image_gl_colorspace " "EGL_KHR_image_pixmap " "EGL_KHR_lock_surface " "EGL_KHR_gl_colorspace " -- cgit v1.2.3-59-g8ed1b From 1381b1809fba39bc8d935b6318edffee5eac02df Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Sun, 1 Apr 2018 20:53:27 -0700 Subject: Update EGL and GLES headers. Notable new extensions: EGL_EXT_image_gl_colorspace GL_EXT_EGL_image_storage GL_EXT_clip_control GL_KHR_parallel_shader_compile The first two extensions will be required in P for devices with the feature android.vr.high_performance. Changes compared to Khronos versions of the headers: 1. The Khronos headers contain a recent fix to remove the incorrectly named function glMultiDrawElementsBaseVertexOES, which should have the EXT prefix according to the extension specification. However, frameworks/base references that function in libs/hwui/debug, so it was teomprarily added back to the gl2ext.h and the .in files. See ag/3831170 and this link for further information: https://github.com/KhronosGroup/OpenGL-Registry/issues/81 2. eglext.h was modified to add the undocumented and deprecated EGL_ANDROID_image_crop extension. See bug 15287899 for context. This also tweaks the glgen script to ignore Windows-specific items. Bug: 74131503 Bug: 76152545 Test: Built and ran a few OpenGL-related CTS tests on Pixel XL. Change-Id: I5b365c114b09228a6ead291c08e5330153f75748 --- opengl/include/EGL/eglext.h | 123 +- opengl/include/GLES2/gl2ext.h | 203 +- opengl/libs/GLES2/gl2ext_api.in | 379 +- opengl/libs/GLES_CM/glext_api.in | 9 + opengl/libs/entries.in | 125 +- opengl/libs/enums.in | 135 +- opengl/tools/glgen2/glgen.py | 6 + opengl/tools/glgen2/registry/egl.xml | 591 ++- opengl/tools/glgen2/registry/gl.xml | 6969 +++++++++++++++++++++++++--------- 9 files changed, 6627 insertions(+), 1913 deletions(-) mode change 100755 => 100644 opengl/tools/glgen2/registry/egl.xml mode change 100755 => 100644 opengl/tools/glgen2/registry/gl.xml (limited to 'opengl/libs') diff --git a/opengl/include/EGL/eglext.h b/opengl/include/EGL/eglext.h index 466768ae2c..44f4dbc929 100644 --- a/opengl/include/EGL/eglext.h +++ b/opengl/include/EGL/eglext.h @@ -33,12 +33,12 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.khronos.org/registry/egl ** -** Khronos $Git commit SHA1: a732b061e7 $ on $Git commit date: 2017-06-17 23:27:53 +0100 $ +** Khronos $Git commit SHA1: feaaeb19e1 $ on $Git commit date: 2018-02-26 20:49:02 -0800 $ */ #include -#define EGL_EGLEXT_VERSION 20170627 +#define EGL_EGLEXT_VERSION 20180228 /* Generated C header for: * API: egl @@ -495,24 +495,52 @@ EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGL #define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C #endif /* EGL_ANDROID_front_buffer_auto_refresh */ -#ifndef EGL_ANDROID_image_crop -#define EGL_ANDROID_image_crop 1 -#define EGL_IMAGE_CROP_LEFT_ANDROID 0x3148 -#define EGL_IMAGE_CROP_TOP_ANDROID 0x3149 -#define EGL_IMAGE_CROP_RIGHT_ANDROID 0x314A -#define EGL_IMAGE_CROP_BOTTOM_ANDROID 0x314B +#ifndef EGL_ANDROID_get_frame_timestamps +#define EGL_ANDROID_get_frame_timestamps 1 +typedef khronos_stime_nanoseconds_t EGLnsecsANDROID; +#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2) +#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1) +#define EGL_TIMESTAMPS_ANDROID 0x3430 +#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431 +#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432 +#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433 +#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434 +#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435 +#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436 +#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437 +#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438 +#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439 +#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A +#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B +#define EGL_READS_DONE_TIME_ANDROID 0x343C +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name); +EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values); +EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId); +EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp); +EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values); +#endif +#endif /* EGL_ANDROID_get_frame_timestamps */ + +#ifndef EGL_ANDROID_get_native_client_buffer +#define EGL_ANDROID_get_native_client_buffer 1 +struct AHardwareBuffer; +typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer); #endif +#endif /* EGL_ANDROID_get_native_client_buffer */ #ifndef EGL_ANDROID_image_native_buffer #define EGL_ANDROID_image_native_buffer 1 #define EGL_NATIVE_BUFFER_ANDROID 0x3140 #endif /* EGL_ANDROID_image_native_buffer */ -#ifndef EGL_KHR_mutable_render_buffer -#define EGL_KHR_mutable_render_buffer 1 -#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000 -#endif - #ifndef EGL_ANDROID_native_fence_sync #define EGL_ANDROID_native_fence_sync 1 #define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 @@ -527,45 +555,12 @@ EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR #ifndef EGL_ANDROID_presentation_time #define EGL_ANDROID_presentation_time 1 -typedef khronos_stime_nanoseconds_t EGLnsecsANDROID; typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time); #ifdef EGL_EGLEXT_PROTOTYPES EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time); #endif #endif /* EGL_ANDROID_presentation_time */ -#ifndef EGL_ANDROID_get_frame_timestamps -#define EGL_ANDROID_get_frame_timestamps 1 -#define EGL_TIMESTAMPS_ANDROID 0x3430 -#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431 -#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432 -#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433 -#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434 -#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435 -#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436 -#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437 -#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438 -#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439 -#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A -#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B -#define EGL_READS_DONE_TIME_ANDROID 0x343C -#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID, -2) -#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID, -1) -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean eglGetNextFrameIdANDROID(EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId); -EGLAPI EGLBoolean eglGetCompositorTimingANDROID(EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values); -EGLAPI EGLBoolean eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy, EGLSurface surface, EGLint name); -EGLAPI EGLBoolean eglGetFrameTimestampsANDROID(EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values); -EGLAPI EGLBoolean eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy, EGLSurface surface, EGLint timestamp); -#else -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROID) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROID) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROID) (EGLDisplay dpy, EGLSurface surface, EGLint name); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROID) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROID) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp); -#endif -#endif - #ifndef EGL_ANDROID_recordable #define EGL_ANDROID_recordable 1 #define EGL_RECORDABLE_ANDROID 0x3142 @@ -768,6 +763,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint #endif #endif /* EGL_EXT_image_dma_buf_import_modifiers */ +#ifndef EGL_EXT_image_gl_colorspace +#define EGL_EXT_image_gl_colorspace 1 +#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D +#endif /* EGL_EXT_image_gl_colorspace */ + #ifndef EGL_EXT_image_implicit_sync_control #define EGL_EXT_image_implicit_sync_control 1 #define EGL_IMPORT_SYNC_TYPE_EXT 0x3470 @@ -978,6 +978,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfi #define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 #define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 #define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 +#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004 typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); #ifdef EGL_EGLEXT_PROTOTYPES @@ -986,16 +987,6 @@ EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR #endif #endif /* EGL_MESA_drm_image */ -#ifndef EGL_ANDROID_get_native_client_buffer -#define EGL_ANDROID_get_native_client_buffer 1 -struct AHardwareBuffer; -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLClientBuffer eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer); -#else -typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROID) (const struct AHardwareBuffer *buffer); -#endif -#endif - #ifndef EGL_MESA_image_dma_buf_export #define EGL_MESA_image_dma_buf_export 1 typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers); @@ -1042,6 +1033,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurfa #define EGL_AUTO_STEREO_NV 0x3136 #endif /* EGL_NV_3dvision_surface */ +#ifndef EGL_NV_context_priority_realtime +#define EGL_NV_context_priority_realtime 1 +#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357 +#endif /* EGL_NV_context_priority_realtime */ + #ifndef EGL_NV_coverage_sample #define EGL_NV_coverage_sample 1 #define EGL_COVERAGE_BUFFERS_NV 0x30E0 @@ -1109,9 +1105,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface sur #define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C #define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D #define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLAttrib *attrib_list); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, EGLAttrib *attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list); #endif #endif /* EGL_NV_stream_consumer_gltexture_yuv */ @@ -1289,6 +1285,17 @@ EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void); #define EGL_NATIVE_SURFACE_TIZEN 0x32A1 #endif /* EGL_TIZEN_image_native_surface */ +/* This is a private Android extension that does not exist in the EGL registry, + * formerly used to work around a hardware issue on Nexus 4. It is deprecated + * and unimplemented. It has been added to this header manually. */ +#ifndef EGL_ANDROID_image_crop +#define EGL_ANDROID_image_crop 1 +#define EGL_IMAGE_CROP_LEFT_ANDROID 0x3148 +#define EGL_IMAGE_CROP_TOP_ANDROID 0x3149 +#define EGL_IMAGE_CROP_RIGHT_ANDROID 0x314A +#define EGL_IMAGE_CROP_BOTTOM_ANDROID 0x314B +#endif + #ifdef __cplusplus } #endif diff --git a/opengl/include/GLES2/gl2ext.h b/opengl/include/GLES2/gl2ext.h index b5eb723675..3ad39d967b 100644 --- a/opengl/include/GLES2/gl2ext.h +++ b/opengl/include/GLES2/gl2ext.h @@ -1,5 +1,5 @@ -#ifndef __gl2ext_h_ -#define __gl2ext_h_ 1 +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 #ifdef __cplusplus extern "C" { @@ -38,7 +38,7 @@ extern "C" { #define GL_APIENTRYP GL_APIENTRY* #endif -/* Generated on date 20170613 */ +/* Generated on date 20180316 */ /* Generated C header for: * API: gles2 @@ -159,6 +159,16 @@ GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 #endif /* GL_KHR_no_error */ +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +typedef void (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count); +#endif +#endif /* GL_KHR_parallel_shader_compile */ + #ifndef GL_KHR_robust_buffer_access_behavior #define GL_KHR_robust_buffer_access_behavior 1 #endif /* GL_KHR_robust_buffer_access_behavior */ @@ -324,12 +334,12 @@ GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexOES (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); #endif #endif /* GL_OES_draw_elements_base_vertex */ @@ -1055,6 +1065,16 @@ GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei #define GL_EXT_EGL_image_array 1 #endif /* GL_EXT_EGL_image_array */ +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + #ifndef GL_EXT_YUV_target #define GL_EXT_YUV_target 1 #define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 @@ -1126,6 +1146,20 @@ GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, #endif #endif /* GL_EXT_clear_texture */ +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + #ifndef GL_EXT_clip_cull_distance #define GL_EXT_clip_cull_distance 1 #define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 @@ -1311,12 +1345,10 @@ GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); #ifdef GL_GLEXT_PROTOTYPES GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); -GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); #endif #endif /* GL_EXT_draw_elements_base_vertex */ @@ -1682,6 +1714,8 @@ GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, #define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 #define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 #define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 typedef void (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); @@ -1825,6 +1859,14 @@ GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLin #define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 #endif /* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + #ifndef GL_EXT_shader_group_vote #define GL_EXT_shader_group_vote 1 #endif /* GL_EXT_shader_group_vote */ @@ -2012,18 +2054,42 @@ GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalf #define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 #endif /* GL_EXT_texture_compression_astc_decode_mode */ +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + #ifndef GL_EXT_texture_compression_dxt1 #define GL_EXT_texture_compression_dxt1 1 #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 #endif /* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif /* GL_EXT_texture_compression_rgtc */ + #ifndef GL_EXT_texture_compression_s3tc #define GL_EXT_texture_compression_s3tc 1 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 #endif /* GL_EXT_texture_compression_s3tc */ +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_compression_s3tc_srgb */ + #ifndef GL_EXT_texture_cube_map_array #define GL_EXT_texture_cube_map_array 1 #define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 @@ -2045,12 +2111,24 @@ GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalf #ifndef GL_EXT_texture_filter_minmax #define GL_EXT_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 #endif /* GL_EXT_texture_filter_minmax */ #ifndef GL_EXT_texture_format_BGRA8888 #define GL_EXT_texture_format_BGRA8888 1 #endif /* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + #ifndef GL_EXT_texture_norm16 #define GL_EXT_texture_norm16 1 #define GL_R16_EXT 0x822A @@ -2253,6 +2331,11 @@ GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, #define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B #endif /* GL_IMG_texture_filter_cubic */ +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + #ifndef GL_INTEL_conservative_rasterization #define GL_INTEL_conservative_rasterization 1 #define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE @@ -2295,7 +2378,7 @@ typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); typedef void (GL_APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); -typedef void (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); #ifdef GL_GLEXT_PROTOTYPES @@ -2306,12 +2389,17 @@ GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); -GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); GL_APICALL void GL_APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); #endif #endif /* GL_INTEL_performance_query */ +#ifndef GL_MESA_program_binary_formats +#define GL_MESA_program_binary_formats 1 +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#endif /* GL_MESA_program_binary_formats */ + #ifndef GL_MESA_shader_integer_functions #define GL_MESA_shader_integer_functions 1 #endif /* GL_MESA_shader_integer_functions */ @@ -2416,6 +2504,23 @@ GL_APICALL void GL_APIENTRY glBlendBarrierNV (void); #define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 #endif /* GL_NV_blend_equation_advanced_coherent */ +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_NV_blend_minmax_factor */ + +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +typedef void (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + #ifndef GL_NV_conditional_render #define GL_NV_conditional_render 1 #define GL_QUERY_WAIT_NV 0x8E13 @@ -2442,6 +2547,11 @@ GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybit #endif #endif /* GL_NV_conservative_raster */ +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#endif /* GL_NV_conservative_raster_pre_snap */ + #ifndef GL_NV_conservative_raster_pre_snap_triangles #define GL_NV_conservative_raster_pre_snap_triangles 1 #define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D @@ -2813,6 +2923,7 @@ GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei coun #ifndef GL_NV_path_rendering #define GL_NV_path_rendering 1 +typedef double GLdouble; #define GL_PATH_FORMAT_SVG_NV 0x9070 #define GL_PATH_FORMAT_PS_NV 0x9071 #define GL_STANDARD_FONT_NAME_NV 0x9072 @@ -3023,6 +3134,25 @@ typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathNa typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); #ifdef GL_GLEXT_PROTOTYPES GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); @@ -3081,6 +3211,25 @@ GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLe GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); #endif #endif /* GL_NV_path_rendering */ @@ -3089,6 +3238,14 @@ GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum pro #define GL_SHARED_EDGE_NV 0xC0 #endif /* GL_NV_path_rendering_shared_edge */ +#ifndef GL_NV_pixel_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + #ifndef GL_NV_polygon_mode #define GL_NV_polygon_mode 1 #define GL_POLYGON_MODE_NV 0x0B40 @@ -3184,6 +3341,10 @@ GL_APICALL void GL_APIENTRY glResolveDepthValuesNV (void); #define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 #endif /* GL_NV_shadow_samplers_cube */ +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + #ifndef GL_NV_texture_border_clamp #define GL_NV_texture_border_clamp 1 #define GL_TEXTURE_BORDER_COLOR_NV 0x1004 @@ -3386,6 +3547,19 @@ GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); #endif #endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + #ifndef GL_QCOM_tiled_rendering #define GL_QCOM_tiled_rendering 1 #define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 @@ -3438,6 +3612,17 @@ GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); #define GL_SHADER_BINARY_VIV 0x8FC4 #endif /* GL_VIV_shader_binary */ +/* Temporary hack to allow frameworks/base/libs/hwui/debug to build. + * This function was removed from the Khronos version of the headers + * (it is specified with the EXT prefix, not OES). */ +#ifndef GL_ANDROID_draw_elements_base_vertex_backwards_compatibility +#define GL_ANDROID_draw_elements_base_vertex_backwards_compatibility 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexOES (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex); +#endif +#endif /* GL_ANDROID_draw_elements_base_vertex_backwards_compatibility */ + #ifdef __cplusplus } #endif diff --git a/opengl/libs/GLES2/gl2ext_api.in b/opengl/libs/GLES2/gl2ext_api.in index fc368f2fc2..4a0d4b9e08 100644 --- a/opengl/libs/GLES2/gl2ext_api.in +++ b/opengl/libs/GLES2/gl2ext_api.in @@ -34,6 +34,9 @@ void API_ENTRY(glGetObjectPtrLabelKHR)(const void *ptr, GLsizei bufSize, GLsizei void API_ENTRY(glGetPointervKHR)(GLenum pname, void **params) { CALL_GL_API(glGetPointervKHR, pname, params); } +void API_ENTRY(glMaxShaderCompilerThreadsKHR)(GLuint count) { + CALL_GL_API(glMaxShaderCompilerThreadsKHR, count); +} GLenum API_ENTRY(glGetGraphicsResetStatusKHR)(void) { CALL_GL_API_RETURN(glGetGraphicsResetStatusKHR); } @@ -91,8 +94,8 @@ void API_ENTRY(glDrawRangeElementsBaseVertexOES)(GLenum mode, GLuint start, GLui void API_ENTRY(glDrawElementsInstancedBaseVertexOES)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) { CALL_GL_API(glDrawElementsInstancedBaseVertexOES, mode, count, type, indices, instancecount, basevertex); } -void API_ENTRY(glMultiDrawElementsBaseVertexOES)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex) { - CALL_GL_API(glMultiDrawElementsBaseVertexOES, mode, count, type, indices, primcount, basevertex); +void API_ENTRY(glMultiDrawElementsBaseVertexEXT)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex) { + CALL_GL_API(glMultiDrawElementsBaseVertexEXT, mode, count, type, indices, primcount, basevertex); } void API_ENTRY(glFramebufferTextureOES)(GLenum target, GLenum attachment, GLuint texture, GLint level) { CALL_GL_API(glFramebufferTextureOES, target, attachment, texture, level); @@ -187,6 +190,33 @@ void API_ENTRY(glGenVertexArraysOES)(GLsizei n, GLuint *arrays) { GLboolean API_ENTRY(glIsVertexArrayOES)(GLuint array) { CALL_GL_API_RETURN(glIsVertexArrayOES, array); } +void API_ENTRY(glViewportArrayvOES)(GLuint first, GLsizei count, const GLfloat *v) { + CALL_GL_API(glViewportArrayvOES, first, count, v); +} +void API_ENTRY(glViewportIndexedfOES)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) { + CALL_GL_API(glViewportIndexedfOES, index, x, y, w, h); +} +void API_ENTRY(glViewportIndexedfvOES)(GLuint index, const GLfloat *v) { + CALL_GL_API(glViewportIndexedfvOES, index, v); +} +void API_ENTRY(glScissorArrayvOES)(GLuint first, GLsizei count, const GLint *v) { + CALL_GL_API(glScissorArrayvOES, first, count, v); +} +void API_ENTRY(glScissorIndexedOES)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) { + CALL_GL_API(glScissorIndexedOES, index, left, bottom, width, height); +} +void API_ENTRY(glScissorIndexedvOES)(GLuint index, const GLint *v) { + CALL_GL_API(glScissorIndexedvOES, index, v); +} +void API_ENTRY(glDepthRangeArrayfvOES)(GLuint first, GLsizei count, const GLfloat *v) { + CALL_GL_API(glDepthRangeArrayfvOES, first, count, v); +} +void API_ENTRY(glDepthRangeIndexedfOES)(GLuint index, GLfloat n, GLfloat f) { + CALL_GL_API(glDepthRangeIndexedfOES, index, n, f); +} +void API_ENTRY(glGetFloati_vOES)(GLenum target, GLuint index, GLfloat *data) { + CALL_GL_API(glGetFloati_vOES, target, index, data); +} void API_ENTRY(glGetPerfMonitorGroupsAMD)(GLint *numGroups, GLsizei groupsSize, GLuint *groups) { CALL_GL_API(glGetPerfMonitorGroupsAMD, numGroups, groupsSize, groups); } @@ -268,6 +298,12 @@ void API_ENTRY(glGetInteger64vAPPLE)(GLenum pname, GLint64 *params) { void API_ENTRY(glGetSyncivAPPLE)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) { CALL_GL_API(glGetSyncivAPPLE, sync, pname, bufSize, length, values); } +void API_ENTRY(glEGLImageTargetTexStorageEXT)(GLenum target, GLeglImageOES image, const GLint* attrib_list) { + CALL_GL_API(glEGLImageTargetTexStorageEXT, target, image, attrib_list); +} +void API_ENTRY(glEGLImageTargetTextureStorageEXT)(GLuint texture, GLeglImageOES image, const GLint* attrib_list) { + CALL_GL_API(glEGLImageTargetTextureStorageEXT, texture, image, attrib_list); +} void API_ENTRY(glDrawArraysInstancedBaseInstanceEXT)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) { CALL_GL_API(glDrawArraysInstancedBaseInstanceEXT, mode, first, count, instancecount, baseinstance); } @@ -292,6 +328,15 @@ GLint API_ENTRY(glGetFragDataIndexEXT)(GLuint program, const GLchar *name) { void API_ENTRY(glBufferStorageEXT)(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) { CALL_GL_API(glBufferStorageEXT, target, size, data, flags); } +void API_ENTRY(glClearTexImageEXT)(GLuint texture, GLint level, GLenum format, GLenum type, const void *data) { + CALL_GL_API(glClearTexImageEXT, texture, level, format, type, data); +} +void API_ENTRY(glClearTexSubImageEXT)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) { + CALL_GL_API(glClearTexSubImageEXT, texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); +} +void API_ENTRY(glClipControlEXT)(GLenum origin, GLenum depth) { + CALL_GL_API(glClipControlEXT, origin, depth); +} void API_ENTRY(glCopyImageSubDataEXT)(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) { CALL_GL_API(glCopyImageSubDataEXT, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); } @@ -382,8 +427,8 @@ void API_ENTRY(glDrawRangeElementsBaseVertexEXT)(GLenum mode, GLuint start, GLui void API_ENTRY(glDrawElementsInstancedBaseVertexEXT)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex) { CALL_GL_API(glDrawElementsInstancedBaseVertexEXT, mode, count, type, indices, instancecount, basevertex); } -void API_ENTRY(glMultiDrawElementsBaseVertexEXT)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex) { - CALL_GL_API(glMultiDrawElementsBaseVertexEXT, mode, count, type, indices, primcount, basevertex); +void API_ENTRY(glMultiDrawElementsBaseVertexOES)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, const GLint *basevertex) { + CALL_GL_API(glMultiDrawElementsBaseVertexOES, mode, count, type, indices, primcount, basevertex); } void API_ENTRY(glDrawArraysInstancedEXT)(GLenum mode, GLint start, GLsizei count, GLsizei primcount) { CALL_GL_API(glDrawArraysInstancedEXT, mode, start, count, primcount); @@ -391,6 +436,18 @@ void API_ENTRY(glDrawArraysInstancedEXT)(GLenum mode, GLint start, GLsizei count void API_ENTRY(glDrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) { CALL_GL_API(glDrawElementsInstancedEXT, mode, count, type, indices, primcount); } +void API_ENTRY(glDrawTransformFeedbackEXT)(GLenum mode, GLuint id) { + CALL_GL_API(glDrawTransformFeedbackEXT, mode, id); +} +void API_ENTRY(glDrawTransformFeedbackInstancedEXT)(GLenum mode, GLuint id, GLsizei instancecount) { + CALL_GL_API(glDrawTransformFeedbackInstancedEXT, mode, id, instancecount); +} +void API_ENTRY(glBufferStorageExternalEXT)(GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) { + CALL_GL_API(glBufferStorageExternalEXT, target, offset, size, clientBuffer, flags); +} +void API_ENTRY(glNamedBufferStorageExternalEXT)(GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) { + CALL_GL_API(glNamedBufferStorageExternalEXT, buffer, offset, size, clientBuffer, flags); +} void API_ENTRY(glFramebufferTextureEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level) { CALL_GL_API(glFramebufferTextureEXT, target, attachment, texture, level); } @@ -403,6 +460,60 @@ void * API_ENTRY(glMapBufferRangeEXT)(GLenum target, GLintptr offset, GLsizeiptr void API_ENTRY(glFlushMappedBufferRangeEXT)(GLenum target, GLintptr offset, GLsizeiptr length) { CALL_GL_API(glFlushMappedBufferRangeEXT, target, offset, length); } +void API_ENTRY(glGetUnsignedBytevEXT)(GLenum pname, GLubyte *data) { + CALL_GL_API(glGetUnsignedBytevEXT, pname, data); +} +void API_ENTRY(glGetUnsignedBytei_vEXT)(GLenum target, GLuint index, GLubyte *data) { + CALL_GL_API(glGetUnsignedBytei_vEXT, target, index, data); +} +void API_ENTRY(glDeleteMemoryObjectsEXT)(GLsizei n, const GLuint *memoryObjects) { + CALL_GL_API(glDeleteMemoryObjectsEXT, n, memoryObjects); +} +GLboolean API_ENTRY(glIsMemoryObjectEXT)(GLuint memoryObject) { + CALL_GL_API_RETURN(glIsMemoryObjectEXT, memoryObject); +} +void API_ENTRY(glCreateMemoryObjectsEXT)(GLsizei n, GLuint *memoryObjects) { + CALL_GL_API(glCreateMemoryObjectsEXT, n, memoryObjects); +} +void API_ENTRY(glMemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, const GLint *params) { + CALL_GL_API(glMemoryObjectParameterivEXT, memoryObject, pname, params); +} +void API_ENTRY(glGetMemoryObjectParameterivEXT)(GLuint memoryObject, GLenum pname, GLint *params) { + CALL_GL_API(glGetMemoryObjectParameterivEXT, memoryObject, pname, params); +} +void API_ENTRY(glTexStorageMem2DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTexStorageMem2DEXT, target, levels, internalFormat, width, height, memory, offset); +} +void API_ENTRY(glTexStorageMem2DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTexStorageMem2DMultisampleEXT, target, samples, internalFormat, width, height, fixedSampleLocations, memory, offset); +} +void API_ENTRY(glTexStorageMem3DEXT)(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTexStorageMem3DEXT, target, levels, internalFormat, width, height, depth, memory, offset); +} +void API_ENTRY(glTexStorageMem3DMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTexStorageMem3DMultisampleEXT, target, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset); +} +void API_ENTRY(glBufferStorageMemEXT)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset) { + CALL_GL_API(glBufferStorageMemEXT, target, size, memory, offset); +} +void API_ENTRY(glTextureStorageMem2DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTextureStorageMem2DEXT, texture, levels, internalFormat, width, height, memory, offset); +} +void API_ENTRY(glTextureStorageMem2DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTextureStorageMem2DMultisampleEXT, texture, samples, internalFormat, width, height, fixedSampleLocations, memory, offset); +} +void API_ENTRY(glTextureStorageMem3DEXT)(GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTextureStorageMem3DEXT, texture, levels, internalFormat, width, height, depth, memory, offset); +} +void API_ENTRY(glTextureStorageMem3DMultisampleEXT)(GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) { + CALL_GL_API(glTextureStorageMem3DMultisampleEXT, texture, samples, internalFormat, width, height, depth, fixedSampleLocations, memory, offset); +} +void API_ENTRY(glNamedBufferStorageMemEXT)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset) { + CALL_GL_API(glNamedBufferStorageMemEXT, buffer, size, memory, offset); +} +void API_ENTRY(glImportMemoryFdEXT)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd) { + CALL_GL_API(glImportMemoryFdEXT, memory, size, handleType, fd); +} void API_ENTRY(glMultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) { CALL_GL_API(glMultiDrawArraysEXT, mode, first, count, primcount); } @@ -430,6 +541,9 @@ void API_ENTRY(glDrawBuffersIndexedEXT)(GLint n, const GLenum *location, const G void API_ENTRY(glGetIntegeri_vEXT)(GLenum target, GLuint index, GLint *data) { CALL_GL_API(glGetIntegeri_vEXT, target, index, data); } +void API_ENTRY(glPolygonOffsetClampEXT)(GLfloat factor, GLfloat units, GLfloat clamp) { + CALL_GL_API(glPolygonOffsetClampEXT, factor, units, clamp); +} void API_ENTRY(glPrimitiveBoundingBoxEXT)(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW) { CALL_GL_API(glPrimitiveBoundingBoxEXT, minX, minY, minZ, minW, maxX, maxY, maxZ, maxW); } @@ -448,6 +562,30 @@ void API_ENTRY(glGetnUniformfvEXT)(GLuint program, GLint location, GLsizei bufSi void API_ENTRY(glGetnUniformivEXT)(GLuint program, GLint location, GLsizei bufSize, GLint *params) { CALL_GL_API(glGetnUniformivEXT, program, location, bufSize, params); } +void API_ENTRY(glGenSemaphoresEXT)(GLsizei n, GLuint *semaphores) { + CALL_GL_API(glGenSemaphoresEXT, n, semaphores); +} +void API_ENTRY(glDeleteSemaphoresEXT)(GLsizei n, const GLuint *semaphores) { + CALL_GL_API(glDeleteSemaphoresEXT, n, semaphores); +} +GLboolean API_ENTRY(glIsSemaphoreEXT)(GLuint semaphore) { + CALL_GL_API_RETURN(glIsSemaphoreEXT, semaphore); +} +void API_ENTRY(glSemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, const GLuint64 *params) { + CALL_GL_API(glSemaphoreParameterui64vEXT, semaphore, pname, params); +} +void API_ENTRY(glGetSemaphoreParameterui64vEXT)(GLuint semaphore, GLenum pname, GLuint64 *params) { + CALL_GL_API(glGetSemaphoreParameterui64vEXT, semaphore, pname, params); +} +void API_ENTRY(glWaitSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts) { + CALL_GL_API(glWaitSemaphoreEXT, semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, srcLayouts); +} +void API_ENTRY(glSignalSemaphoreEXT)(GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts) { + CALL_GL_API(glSignalSemaphoreEXT, semaphore, numBufferBarriers, buffers, numTextureBarriers, textures, dstLayouts); +} +void API_ENTRY(glImportSemaphoreFdEXT)(GLuint semaphore, GLenum handleType, GLint fd) { + CALL_GL_API(glImportSemaphoreFdEXT, semaphore, handleType, fd); +} void API_ENTRY(glActiveShaderProgramEXT)(GLuint pipeline, GLuint program) { CALL_GL_API(glActiveShaderProgramEXT, pipeline, program); } @@ -580,6 +718,18 @@ void API_ENTRY(glProgramUniformMatrix3x4fvEXT)(GLuint program, GLint location, G void API_ENTRY(glProgramUniformMatrix4x3fvEXT)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { CALL_GL_API(glProgramUniformMatrix4x3fvEXT, program, location, count, transpose, value); } +void API_ENTRY(glFramebufferFetchBarrierEXT)(void) { + CALL_GL_API(glFramebufferFetchBarrierEXT); +} +void API_ENTRY(glFramebufferPixelLocalStorageSizeEXT)(GLuint target, GLsizei size) { + CALL_GL_API(glFramebufferPixelLocalStorageSizeEXT, target, size); +} +GLsizei API_ENTRY(glGetFramebufferPixelLocalStorageSizeEXT)(GLuint target) { + CALL_GL_API_RETURN(glGetFramebufferPixelLocalStorageSizeEXT, target); +} +void API_ENTRY(glClearPixelLocalStorageuiEXT)(GLsizei offset, GLsizei n, const GLuint *values) { + CALL_GL_API(glClearPixelLocalStorageuiEXT, offset, n, values); +} void API_ENTRY(glTexPageCommitmentEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit) { CALL_GL_API(glTexPageCommitmentEXT, target, level, xoffset, yoffset, zoffset, width, height, depth, commit); } @@ -637,6 +787,33 @@ void API_ENTRY(glTextureStorage3DEXT)(GLuint texture, GLenum target, GLsizei lev void API_ENTRY(glTextureViewEXT)(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) { CALL_GL_API(glTextureViewEXT, texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); } +void API_ENTRY(glWindowRectanglesEXT)(GLenum mode, GLsizei count, const GLint *box) { + CALL_GL_API(glWindowRectanglesEXT, mode, count, box); +} +GLuint64 API_ENTRY(glGetTextureHandleIMG)(GLuint texture) { + CALL_GL_API_RETURN(glGetTextureHandleIMG, texture); +} +GLuint64 API_ENTRY(glGetTextureSamplerHandleIMG)(GLuint texture, GLuint sampler) { + CALL_GL_API_RETURN(glGetTextureSamplerHandleIMG, texture, sampler); +} +void API_ENTRY(glUniformHandleui64IMG)(GLint location, GLuint64 value) { + CALL_GL_API(glUniformHandleui64IMG, location, value); +} +void API_ENTRY(glUniformHandleui64vIMG)(GLint location, GLsizei count, const GLuint64 *value) { + CALL_GL_API(glUniformHandleui64vIMG, location, count, value); +} +void API_ENTRY(glProgramUniformHandleui64IMG)(GLuint program, GLint location, GLuint64 value) { + CALL_GL_API(glProgramUniformHandleui64IMG, program, location, value); +} +void API_ENTRY(glProgramUniformHandleui64vIMG)(GLuint program, GLint location, GLsizei count, const GLuint64 *values) { + CALL_GL_API(glProgramUniformHandleui64vIMG, program, location, count, values); +} +void API_ENTRY(glFramebufferTexture2DDownsampleIMG)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale) { + CALL_GL_API(glFramebufferTexture2DDownsampleIMG, target, attachment, textarget, texture, level, xscale, yscale); +} +void API_ENTRY(glFramebufferTextureLayerDownsampleIMG)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale) { + CALL_GL_API(glFramebufferTextureLayerDownsampleIMG, target, attachment, texture, level, layer, xscale, yscale); +} void API_ENTRY(glRenderbufferStorageMultisampleIMG)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { CALL_GL_API(glRenderbufferStorageMultisampleIMG, target, samples, internalformat, width, height); } @@ -667,7 +844,7 @@ void API_ENTRY(glGetNextPerfQueryIdINTEL)(GLuint queryId, GLuint *nextQueryId) { void API_ENTRY(glGetPerfCounterInfoINTEL)(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue) { CALL_GL_API(glGetPerfCounterInfoINTEL, queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue); } -void API_ENTRY(glGetPerfQueryDataINTEL)(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten) { +void API_ENTRY(glGetPerfQueryDataINTEL)(GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten) { CALL_GL_API(glGetPerfQueryDataINTEL, queryHandle, flags, dataSize, data, bytesWritten); } void API_ENTRY(glGetPerfQueryIdByNameINTEL)(GLchar *queryName, GLuint *queryId) { @@ -721,6 +898,9 @@ void API_ENTRY(glBlendParameteriNV)(GLenum pname, GLint value) { void API_ENTRY(glBlendBarrierNV)(void) { CALL_GL_API(glBlendBarrierNV); } +void API_ENTRY(glViewportPositionWScaleNV)(GLuint index, GLfloat xcoeff, GLfloat ycoeff) { + CALL_GL_API(glViewportPositionWScaleNV, index, xcoeff, ycoeff); +} void API_ENTRY(glBeginConditionalRenderNV)(GLuint id, GLenum mode) { CALL_GL_API(glBeginConditionalRenderNV, id, mode); } @@ -730,6 +910,9 @@ void API_ENTRY(glEndConditionalRenderNV)(void) { void API_ENTRY(glSubpixelPrecisionBiasNV)(GLuint xbits, GLuint ybits) { CALL_GL_API(glSubpixelPrecisionBiasNV, xbits, ybits); } +void API_ENTRY(glConservativeRasterParameteriNV)(GLenum pname, GLint param) { + CALL_GL_API(glConservativeRasterParameteriNV, pname, param); +} void API_ENTRY(glCopyBufferSubDataNV)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { CALL_GL_API(glCopyBufferSubDataNV, readTarget, writeTarget, readOffset, writeOffset, size); } @@ -748,6 +931,21 @@ void API_ENTRY(glDrawArraysInstancedNV)(GLenum mode, GLint first, GLsizei count, void API_ENTRY(glDrawElementsInstancedNV)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) { CALL_GL_API(glDrawElementsInstancedNV, mode, count, type, indices, primcount); } +void API_ENTRY(glDrawVkImageNV)(GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) { + CALL_GL_API(glDrawVkImageNV, vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1); +} +GLVULKANPROCNV API_ENTRY(glGetVkProcAddrNV)(const GLchar *name) { + CALL_GL_API_RETURN(glGetVkProcAddrNV, name); +} +void API_ENTRY(glWaitVkSemaphoreNV)(GLuint64 vkSemaphore) { + CALL_GL_API(glWaitVkSemaphoreNV, vkSemaphore); +} +void API_ENTRY(glSignalVkSemaphoreNV)(GLuint64 vkSemaphore) { + CALL_GL_API(glSignalVkSemaphoreNV, vkSemaphore); +} +void API_ENTRY(glSignalVkFenceNV)(GLuint64 vkFence) { + CALL_GL_API(glSignalVkFenceNV, vkFence); +} void API_ENTRY(glDeleteFencesNV)(GLsizei n, const GLuint *fences) { CALL_GL_API(glDeleteFencesNV, n, fences); } @@ -787,6 +985,105 @@ void API_ENTRY(glCoverageModulationNV)(GLenum components) { void API_ENTRY(glRenderbufferStorageMultisampleNV)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { CALL_GL_API(glRenderbufferStorageMultisampleNV, target, samples, internalformat, width, height); } +void API_ENTRY(glUniform1i64NV)(GLint location, GLint64EXT x) { + CALL_GL_API(glUniform1i64NV, location, x); +} +void API_ENTRY(glUniform2i64NV)(GLint location, GLint64EXT x, GLint64EXT y) { + CALL_GL_API(glUniform2i64NV, location, x, y); +} +void API_ENTRY(glUniform3i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) { + CALL_GL_API(glUniform3i64NV, location, x, y, z); +} +void API_ENTRY(glUniform4i64NV)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { + CALL_GL_API(glUniform4i64NV, location, x, y, z, w); +} +void API_ENTRY(glUniform1i64vNV)(GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glUniform1i64vNV, location, count, value); +} +void API_ENTRY(glUniform2i64vNV)(GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glUniform2i64vNV, location, count, value); +} +void API_ENTRY(glUniform3i64vNV)(GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glUniform3i64vNV, location, count, value); +} +void API_ENTRY(glUniform4i64vNV)(GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glUniform4i64vNV, location, count, value); +} +void API_ENTRY(glUniform1ui64NV)(GLint location, GLuint64EXT x) { + CALL_GL_API(glUniform1ui64NV, location, x); +} +void API_ENTRY(glUniform2ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y) { + CALL_GL_API(glUniform2ui64NV, location, x, y); +} +void API_ENTRY(glUniform3ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { + CALL_GL_API(glUniform3ui64NV, location, x, y, z); +} +void API_ENTRY(glUniform4ui64NV)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { + CALL_GL_API(glUniform4ui64NV, location, x, y, z, w); +} +void API_ENTRY(glUniform1ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glUniform1ui64vNV, location, count, value); +} +void API_ENTRY(glUniform2ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glUniform2ui64vNV, location, count, value); +} +void API_ENTRY(glUniform3ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glUniform3ui64vNV, location, count, value); +} +void API_ENTRY(glUniform4ui64vNV)(GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glUniform4ui64vNV, location, count, value); +} +void API_ENTRY(glGetUniformi64vNV)(GLuint program, GLint location, GLint64EXT *params) { + CALL_GL_API(glGetUniformi64vNV, program, location, params); +} +void API_ENTRY(glProgramUniform1i64NV)(GLuint program, GLint location, GLint64EXT x) { + CALL_GL_API(glProgramUniform1i64NV, program, location, x); +} +void API_ENTRY(glProgramUniform2i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) { + CALL_GL_API(glProgramUniform2i64NV, program, location, x, y); +} +void API_ENTRY(glProgramUniform3i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) { + CALL_GL_API(glProgramUniform3i64NV, program, location, x, y, z); +} +void API_ENTRY(glProgramUniform4i64NV)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) { + CALL_GL_API(glProgramUniform4i64NV, program, location, x, y, z, w); +} +void API_ENTRY(glProgramUniform1i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glProgramUniform1i64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform2i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glProgramUniform2i64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform3i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glProgramUniform3i64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform4i64vNV)(GLuint program, GLint location, GLsizei count, const GLint64EXT *value) { + CALL_GL_API(glProgramUniform4i64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform1ui64NV)(GLuint program, GLint location, GLuint64EXT x) { + CALL_GL_API(glProgramUniform1ui64NV, program, location, x); +} +void API_ENTRY(glProgramUniform2ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) { + CALL_GL_API(glProgramUniform2ui64NV, program, location, x, y); +} +void API_ENTRY(glProgramUniform3ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) { + CALL_GL_API(glProgramUniform3ui64NV, program, location, x, y, z); +} +void API_ENTRY(glProgramUniform4ui64NV)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) { + CALL_GL_API(glProgramUniform4ui64NV, program, location, x, y, z, w); +} +void API_ENTRY(glProgramUniform1ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glProgramUniform1ui64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform2ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glProgramUniform2ui64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform3ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glProgramUniform3ui64vNV, program, location, count, value); +} +void API_ENTRY(glProgramUniform4ui64vNV)(GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) { + CALL_GL_API(glProgramUniform4ui64vNV, program, location, count, value); +} void API_ENTRY(glVertexAttribDivisorNV)(GLuint index, GLuint divisor) { CALL_GL_API(glVertexAttribDivisorNV, index, divisor); } @@ -982,6 +1279,63 @@ void API_ENTRY(glProgramPathFragmentInputGenNV)(GLuint program, GLint location, void API_ENTRY(glGetProgramResourcefvNV)(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLfloat *params) { CALL_GL_API(glGetProgramResourcefvNV, program, programInterface, index, propCount, props, bufSize, length, params); } +void API_ENTRY(glMatrixFrustumEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { + CALL_GL_API(glMatrixFrustumEXT, mode, left, right, bottom, top, zNear, zFar); +} +void API_ENTRY(glMatrixLoadIdentityEXT)(GLenum mode) { + CALL_GL_API(glMatrixLoadIdentityEXT, mode); +} +void API_ENTRY(glMatrixLoadTransposefEXT)(GLenum mode, const GLfloat *m) { + CALL_GL_API(glMatrixLoadTransposefEXT, mode, m); +} +void API_ENTRY(glMatrixLoadTransposedEXT)(GLenum mode, const GLdouble *m) { + CALL_GL_API(glMatrixLoadTransposedEXT, mode, m); +} +void API_ENTRY(glMatrixLoadfEXT)(GLenum mode, const GLfloat *m) { + CALL_GL_API(glMatrixLoadfEXT, mode, m); +} +void API_ENTRY(glMatrixLoaddEXT)(GLenum mode, const GLdouble *m) { + CALL_GL_API(glMatrixLoaddEXT, mode, m); +} +void API_ENTRY(glMatrixMultTransposefEXT)(GLenum mode, const GLfloat *m) { + CALL_GL_API(glMatrixMultTransposefEXT, mode, m); +} +void API_ENTRY(glMatrixMultTransposedEXT)(GLenum mode, const GLdouble *m) { + CALL_GL_API(glMatrixMultTransposedEXT, mode, m); +} +void API_ENTRY(glMatrixMultfEXT)(GLenum mode, const GLfloat *m) { + CALL_GL_API(glMatrixMultfEXT, mode, m); +} +void API_ENTRY(glMatrixMultdEXT)(GLenum mode, const GLdouble *m) { + CALL_GL_API(glMatrixMultdEXT, mode, m); +} +void API_ENTRY(glMatrixOrthoEXT)(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) { + CALL_GL_API(glMatrixOrthoEXT, mode, left, right, bottom, top, zNear, zFar); +} +void API_ENTRY(glMatrixPopEXT)(GLenum mode) { + CALL_GL_API(glMatrixPopEXT, mode); +} +void API_ENTRY(glMatrixPushEXT)(GLenum mode) { + CALL_GL_API(glMatrixPushEXT, mode); +} +void API_ENTRY(glMatrixRotatefEXT)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { + CALL_GL_API(glMatrixRotatefEXT, mode, angle, x, y, z); +} +void API_ENTRY(glMatrixRotatedEXT)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z) { + CALL_GL_API(glMatrixRotatedEXT, mode, angle, x, y, z); +} +void API_ENTRY(glMatrixScalefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z) { + CALL_GL_API(glMatrixScalefEXT, mode, x, y, z); +} +void API_ENTRY(glMatrixScaledEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z) { + CALL_GL_API(glMatrixScaledEXT, mode, x, y, z); +} +void API_ENTRY(glMatrixTranslatefEXT)(GLenum mode, GLfloat x, GLfloat y, GLfloat z) { + CALL_GL_API(glMatrixTranslatefEXT, mode, x, y, z); +} +void API_ENTRY(glMatrixTranslatedEXT)(GLenum mode, GLdouble x, GLdouble y, GLdouble z) { + CALL_GL_API(glMatrixTranslatedEXT, mode, x, y, z); +} void API_ENTRY(glPolygonModeNV)(GLenum face, GLenum mode) { CALL_GL_API(glPolygonModeNV, face, mode); } @@ -1033,6 +1387,9 @@ void API_ENTRY(glDisableiNV)(GLenum target, GLuint index) { GLboolean API_ENTRY(glIsEnablediNV)(GLenum target, GLuint index) { CALL_GL_API_RETURN(glIsEnablediNV, target, index); } +void API_ENTRY(glViewportSwizzleNV)(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew) { + CALL_GL_API(glViewportSwizzleNV, index, swizzlex, swizzley, swizzlez, swizzlew); +} void API_ENTRY(glFramebufferTextureMultiviewOVR)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews) { CALL_GL_API(glFramebufferTextureMultiviewOVR, target, attachment, texture, level, baseViewIndex, numViews); } @@ -1090,6 +1447,18 @@ GLboolean API_ENTRY(glExtIsProgramBinaryQCOM)(GLuint program) { void API_ENTRY(glExtGetProgramBinarySourceQCOM)(GLuint program, GLenum shadertype, GLchar *source, GLint *length) { CALL_GL_API(glExtGetProgramBinarySourceQCOM, program, shadertype, source, length); } +void API_ENTRY(glFramebufferFoveationConfigQCOM)(GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures) { + CALL_GL_API(glFramebufferFoveationConfigQCOM, framebuffer, numLayers, focalPointsPerLayer, requestedFeatures, providedFeatures); +} +void API_ENTRY(glFramebufferFoveationParametersQCOM)(GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea) { + CALL_GL_API(glFramebufferFoveationParametersQCOM, framebuffer, layer, focalPoint, focalX, focalY, gainX, gainY, foveaArea); +} +void API_ENTRY(glFramebufferFetchBarrierQCOM)(void) { + CALL_GL_API(glFramebufferFetchBarrierQCOM); +} +void API_ENTRY(glTextureFoveationParametersQCOM)(GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea) { + CALL_GL_API(glTextureFoveationParametersQCOM, texture, layer, focalPoint, focalX, focalY, gainX, gainY, foveaArea); +} void API_ENTRY(glStartTilingQCOM)(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) { CALL_GL_API(glStartTilingQCOM, x, y, width, height, preserveMask); } diff --git a/opengl/libs/GLES_CM/glext_api.in b/opengl/libs/GLES_CM/glext_api.in index fbf761a3b3..42ac5638b3 100644 --- a/opengl/libs/GLES_CM/glext_api.in +++ b/opengl/libs/GLES_CM/glext_api.in @@ -313,6 +313,15 @@ void API_ENTRY(glGetInteger64vAPPLE)(GLenum pname, GLint64 *params) { void API_ENTRY(glGetSyncivAPPLE)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) { CALL_GL_API(glGetSyncivAPPLE, sync, pname, bufSize, length, values); } +void API_ENTRY(glInsertEventMarkerEXT)(GLsizei length, const GLchar *marker) { + CALL_GL_API(glInsertEventMarkerEXT, length, marker); +} +void API_ENTRY(glPushGroupMarkerEXT)(GLsizei length, const GLchar *marker) { + CALL_GL_API(glPushGroupMarkerEXT, length, marker); +} +void API_ENTRY(glPopGroupMarkerEXT)(void) { + CALL_GL_API(glPopGroupMarkerEXT); +} void API_ENTRY(glDiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum *attachments) { CALL_GL_API(glDiscardFramebufferEXT, target, numAttachments, attachments); } diff --git a/opengl/libs/entries.in b/opengl/libs/entries.in index e3b7cf38ee..a30651098b 100644 --- a/opengl/libs/entries.in +++ b/opengl/libs/entries.in @@ -61,6 +61,8 @@ GL_ENTRY(void, glBlitFramebufferANGLE, GLint srcX0, GLint srcY0, GLint srcX1, GL GL_ENTRY(void, glBlitFramebufferNV, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) GL_ENTRY(void, glBufferData, GLenum target, GLsizeiptr size, const void *data, GLenum usage) GL_ENTRY(void, glBufferStorageEXT, GLenum target, GLsizeiptr size, const void *data, GLbitfield flags) +GL_ENTRY(void, glBufferStorageExternalEXT, GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) +GL_ENTRY(void, glBufferStorageMemEXT, GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset) GL_ENTRY(void, glBufferSubData, GLenum target, GLintptr offset, GLsizeiptr size, const void *data) GL_ENTRY(GLenum, glCheckFramebufferStatus, GLenum target) GL_ENTRY(GLenum, glCheckFramebufferStatusOES, GLenum target) @@ -76,10 +78,14 @@ GL_ENTRY(void, glClearDepthf, GLfloat d) GL_ENTRY(void, glClearDepthfOES, GLclampf depth) GL_ENTRY(void, glClearDepthx, GLfixed depth) GL_ENTRY(void, glClearDepthxOES, GLfixed depth) +GL_ENTRY(void, glClearPixelLocalStorageuiEXT, GLsizei offset, GLsizei n, const GLuint *values) GL_ENTRY(void, glClearStencil, GLint s) +GL_ENTRY(void, glClearTexImageEXT, GLuint texture, GLint level, GLenum format, GLenum type, const void *data) +GL_ENTRY(void, glClearTexSubImageEXT, GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data) GL_ENTRY(void, glClientActiveTexture, GLenum texture) GL_ENTRY(GLenum, glClientWaitSync, GLsync sync, GLbitfield flags, GLuint64 timeout) GL_ENTRY(GLenum, glClientWaitSyncAPPLE, GLsync sync, GLbitfield flags, GLuint64 timeout) +GL_ENTRY(void, glClipControlEXT, GLenum origin, GLenum depth) GL_ENTRY(void, glClipPlanef, GLenum p, const GLfloat *eqn) GL_ENTRY(void, glClipPlanefIMG, GLenum p, const GLfloat *eqn) GL_ENTRY(void, glClipPlanefOES, GLenum plane, const GLfloat *equation) @@ -102,6 +108,7 @@ GL_ENTRY(void, glCompressedTexImage3DOES, GLenum target, GLint level, GLenum int GL_ENTRY(void, glCompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) GL_ENTRY(void, glCompressedTexSubImage3D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) GL_ENTRY(void, glCompressedTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data) +GL_ENTRY(void, glConservativeRasterParameteriNV, GLenum pname, GLint param) GL_ENTRY(void, glCopyBufferSubData, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) GL_ENTRY(void, glCopyBufferSubDataNV, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) GL_ENTRY(void, glCopyImageSubData, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) @@ -121,6 +128,7 @@ GL_ENTRY(void, glCoverageMaskNV, GLboolean mask) GL_ENTRY(void, glCoverageModulationNV, GLenum components) GL_ENTRY(void, glCoverageModulationTableNV, GLsizei n, const GLfloat *v) GL_ENTRY(void, glCoverageOperationNV, GLenum operation) +GL_ENTRY(void, glCreateMemoryObjectsEXT, GLsizei n, GLuint *memoryObjects) GL_ENTRY(void, glCreatePerfQueryINTEL, GLuint queryId, GLuint *queryHandle) GL_ENTRY(GLuint, glCreateProgram, void) GL_ENTRY(GLuint, glCreateShader, GLenum type) @@ -138,6 +146,7 @@ GL_ENTRY(void, glDeleteBuffers, GLsizei n, const GLuint *buffers) GL_ENTRY(void, glDeleteFencesNV, GLsizei n, const GLuint *fences) GL_ENTRY(void, glDeleteFramebuffers, GLsizei n, const GLuint *framebuffers) GL_ENTRY(void, glDeleteFramebuffersOES, GLsizei n, const GLuint *framebuffers) +GL_ENTRY(void, glDeleteMemoryObjectsEXT, GLsizei n, const GLuint *memoryObjects) GL_ENTRY(void, glDeletePathsNV, GLuint path, GLsizei range) GL_ENTRY(void, glDeletePerfMonitorsAMD, GLsizei n, GLuint *monitors) GL_ENTRY(void, glDeletePerfQueryINTEL, GLuint queryHandle) @@ -149,6 +158,7 @@ GL_ENTRY(void, glDeleteQueriesEXT, GLsizei n, const GLuint *ids) GL_ENTRY(void, glDeleteRenderbuffers, GLsizei n, const GLuint *renderbuffers) GL_ENTRY(void, glDeleteRenderbuffersOES, GLsizei n, const GLuint *renderbuffers) GL_ENTRY(void, glDeleteSamplers, GLsizei count, const GLuint *samplers) +GL_ENTRY(void, glDeleteSemaphoresEXT, GLsizei n, const GLuint *semaphores) GL_ENTRY(void, glDeleteShader, GLuint shader) GL_ENTRY(void, glDeleteSync, GLsync sync) GL_ENTRY(void, glDeleteSyncAPPLE, GLsync sync) @@ -159,7 +169,9 @@ GL_ENTRY(void, glDeleteVertexArraysOES, GLsizei n, const GLuint *arrays) GL_ENTRY(void, glDepthFunc, GLenum func) GL_ENTRY(void, glDepthMask, GLboolean flag) GL_ENTRY(void, glDepthRangeArrayfvNV, GLuint first, GLsizei count, const GLfloat *v) +GL_ENTRY(void, glDepthRangeArrayfvOES, GLuint first, GLsizei count, const GLfloat *v) GL_ENTRY(void, glDepthRangeIndexedfNV, GLuint index, GLfloat n, GLfloat f) +GL_ENTRY(void, glDepthRangeIndexedfOES, GLuint index, GLfloat n, GLfloat f) GL_ENTRY(void, glDepthRangef, GLfloat n, GLfloat f) GL_ENTRY(void, glDepthRangefOES, GLclampf n, GLclampf f) GL_ENTRY(void, glDepthRangex, GLfixed n, GLfixed f) @@ -213,8 +225,13 @@ GL_ENTRY(void, glDrawTexsOES, GLshort x, GLshort y, GLshort z, GLshort width, GL GL_ENTRY(void, glDrawTexsvOES, const GLshort *coords) GL_ENTRY(void, glDrawTexxOES, GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) GL_ENTRY(void, glDrawTexxvOES, const GLfixed *coords) +GL_ENTRY(void, glDrawTransformFeedbackEXT, GLenum mode, GLuint id) +GL_ENTRY(void, glDrawTransformFeedbackInstancedEXT, GLenum mode, GLuint id, GLsizei instancecount) +GL_ENTRY(void, glDrawVkImageNV, GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) GL_ENTRY(void, glEGLImageTargetRenderbufferStorageOES, GLenum target, GLeglImageOES image) +GL_ENTRY(void, glEGLImageTargetTexStorageEXT, GLenum target, GLeglImageOES image, const GLint* attrib_list) GL_ENTRY(void, glEGLImageTargetTexture2DOES, GLenum target, GLeglImageOES image) +GL_ENTRY(void, glEGLImageTargetTextureStorageEXT, GLuint texture, GLeglImageOES image, const GLint* attrib_list) GL_ENTRY(void, glEnable, GLenum cap) GL_ENTRY(void, glEnableClientState, GLenum array) GL_ENTRY(void, glEnableDriverControlQCOM, GLuint driverControl) @@ -256,18 +273,25 @@ GL_ENTRY(void, glFogxOES, GLenum pname, GLfixed param) GL_ENTRY(void, glFogxv, GLenum pname, const GLfixed *param) GL_ENTRY(void, glFogxvOES, GLenum pname, const GLfixed *param) GL_ENTRY(void, glFragmentCoverageColorNV, GLuint color) +GL_ENTRY(void, glFramebufferFetchBarrierEXT, void) +GL_ENTRY(void, glFramebufferFetchBarrierQCOM, void) +GL_ENTRY(void, glFramebufferFoveationConfigQCOM, GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures) +GL_ENTRY(void, glFramebufferFoveationParametersQCOM, GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea) GL_ENTRY(void, glFramebufferParameteri, GLenum target, GLenum pname, GLint param) +GL_ENTRY(void, glFramebufferPixelLocalStorageSizeEXT, GLuint target, GLsizei size) GL_ENTRY(void, glFramebufferRenderbuffer, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) GL_ENTRY(void, glFramebufferRenderbufferOES, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) GL_ENTRY(void, glFramebufferSampleLocationsfvNV, GLenum target, GLuint start, GLsizei count, const GLfloat *v) GL_ENTRY(void, glFramebufferTexture, GLenum target, GLenum attachment, GLuint texture, GLint level) GL_ENTRY(void, glFramebufferTexture2D, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) +GL_ENTRY(void, glFramebufferTexture2DDownsampleIMG, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale) GL_ENTRY(void, glFramebufferTexture2DMultisampleEXT, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) GL_ENTRY(void, glFramebufferTexture2DMultisampleIMG, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) GL_ENTRY(void, glFramebufferTexture2DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) GL_ENTRY(void, glFramebufferTexture3DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) GL_ENTRY(void, glFramebufferTextureEXT, GLenum target, GLenum attachment, GLuint texture, GLint level) GL_ENTRY(void, glFramebufferTextureLayer, GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) +GL_ENTRY(void, glFramebufferTextureLayerDownsampleIMG, GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale) GL_ENTRY(void, glFramebufferTextureMultisampleMultiviewOVR, GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews) GL_ENTRY(void, glFramebufferTextureMultiviewOVR, GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews) GL_ENTRY(void, glFramebufferTextureOES, GLenum target, GLenum attachment, GLuint texture, GLint level) @@ -289,6 +313,7 @@ GL_ENTRY(void, glGenQueriesEXT, GLsizei n, GLuint *ids) GL_ENTRY(void, glGenRenderbuffers, GLsizei n, GLuint *renderbuffers) GL_ENTRY(void, glGenRenderbuffersOES, GLsizei n, GLuint *renderbuffers) GL_ENTRY(void, glGenSamplers, GLsizei count, GLuint *samplers) +GL_ENTRY(void, glGenSemaphoresEXT, GLsizei n, GLuint *semaphores) GL_ENTRY(void, glGenTextures, GLsizei n, GLuint *textures) GL_ENTRY(void, glGenTransformFeedbacks, GLsizei n, GLuint *ids) GL_ENTRY(void, glGenVertexArrays, GLsizei n, GLuint *arrays) @@ -323,12 +348,14 @@ GL_ENTRY(void, glGetFirstPerfQueryIdINTEL, GLuint *queryId) GL_ENTRY(void, glGetFixedv, GLenum pname, GLfixed *params) GL_ENTRY(void, glGetFixedvOES, GLenum pname, GLfixed *params) GL_ENTRY(void, glGetFloati_vNV, GLenum target, GLuint index, GLfloat *data) +GL_ENTRY(void, glGetFloati_vOES, GLenum target, GLuint index, GLfloat *data) GL_ENTRY(void, glGetFloatv, GLenum pname, GLfloat *data) GL_ENTRY(GLint, glGetFragDataIndexEXT, GLuint program, const GLchar *name) GL_ENTRY(GLint, glGetFragDataLocation, GLuint program, const GLchar *name) GL_ENTRY(void, glGetFramebufferAttachmentParameteriv, GLenum target, GLenum attachment, GLenum pname, GLint *params) GL_ENTRY(void, glGetFramebufferAttachmentParameterivOES, GLenum target, GLenum attachment, GLenum pname, GLint *params) GL_ENTRY(void, glGetFramebufferParameteriv, GLenum target, GLenum pname, GLint *params) +GL_ENTRY(GLsizei, glGetFramebufferPixelLocalStorageSizeEXT, GLuint target) GL_ENTRY(GLenum, glGetGraphicsResetStatus, void) GL_ENTRY(GLenum, glGetGraphicsResetStatusEXT, void) GL_ENTRY(GLenum, glGetGraphicsResetStatusKHR, void) @@ -347,6 +374,7 @@ GL_ENTRY(void, glGetLightxvOES, GLenum light, GLenum pname, GLfixed *params) GL_ENTRY(void, glGetMaterialfv, GLenum face, GLenum pname, GLfloat *params) GL_ENTRY(void, glGetMaterialxv, GLenum face, GLenum pname, GLfixed *params) GL_ENTRY(void, glGetMaterialxvOES, GLenum face, GLenum pname, GLfixed *params) +GL_ENTRY(void, glGetMemoryObjectParameterivEXT, GLuint memoryObject, GLenum pname, GLint *params) GL_ENTRY(void, glGetMultisamplefv, GLenum pname, GLuint index, GLfloat *val) GL_ENTRY(void, glGetNextPerfQueryIdINTEL, GLuint queryId, GLuint *nextQueryId) GL_ENTRY(void, glGetObjectLabel, GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label) @@ -370,7 +398,7 @@ GL_ENTRY(void, glGetPerfMonitorCounterStringAMD, GLuint group, GLuint counter, G GL_ENTRY(void, glGetPerfMonitorCountersAMD, GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) GL_ENTRY(void, glGetPerfMonitorGroupStringAMD, GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) GL_ENTRY(void, glGetPerfMonitorGroupsAMD, GLint *numGroups, GLsizei groupsSize, GLuint *groups) -GL_ENTRY(void, glGetPerfQueryDataINTEL, GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten) +GL_ENTRY(void, glGetPerfQueryDataINTEL, GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten) GL_ENTRY(void, glGetPerfQueryIdByNameINTEL, GLchar *queryName, GLuint *queryId) GL_ENTRY(void, glGetPerfQueryInfoINTEL, GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask) GL_ENTRY(void, glGetPointerv, GLenum pname, void **params) @@ -407,6 +435,7 @@ GL_ENTRY(void, glGetSamplerParameterIuivEXT, GLuint sampler, GLenum pname, GLuin GL_ENTRY(void, glGetSamplerParameterIuivOES, GLuint sampler, GLenum pname, GLuint *params) GL_ENTRY(void, glGetSamplerParameterfv, GLuint sampler, GLenum pname, GLfloat *params) GL_ENTRY(void, glGetSamplerParameteriv, GLuint sampler, GLenum pname, GLint *params) +GL_ENTRY(void, glGetSemaphoreParameterui64vEXT, GLuint semaphore, GLenum pname, GLuint64 *params) GL_ENTRY(void, glGetShaderInfoLog, GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) GL_ENTRY(void, glGetShaderPrecisionFormat, GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) GL_ENTRY(void, glGetShaderSource, GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) @@ -434,7 +463,9 @@ GL_ENTRY(void, glGetTexParameterfv, GLenum target, GLenum pname, GLfloat *params GL_ENTRY(void, glGetTexParameteriv, GLenum target, GLenum pname, GLint *params) GL_ENTRY(void, glGetTexParameterxv, GLenum target, GLenum pname, GLfixed *params) GL_ENTRY(void, glGetTexParameterxvOES, GLenum target, GLenum pname, GLfixed *params) +GL_ENTRY(GLuint64, glGetTextureHandleIMG, GLuint texture) GL_ENTRY(GLuint64, glGetTextureHandleNV, GLuint texture) +GL_ENTRY(GLuint64, glGetTextureSamplerHandleIMG, GLuint texture, GLuint sampler) GL_ENTRY(GLuint64, glGetTextureSamplerHandleNV, GLuint texture, GLuint sampler) GL_ENTRY(void, glGetTransformFeedbackVarying, GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) GL_ENTRY(void, glGetTranslatedShaderSourceANGLE, GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source) @@ -442,13 +473,17 @@ GL_ENTRY(GLuint, glGetUniformBlockIndex, GLuint program, const GLchar *uniformBl GL_ENTRY(void, glGetUniformIndices, GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices) GL_ENTRY(GLint, glGetUniformLocation, GLuint program, const GLchar *name) GL_ENTRY(void, glGetUniformfv, GLuint program, GLint location, GLfloat *params) +GL_ENTRY(void, glGetUniformi64vNV, GLuint program, GLint location, GLint64EXT *params) GL_ENTRY(void, glGetUniformiv, GLuint program, GLint location, GLint *params) GL_ENTRY(void, glGetUniformuiv, GLuint program, GLint location, GLuint *params) +GL_ENTRY(void, glGetUnsignedBytei_vEXT, GLenum target, GLuint index, GLubyte *data) +GL_ENTRY(void, glGetUnsignedBytevEXT, GLenum pname, GLubyte *data) GL_ENTRY(void, glGetVertexAttribIiv, GLuint index, GLenum pname, GLint *params) GL_ENTRY(void, glGetVertexAttribIuiv, GLuint index, GLenum pname, GLuint *params) GL_ENTRY(void, glGetVertexAttribPointerv, GLuint index, GLenum pname, void **pointer) GL_ENTRY(void, glGetVertexAttribfv, GLuint index, GLenum pname, GLfloat *params) GL_ENTRY(void, glGetVertexAttribiv, GLuint index, GLenum pname, GLint *params) +GL_ENTRY(GLVULKANPROCNV, glGetVkProcAddrNV, const GLchar *name) GL_ENTRY(void, glGetnUniformfv, GLuint program, GLint location, GLsizei bufSize, GLfloat *params) GL_ENTRY(void, glGetnUniformfvEXT, GLuint program, GLint location, GLsizei bufSize, GLfloat *params) GL_ENTRY(void, glGetnUniformfvKHR, GLuint program, GLint location, GLsizei bufSize, GLfloat *params) @@ -458,6 +493,8 @@ GL_ENTRY(void, glGetnUniformivKHR, GLuint program, GLint location, GLsizei bufSi GL_ENTRY(void, glGetnUniformuiv, GLuint program, GLint location, GLsizei bufSize, GLuint *params) GL_ENTRY(void, glGetnUniformuivKHR, GLuint program, GLint location, GLsizei bufSize, GLuint *params) GL_ENTRY(void, glHint, GLenum target, GLenum mode) +GL_ENTRY(void, glImportMemoryFdEXT, GLuint memory, GLuint64 size, GLenum handleType, GLint fd) +GL_ENTRY(void, glImportSemaphoreFdEXT, GLuint semaphore, GLenum handleType, GLint fd) GL_ENTRY(void, glInsertEventMarkerEXT, GLsizei length, const GLchar *marker) GL_ENTRY(void, glInterpolatePathsNV, GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) GL_ENTRY(void, glInvalidateFramebuffer, GLenum target, GLsizei numAttachments, const GLenum *attachments) @@ -472,6 +509,7 @@ GL_ENTRY(GLboolean, glIsFenceNV, GLuint fence) GL_ENTRY(GLboolean, glIsFramebuffer, GLuint framebuffer) GL_ENTRY(GLboolean, glIsFramebufferOES, GLuint framebuffer) GL_ENTRY(GLboolean, glIsImageHandleResidentNV, GLuint64 handle) +GL_ENTRY(GLboolean, glIsMemoryObjectEXT, GLuint memoryObject) GL_ENTRY(GLboolean, glIsPathNV, GLuint path) GL_ENTRY(GLboolean, glIsPointInFillPathNV, GLuint path, GLuint mask, GLfloat x, GLfloat y) GL_ENTRY(GLboolean, glIsPointInStrokePathNV, GLuint path, GLfloat x, GLfloat y) @@ -483,6 +521,7 @@ GL_ENTRY(GLboolean, glIsQueryEXT, GLuint id) GL_ENTRY(GLboolean, glIsRenderbuffer, GLuint renderbuffer) GL_ENTRY(GLboolean, glIsRenderbufferOES, GLuint renderbuffer) GL_ENTRY(GLboolean, glIsSampler, GLuint sampler) +GL_ENTRY(GLboolean, glIsSemaphoreEXT, GLuint semaphore) GL_ENTRY(GLboolean, glIsShader, GLuint shader) GL_ENTRY(GLboolean, glIsSync, GLsync sync) GL_ENTRY(GLboolean, glIsSyncAPPLE, GLsync sync) @@ -527,16 +566,37 @@ GL_ENTRY(void, glMaterialx, GLenum face, GLenum pname, GLfixed param) GL_ENTRY(void, glMaterialxOES, GLenum face, GLenum pname, GLfixed param) GL_ENTRY(void, glMaterialxv, GLenum face, GLenum pname, const GLfixed *param) GL_ENTRY(void, glMaterialxvOES, GLenum face, GLenum pname, const GLfixed *param) +GL_ENTRY(void, glMatrixFrustumEXT, GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) GL_ENTRY(void, glMatrixIndexPointerOES, GLint size, GLenum type, GLsizei stride, const void *pointer) GL_ENTRY(void, glMatrixLoad3x2fNV, GLenum matrixMode, const GLfloat *m) GL_ENTRY(void, glMatrixLoad3x3fNV, GLenum matrixMode, const GLfloat *m) +GL_ENTRY(void, glMatrixLoadIdentityEXT, GLenum mode) GL_ENTRY(void, glMatrixLoadTranspose3x3fNV, GLenum matrixMode, const GLfloat *m) +GL_ENTRY(void, glMatrixLoadTransposedEXT, GLenum mode, const GLdouble *m) +GL_ENTRY(void, glMatrixLoadTransposefEXT, GLenum mode, const GLfloat *m) +GL_ENTRY(void, glMatrixLoaddEXT, GLenum mode, const GLdouble *m) +GL_ENTRY(void, glMatrixLoadfEXT, GLenum mode, const GLfloat *m) GL_ENTRY(void, glMatrixMode, GLenum mode) GL_ENTRY(void, glMatrixMult3x2fNV, GLenum matrixMode, const GLfloat *m) GL_ENTRY(void, glMatrixMult3x3fNV, GLenum matrixMode, const GLfloat *m) GL_ENTRY(void, glMatrixMultTranspose3x3fNV, GLenum matrixMode, const GLfloat *m) +GL_ENTRY(void, glMatrixMultTransposedEXT, GLenum mode, const GLdouble *m) +GL_ENTRY(void, glMatrixMultTransposefEXT, GLenum mode, const GLfloat *m) +GL_ENTRY(void, glMatrixMultdEXT, GLenum mode, const GLdouble *m) +GL_ENTRY(void, glMatrixMultfEXT, GLenum mode, const GLfloat *m) +GL_ENTRY(void, glMatrixOrthoEXT, GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) +GL_ENTRY(void, glMatrixPopEXT, GLenum mode) +GL_ENTRY(void, glMatrixPushEXT, GLenum mode) +GL_ENTRY(void, glMatrixRotatedEXT, GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z) +GL_ENTRY(void, glMatrixRotatefEXT, GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +GL_ENTRY(void, glMatrixScaledEXT, GLenum mode, GLdouble x, GLdouble y, GLdouble z) +GL_ENTRY(void, glMatrixScalefEXT, GLenum mode, GLfloat x, GLfloat y, GLfloat z) +GL_ENTRY(void, glMatrixTranslatedEXT, GLenum mode, GLdouble x, GLdouble y, GLdouble z) +GL_ENTRY(void, glMatrixTranslatefEXT, GLenum mode, GLfloat x, GLfloat y, GLfloat z) +GL_ENTRY(void, glMaxShaderCompilerThreadsKHR, GLuint count) GL_ENTRY(void, glMemoryBarrier, GLbitfield barriers) GL_ENTRY(void, glMemoryBarrierByRegion, GLbitfield barriers) +GL_ENTRY(void, glMemoryObjectParameterivEXT, GLuint memoryObject, GLenum pname, const GLint *params) GL_ENTRY(void, glMinSampleShading, GLfloat value) GL_ENTRY(void, glMinSampleShadingOES, GLfloat value) GL_ENTRY(void, glMultMatrixf, const GLfloat *m) @@ -551,6 +611,8 @@ GL_ENTRY(void, glMultiDrawElementsIndirectEXT, GLenum mode, GLenum type, const v GL_ENTRY(void, glMultiTexCoord4f, GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) GL_ENTRY(void, glMultiTexCoord4x, GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) GL_ENTRY(void, glMultiTexCoord4xOES, GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) +GL_ENTRY(void, glNamedBufferStorageExternalEXT, GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags) +GL_ENTRY(void, glNamedBufferStorageMemEXT, GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset) GL_ENTRY(void, glNamedFramebufferSampleLocationsfvNV, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v) GL_ENTRY(void, glNormal3f, GLfloat nx, GLfloat ny, GLfloat nz) GL_ENTRY(void, glNormal3x, GLfixed nx, GLfixed ny, GLfixed nz) @@ -600,6 +662,7 @@ GL_ENTRY(void, glPointSizex, GLfixed size) GL_ENTRY(void, glPointSizexOES, GLfixed size) GL_ENTRY(void, glPolygonModeNV, GLenum face, GLenum mode) GL_ENTRY(void, glPolygonOffset, GLfloat factor, GLfloat units) +GL_ENTRY(void, glPolygonOffsetClampEXT, GLfloat factor, GLfloat units, GLfloat clamp) GL_ENTRY(void, glPolygonOffsetx, GLfixed factor, GLfixed units) GL_ENTRY(void, glPolygonOffsetxOES, GLfixed factor, GLfixed units) GL_ENTRY(void, glPopDebugGroup, void) @@ -619,10 +682,14 @@ GL_ENTRY(void, glProgramUniform1fEXT, GLuint program, GLint location, GLfloat v0 GL_ENTRY(void, glProgramUniform1fv, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform1fvEXT, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform1i, GLuint program, GLint location, GLint v0) +GL_ENTRY(void, glProgramUniform1i64NV, GLuint program, GLint location, GLint64EXT x) +GL_ENTRY(void, glProgramUniform1i64vNV, GLuint program, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glProgramUniform1iEXT, GLuint program, GLint location, GLint v0) GL_ENTRY(void, glProgramUniform1iv, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform1ivEXT, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform1ui, GLuint program, GLint location, GLuint v0) +GL_ENTRY(void, glProgramUniform1ui64NV, GLuint program, GLint location, GLuint64EXT x) +GL_ENTRY(void, glProgramUniform1ui64vNV, GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glProgramUniform1uiEXT, GLuint program, GLint location, GLuint v0) GL_ENTRY(void, glProgramUniform1uiv, GLuint program, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glProgramUniform1uivEXT, GLuint program, GLint location, GLsizei count, const GLuint *value) @@ -631,10 +698,14 @@ GL_ENTRY(void, glProgramUniform2fEXT, GLuint program, GLint location, GLfloat v0 GL_ENTRY(void, glProgramUniform2fv, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform2fvEXT, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform2i, GLuint program, GLint location, GLint v0, GLint v1) +GL_ENTRY(void, glProgramUniform2i64NV, GLuint program, GLint location, GLint64EXT x, GLint64EXT y) +GL_ENTRY(void, glProgramUniform2i64vNV, GLuint program, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glProgramUniform2iEXT, GLuint program, GLint location, GLint v0, GLint v1) GL_ENTRY(void, glProgramUniform2iv, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform2ivEXT, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform2ui, GLuint program, GLint location, GLuint v0, GLuint v1) +GL_ENTRY(void, glProgramUniform2ui64NV, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) +GL_ENTRY(void, glProgramUniform2ui64vNV, GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glProgramUniform2uiEXT, GLuint program, GLint location, GLuint v0, GLuint v1) GL_ENTRY(void, glProgramUniform2uiv, GLuint program, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glProgramUniform2uivEXT, GLuint program, GLint location, GLsizei count, const GLuint *value) @@ -643,10 +714,14 @@ GL_ENTRY(void, glProgramUniform3fEXT, GLuint program, GLint location, GLfloat v0 GL_ENTRY(void, glProgramUniform3fv, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform3fvEXT, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform3i, GLuint program, GLint location, GLint v0, GLint v1, GLint v2) +GL_ENTRY(void, glProgramUniform3i64NV, GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) +GL_ENTRY(void, glProgramUniform3i64vNV, GLuint program, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glProgramUniform3iEXT, GLuint program, GLint location, GLint v0, GLint v1, GLint v2) GL_ENTRY(void, glProgramUniform3iv, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform3ivEXT, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform3ui, GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) +GL_ENTRY(void, glProgramUniform3ui64NV, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) +GL_ENTRY(void, glProgramUniform3ui64vNV, GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glProgramUniform3uiEXT, GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) GL_ENTRY(void, glProgramUniform3uiv, GLuint program, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glProgramUniform3uivEXT, GLuint program, GLint location, GLsizei count, const GLuint *value) @@ -655,14 +730,20 @@ GL_ENTRY(void, glProgramUniform4fEXT, GLuint program, GLint location, GLfloat v0 GL_ENTRY(void, glProgramUniform4fv, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform4fvEXT, GLuint program, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glProgramUniform4i, GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +GL_ENTRY(void, glProgramUniform4i64NV, GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) +GL_ENTRY(void, glProgramUniform4i64vNV, GLuint program, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glProgramUniform4iEXT, GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) GL_ENTRY(void, glProgramUniform4iv, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform4ivEXT, GLuint program, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glProgramUniform4ui, GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +GL_ENTRY(void, glProgramUniform4ui64NV, GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) +GL_ENTRY(void, glProgramUniform4ui64vNV, GLuint program, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glProgramUniform4uiEXT, GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) GL_ENTRY(void, glProgramUniform4uiv, GLuint program, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glProgramUniform4uivEXT, GLuint program, GLint location, GLsizei count, const GLuint *value) +GL_ENTRY(void, glProgramUniformHandleui64IMG, GLuint program, GLint location, GLuint64 value) GL_ENTRY(void, glProgramUniformHandleui64NV, GLuint program, GLint location, GLuint64 value) +GL_ENTRY(void, glProgramUniformHandleui64vIMG, GLuint program, GLint location, GLsizei count, const GLuint64 *values) GL_ENTRY(void, glProgramUniformHandleui64vNV, GLuint program, GLint location, GLsizei count, const GLuint64 *values) GL_ENTRY(void, glProgramUniformMatrix2fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) GL_ENTRY(void, glProgramUniformMatrix2fvEXT, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) @@ -730,13 +811,20 @@ GL_ENTRY(void, glScalex, GLfixed x, GLfixed y, GLfixed z) GL_ENTRY(void, glScalexOES, GLfixed x, GLfixed y, GLfixed z) GL_ENTRY(void, glScissor, GLint x, GLint y, GLsizei width, GLsizei height) GL_ENTRY(void, glScissorArrayvNV, GLuint first, GLsizei count, const GLint *v) +GL_ENTRY(void, glScissorArrayvOES, GLuint first, GLsizei count, const GLint *v) GL_ENTRY(void, glScissorIndexedNV, GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) +GL_ENTRY(void, glScissorIndexedOES, GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) GL_ENTRY(void, glScissorIndexedvNV, GLuint index, const GLint *v) +GL_ENTRY(void, glScissorIndexedvOES, GLuint index, const GLint *v) GL_ENTRY(void, glSelectPerfMonitorCountersAMD, GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList) +GL_ENTRY(void, glSemaphoreParameterui64vEXT, GLuint semaphore, GLenum pname, const GLuint64 *params) GL_ENTRY(void, glSetFenceNV, GLuint fence, GLenum condition) GL_ENTRY(void, glShadeModel, GLenum mode) GL_ENTRY(void, glShaderBinary, GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) GL_ENTRY(void, glShaderSource, GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length) +GL_ENTRY(void, glSignalSemaphoreEXT, GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts) +GL_ENTRY(void, glSignalVkFenceNV, GLuint64 vkFence) +GL_ENTRY(void, glSignalVkSemaphoreNV, GLuint64 vkSemaphore) GL_ENTRY(void, glStartTilingQCOM, GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) GL_ENTRY(void, glStencilFillPathInstancedNV, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues) GL_ENTRY(void, glStencilFillPathNV, GLuint path, GLenum fillMode, GLuint mask) @@ -801,12 +889,21 @@ GL_ENTRY(void, glTexStorage3D, GLenum target, GLsizei levels, GLenum internalfor GL_ENTRY(void, glTexStorage3DEXT, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) GL_ENTRY(void, glTexStorage3DMultisample, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) GL_ENTRY(void, glTexStorage3DMultisampleOES, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) +GL_ENTRY(void, glTexStorageMem2DEXT, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) +GL_ENTRY(void, glTexStorageMem2DMultisampleEXT, GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) +GL_ENTRY(void, glTexStorageMem3DEXT, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) +GL_ENTRY(void, glTexStorageMem3DMultisampleEXT, GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) GL_ENTRY(void, glTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) GL_ENTRY(void, glTexSubImage3D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) GL_ENTRY(void, glTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels) +GL_ENTRY(void, glTextureFoveationParametersQCOM, GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea) GL_ENTRY(void, glTextureStorage1DEXT, GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) GL_ENTRY(void, glTextureStorage2DEXT, GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) GL_ENTRY(void, glTextureStorage3DEXT, GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) +GL_ENTRY(void, glTextureStorageMem2DEXT, GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset) +GL_ENTRY(void, glTextureStorageMem2DMultisampleEXT, GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) +GL_ENTRY(void, glTextureStorageMem3DEXT, GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset) +GL_ENTRY(void, glTextureStorageMem3DMultisampleEXT, GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset) GL_ENTRY(void, glTextureViewEXT, GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) GL_ENTRY(void, glTextureViewOES, GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) GL_ENTRY(void, glTransformFeedbackVaryings, GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode) @@ -817,29 +914,47 @@ GL_ENTRY(void, glTranslatexOES, GLfixed x, GLfixed y, GLfixed z) GL_ENTRY(void, glUniform1f, GLint location, GLfloat v0) GL_ENTRY(void, glUniform1fv, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glUniform1i, GLint location, GLint v0) +GL_ENTRY(void, glUniform1i64NV, GLint location, GLint64EXT x) +GL_ENTRY(void, glUniform1i64vNV, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glUniform1iv, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glUniform1ui, GLint location, GLuint v0) +GL_ENTRY(void, glUniform1ui64NV, GLint location, GLuint64EXT x) +GL_ENTRY(void, glUniform1ui64vNV, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glUniform1uiv, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glUniform2f, GLint location, GLfloat v0, GLfloat v1) GL_ENTRY(void, glUniform2fv, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glUniform2i, GLint location, GLint v0, GLint v1) +GL_ENTRY(void, glUniform2i64NV, GLint location, GLint64EXT x, GLint64EXT y) +GL_ENTRY(void, glUniform2i64vNV, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glUniform2iv, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glUniform2ui, GLint location, GLuint v0, GLuint v1) +GL_ENTRY(void, glUniform2ui64NV, GLint location, GLuint64EXT x, GLuint64EXT y) +GL_ENTRY(void, glUniform2ui64vNV, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glUniform2uiv, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glUniform3f, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) GL_ENTRY(void, glUniform3fv, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glUniform3i, GLint location, GLint v0, GLint v1, GLint v2) +GL_ENTRY(void, glUniform3i64NV, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) +GL_ENTRY(void, glUniform3i64vNV, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glUniform3iv, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glUniform3ui, GLint location, GLuint v0, GLuint v1, GLuint v2) +GL_ENTRY(void, glUniform3ui64NV, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) +GL_ENTRY(void, glUniform3ui64vNV, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glUniform3uiv, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glUniform4f, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) GL_ENTRY(void, glUniform4fv, GLint location, GLsizei count, const GLfloat *value) GL_ENTRY(void, glUniform4i, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) +GL_ENTRY(void, glUniform4i64NV, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) +GL_ENTRY(void, glUniform4i64vNV, GLint location, GLsizei count, const GLint64EXT *value) GL_ENTRY(void, glUniform4iv, GLint location, GLsizei count, const GLint *value) GL_ENTRY(void, glUniform4ui, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) +GL_ENTRY(void, glUniform4ui64NV, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) +GL_ENTRY(void, glUniform4ui64vNV, GLint location, GLsizei count, const GLuint64EXT *value) GL_ENTRY(void, glUniform4uiv, GLint location, GLsizei count, const GLuint *value) GL_ENTRY(void, glUniformBlockBinding, GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) +GL_ENTRY(void, glUniformHandleui64IMG, GLint location, GLuint64 value) GL_ENTRY(void, glUniformHandleui64NV, GLint location, GLuint64 value) +GL_ENTRY(void, glUniformHandleui64vIMG, GLint location, GLsizei count, const GLuint64 *value) GL_ENTRY(void, glUniformHandleui64vNV, GLint location, GLsizei count, const GLuint64 *value) GL_ENTRY(void, glUniformMatrix2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) GL_ENTRY(void, glUniformMatrix2x3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) @@ -889,9 +1004,17 @@ GL_ENTRY(void, glVertexBindingDivisor, GLuint bindingindex, GLuint divisor) GL_ENTRY(void, glVertexPointer, GLint size, GLenum type, GLsizei stride, const void *pointer) GL_ENTRY(void, glViewport, GLint x, GLint y, GLsizei width, GLsizei height) GL_ENTRY(void, glViewportArrayvNV, GLuint first, GLsizei count, const GLfloat *v) +GL_ENTRY(void, glViewportArrayvOES, GLuint first, GLsizei count, const GLfloat *v) GL_ENTRY(void, glViewportIndexedfNV, GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) +GL_ENTRY(void, glViewportIndexedfOES, GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) GL_ENTRY(void, glViewportIndexedfvNV, GLuint index, const GLfloat *v) +GL_ENTRY(void, glViewportIndexedfvOES, GLuint index, const GLfloat *v) +GL_ENTRY(void, glViewportPositionWScaleNV, GLuint index, GLfloat xcoeff, GLfloat ycoeff) +GL_ENTRY(void, glViewportSwizzleNV, GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew) +GL_ENTRY(void, glWaitSemaphoreEXT, GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts) GL_ENTRY(void, glWaitSync, GLsync sync, GLbitfield flags, GLuint64 timeout) GL_ENTRY(void, glWaitSyncAPPLE, GLsync sync, GLbitfield flags, GLuint64 timeout) +GL_ENTRY(void, glWaitVkSemaphoreNV, GLuint64 vkSemaphore) GL_ENTRY(void, glWeightPathsNV, GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights) GL_ENTRY(void, glWeightPointerOES, GLint size, GLenum type, GLsizei stride, const void *pointer) +GL_ENTRY(void, glWindowRectanglesEXT, GLenum mode, GLsizei count, const GLint *box) diff --git a/opengl/libs/enums.in b/opengl/libs/enums.in index e052816e9c..d09004f5be 100644 --- a/opengl/libs/enums.in +++ b/opengl/libs/enums.in @@ -1223,6 +1223,8 @@ GL_ENUM(0x8823,GL_WRITEONLY_RENDERING_QCOM) GL_ENUM(0x9285,GL_BLEND_ADVANCED_COHERENT_KHR) GL_ENUM(0x82FB,GL_CONTEXT_RELEASE_BEHAVIOR_KHR) GL_ENUM(0x82FC,GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR) +GL_ENUM(0x91B0,GL_MAX_SHADER_COMPILER_THREADS_KHR) +GL_ENUM(0x91B1,GL_COMPLETION_STATUS_KHR) GL_ENUM(0x8D66,GL_SAMPLER_EXTERNAL_OES) GL_ENUM(0x93C0,GL_COMPRESSED_RGBA_ASTC_3x3x3_OES) GL_ENUM(0x93C1,GL_COMPRESSED_RGBA_ASTC_4x3x3_OES) @@ -1251,6 +1253,10 @@ GL_ENUM(0x82DD,GL_TEXTURE_VIEW_MIN_LAYER_OES) GL_ENUM(0x82DE,GL_TEXTURE_VIEW_NUM_LAYERS_OES) GL_ENUM(0x8DF6,GL_UNSIGNED_INT_10_10_10_2_OES) GL_ENUM(0x8DF7,GL_INT_10_10_10_2_OES) +GL_ENUM(0x825B,GL_MAX_VIEWPORTS_OES) +GL_ENUM(0x825C,GL_VIEWPORT_SUBPIXEL_BITS_OES) +GL_ENUM(0x825D,GL_VIEWPORT_BOUNDS_RANGE_OES) +GL_ENUM(0x825F,GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES) GL_ENUM(0x8BC0,GL_COUNTER_TYPE_AMD) GL_ENUM(0x8BC1,GL_COUNTER_RANGE_AMD) GL_ENUM(0x8BC2,GL_UNSIGNED_INT64_AMD) @@ -1288,6 +1294,14 @@ GL_ENUM(0x930F,GL_LOCATION_INDEX_EXT) GL_ENUM(0x88FC,GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT) GL_ENUM(0x821F,GL_BUFFER_IMMUTABLE_STORAGE_EXT) GL_ENUM(0x8220,GL_BUFFER_STORAGE_FLAGS_EXT) +GL_ENUM(0x8CA1,GL_LOWER_LEFT_EXT) +GL_ENUM(0x8CA2,GL_UPPER_LEFT_EXT) +GL_ENUM(0x935E,GL_NEGATIVE_ONE_TO_ONE_EXT) +GL_ENUM(0x935F,GL_ZERO_TO_ONE_EXT) +GL_ENUM(0x935C,GL_CLIP_ORIGIN_EXT) +GL_ENUM(0x935D,GL_CLIP_DEPTH_MODE_EXT) +GL_ENUM(0x82F9,GL_MAX_CULL_DISTANCES_EXT) +GL_ENUM(0x82FA,GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT) GL_ENUM(0x8A4F,GL_PROGRAM_PIPELINE_OBJECT_EXT) GL_ENUM(0x8B40,GL_PROGRAM_OBJECT_EXT) GL_ENUM(0x8B48,GL_SHADER_OBJECT_EXT) @@ -1298,10 +1312,25 @@ GL_ENUM(0x8864,GL_QUERY_COUNTER_BITS_EXT) GL_ENUM(0x88BF,GL_TIME_ELAPSED_EXT) GL_ENUM(0x8E28,GL_TIMESTAMP_EXT) GL_ENUM(0x8FBB,GL_GPU_DISJOINT_EXT) +GL_ENUM(0x9580,GL_TEXTURE_TILING_EXT) +GL_ENUM(0x9581,GL_DEDICATED_MEMORY_OBJECT_EXT) +GL_ENUM(0x959B,GL_PROTECTED_MEMORY_OBJECT_EXT) +GL_ENUM(0x9582,GL_NUM_TILING_TYPES_EXT) +GL_ENUM(0x9583,GL_TILING_TYPES_EXT) +GL_ENUM(0x9584,GL_OPTIMAL_TILING_EXT) +GL_ENUM(0x9585,GL_LINEAR_TILING_EXT) +GL_ENUM(0x9596,GL_NUM_DEVICE_UUIDS_EXT) +GL_ENUM(0x9597,GL_DEVICE_UUID_EXT) +GL_ENUM(0x9598,GL_DRIVER_UUID_EXT) +GL_ENUM(0x9586,GL_HANDLE_TYPE_OPAQUE_FD_EXT) +GL_ENUM(0x9599,GL_DEVICE_LUID_EXT) +GL_ENUM(0x959A,GL_DEVICE_NODE_MASK_EXT) GL_ENUM(0x90F0,GL_COLOR_ATTACHMENT_EXT) GL_ENUM(0x90F1,GL_MULTIVIEW_EXT) GL_ENUM(0x0C01,GL_DRAW_BUFFER_EXT) GL_ENUM(0x90F2,GL_MAX_MULTIVIEW_BUFFERS_EXT) +GL_ENUM(0x8E1B,GL_POLYGON_OFFSET_CLAMP_EXT) +GL_ENUM(0x8BFA,GL_TEXTURE_PROTECTED_EXT) GL_ENUM(0x8A54,GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT) GL_ENUM(0x8A55,GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT) GL_ENUM(0x8A56,GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT) @@ -1318,10 +1347,22 @@ GL_ENUM(0x8F98,GL_R16_SNORM_EXT) GL_ENUM(0x8F99,GL_RG16_SNORM_EXT) GL_ENUM(0x8F9B,GL_RGBA16_SNORM_EXT) GL_ENUM(0x8DB9,GL_FRAMEBUFFER_SRGB_EXT) +GL_ENUM(0x958D,GL_LAYOUT_GENERAL_EXT) +GL_ENUM(0x958E,GL_LAYOUT_COLOR_ATTACHMENT_EXT) +GL_ENUM(0x958F,GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT) +GL_ENUM(0x9590,GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT) +GL_ENUM(0x9591,GL_LAYOUT_SHADER_READ_ONLY_EXT) +GL_ENUM(0x9592,GL_LAYOUT_TRANSFER_SRC_EXT) +GL_ENUM(0x9593,GL_LAYOUT_TRANSFER_DST_EXT) +GL_ENUM(0x9530,GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT) +GL_ENUM(0x9531,GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT) GL_ENUM(0x8A52,GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT) GL_ENUM(0x8F63,GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT) GL_ENUM(0x8F67,GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT) GL_ENUM(0x8F64,GL_SHADER_PIXEL_LOCAL_STORAGE_EXT) +GL_ENUM(0x9650,GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT) +GL_ENUM(0x9651,GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT) +GL_ENUM(0x9652,GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT) GL_ENUM(0x91A6,GL_TEXTURE_SPARSE_EXT) GL_ENUM(0x91A7,GL_VIRTUAL_PAGE_SIZE_INDEX_EXT) GL_ENUM(0x91AA,GL_NUM_SPARSE_LEVELS_EXT) @@ -1333,6 +1374,23 @@ GL_ENUM(0x9198,GL_MAX_SPARSE_TEXTURE_SIZE_EXT) GL_ENUM(0x9199,GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT) GL_ENUM(0x919A,GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT) GL_ENUM(0x91A9,GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT) +GL_ENUM(0x8F69,GL_TEXTURE_ASTC_DECODE_PRECISION_EXT) +GL_ENUM(0x8E8C,GL_COMPRESSED_RGBA_BPTC_UNORM_EXT) +GL_ENUM(0x8E8D,GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT) +GL_ENUM(0x8E8E,GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT) +GL_ENUM(0x8E8F,GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT) +GL_ENUM(0x8DBB,GL_COMPRESSED_RED_RGTC1_EXT) +GL_ENUM(0x8DBC,GL_COMPRESSED_SIGNED_RED_RGTC1_EXT) +GL_ENUM(0x8DBD,GL_COMPRESSED_RED_GREEN_RGTC2_EXT) +GL_ENUM(0x8DBE,GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT) +GL_ENUM(0x8C4C,GL_COMPRESSED_SRGB_S3TC_DXT1_EXT) +GL_ENUM(0x8C4D,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT) +GL_ENUM(0x8C4E,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT) +GL_ENUM(0x8C4F,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT) +GL_ENUM(0x9366,GL_TEXTURE_REDUCTION_MODE_EXT) +GL_ENUM(0x9367,GL_WEIGHTED_AVERAGE_EXT) +GL_ENUM(0x8FBF,GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT) +GL_ENUM(0x8743,GL_MIRROR_CLAMP_TO_EDGE_EXT) GL_ENUM(0x822A,GL_R16_EXT) GL_ENUM(0x822C,GL_RG16_EXT) GL_ENUM(0x805B,GL_RGBA16_EXT) @@ -1343,7 +1401,17 @@ GL_ENUM(0x8FBE,GL_SRG8_EXT) GL_ENUM(0x8A48,GL_TEXTURE_SRGB_DECODE_EXT) GL_ENUM(0x8A49,GL_DECODE_EXT) GL_ENUM(0x8A4A,GL_SKIP_DECODE_EXT) +GL_ENUM(0x8F10,GL_INCLUSIVE_EXT) +GL_ENUM(0x8F11,GL_EXCLUSIVE_EXT) +GL_ENUM(0x8F12,GL_WINDOW_RECTANGLE_EXT) +GL_ENUM(0x8F13,GL_WINDOW_RECTANGLE_MODE_EXT) +GL_ENUM(0x8F14,GL_MAX_WINDOW_RECTANGLES_EXT) +GL_ENUM(0x8F15,GL_NUM_WINDOW_RECTANGLES_EXT) GL_ENUM(0x9260,GL_GCCSO_SHADER_BINARY_FJ) +GL_ENUM(0x913C,GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG) +GL_ENUM(0x913D,GL_NUM_DOWNSAMPLE_SCALES_IMG) +GL_ENUM(0x913E,GL_DOWNSAMPLE_SCALES_IMG) +GL_ENUM(0x913F,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG) GL_ENUM(0x9130,GL_SGX_PROGRAM_BINARY_IMG) GL_ENUM(0x8C0A,GL_SGX_BINARY_IMG) GL_ENUM(0x9137,GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG) @@ -1351,6 +1419,8 @@ GL_ENUM(0x9138,GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG) GL_ENUM(0x9139,GL_CUBIC_IMG) GL_ENUM(0x913A,GL_CUBIC_MIPMAP_NEAREST_IMG) GL_ENUM(0x913B,GL_CUBIC_MIPMAP_LINEAR_IMG) +GL_ENUM(0x83FC,GL_BLACKHOLE_RENDER_INTEL) +GL_ENUM(0x83FE,GL_CONSERVATIVE_RASTERIZATION_INTEL) GL_ENUM(0x00000000,GL_PERFQUERY_SINGLE_CONTEXT_INTEL) GL_ENUM(0x00000001,GL_PERFQUERY_GLOBAL_CONTEXT_INTEL) GL_ENUM(0x83FB,GL_PERFQUERY_WAIT_INTEL) @@ -1371,6 +1441,7 @@ GL_ENUM(0x94FD,GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL) GL_ENUM(0x94FE,GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL) GL_ENUM(0x94FF,GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL) GL_ENUM(0x9500,GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL) +GL_ENUM(0x875F,GL_PROGRAM_BINARY_FORMAT_MESA) GL_ENUM(0x9281,GL_BLEND_OVERLAP_NV) GL_ENUM(0x9280,GL_BLEND_PREMULTIPLIED_SRC_NV) GL_ENUM(0x9284,GL_CONJOINT_NV) @@ -1401,6 +1472,11 @@ GL_ENUM(0x928C,GL_SRC_OUT_NV) GL_ENUM(0x9288,GL_SRC_OVER_NV) GL_ENUM(0x9282,GL_UNCORRELATED_NV) GL_ENUM(0x92A6,GL_VIVIDLIGHT_NV) +GL_ENUM(0x901C,GL_FACTOR_MIN_AMD) +GL_ENUM(0x901D,GL_FACTOR_MAX_AMD) +GL_ENUM(0x937C,GL_VIEWPORT_POSITION_W_SCALE_NV) +GL_ENUM(0x937D,GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV) +GL_ENUM(0x937E,GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV) GL_ENUM(0x8E13,GL_QUERY_WAIT_NV) GL_ENUM(0x8E14,GL_QUERY_NO_WAIT_NV) GL_ENUM(0x8E15,GL_QUERY_BY_REGION_WAIT_NV) @@ -1409,6 +1485,10 @@ GL_ENUM(0x9346,GL_CONSERVATIVE_RASTERIZATION_NV) GL_ENUM(0x9347,GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV) GL_ENUM(0x9348,GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV) GL_ENUM(0x9349,GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV) +GL_ENUM(0x9550,GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV) +GL_ENUM(0x954D,GL_CONSERVATIVE_RASTER_MODE_NV) +GL_ENUM(0x954E,GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV) +GL_ENUM(0x954F,GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV) GL_ENUM(0x8ED0,GL_COVERAGE_COMPONENT_NV) GL_ENUM(0x8ED1,GL_COVERAGE_COMPONENT4_NV) GL_ENUM(0x8ED2,GL_COVERAGE_ATTACHMENT_NV) @@ -1429,6 +1509,34 @@ GL_ENUM(0x932F,GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV) GL_ENUM(0x9330,GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV) GL_ENUM(0x9332,GL_COVERAGE_MODULATION_NV) GL_ENUM(0x9333,GL_COVERAGE_MODULATION_TABLE_SIZE_NV) +GL_ENUM(0x140E,GL_INT64_NV) +GL_ENUM(0x140F,GL_UNSIGNED_INT64_NV) +GL_ENUM(0x8FE0,GL_INT8_NV) +GL_ENUM(0x8FE1,GL_INT8_VEC2_NV) +GL_ENUM(0x8FE2,GL_INT8_VEC3_NV) +GL_ENUM(0x8FE3,GL_INT8_VEC4_NV) +GL_ENUM(0x8FE4,GL_INT16_NV) +GL_ENUM(0x8FE5,GL_INT16_VEC2_NV) +GL_ENUM(0x8FE6,GL_INT16_VEC3_NV) +GL_ENUM(0x8FE7,GL_INT16_VEC4_NV) +GL_ENUM(0x8FE9,GL_INT64_VEC2_NV) +GL_ENUM(0x8FEA,GL_INT64_VEC3_NV) +GL_ENUM(0x8FEB,GL_INT64_VEC4_NV) +GL_ENUM(0x8FEC,GL_UNSIGNED_INT8_NV) +GL_ENUM(0x8FED,GL_UNSIGNED_INT8_VEC2_NV) +GL_ENUM(0x8FEE,GL_UNSIGNED_INT8_VEC3_NV) +GL_ENUM(0x8FEF,GL_UNSIGNED_INT8_VEC4_NV) +GL_ENUM(0x8FF0,GL_UNSIGNED_INT16_NV) +GL_ENUM(0x8FF1,GL_UNSIGNED_INT16_VEC2_NV) +GL_ENUM(0x8FF2,GL_UNSIGNED_INT16_VEC3_NV) +GL_ENUM(0x8FF3,GL_UNSIGNED_INT16_VEC4_NV) +GL_ENUM(0x8FF5,GL_UNSIGNED_INT64_VEC2_NV) +GL_ENUM(0x8FF6,GL_UNSIGNED_INT64_VEC3_NV) +GL_ENUM(0x8FF7,GL_UNSIGNED_INT64_VEC4_NV) +GL_ENUM(0x8FF8,GL_FLOAT16_NV) +GL_ENUM(0x8FF9,GL_FLOAT16_VEC2_NV) +GL_ENUM(0x8FFA,GL_FLOAT16_VEC3_NV) +GL_ENUM(0x8FFB,GL_FLOAT16_VEC4_NV) GL_ENUM(0x9371,GL_MULTISAMPLES_NV) GL_ENUM(0x9372,GL_SUPERSAMPLE_SCALE_X_NV) GL_ENUM(0x9373,GL_SUPERSAMPLE_SCALE_Y_NV) @@ -1564,10 +1672,6 @@ GL_ENUM(0x8C46,GL_SLUMINANCE_NV) GL_ENUM(0x8C44,GL_SLUMINANCE_ALPHA_NV) GL_ENUM(0x8C47,GL_SLUMINANCE8_NV) GL_ENUM(0x8C45,GL_SLUMINANCE8_ALPHA8_NV) -GL_ENUM(0x8C4C,GL_COMPRESSED_SRGB_S3TC_DXT1_NV) -GL_ENUM(0x8C4D,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV) -GL_ENUM(0x8C4E,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV) -GL_ENUM(0x8C4F,GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV) GL_ENUM(0x88EE,GL_ETC1_SRGB8_NV) GL_ENUM(0x933D,GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV) GL_ENUM(0x933E,GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV) @@ -1576,15 +1680,30 @@ GL_ENUM(0x9340,GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV) GL_ENUM(0x9341,GL_PROGRAMMABLE_SAMPLE_LOCATION_NV) GL_ENUM(0x9342,GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV) GL_ENUM(0x9343,GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV) -GL_ENUM(0x825B,GL_MAX_VIEWPORTS_NV) -GL_ENUM(0x825C,GL_VIEWPORT_SUBPIXEL_BITS_NV) -GL_ENUM(0x825D,GL_VIEWPORT_BOUNDS_RANGE_NV) -GL_ENUM(0x825F,GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV) +GL_ENUM(0x9350,GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV) +GL_ENUM(0x9351,GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV) +GL_ENUM(0x9352,GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV) +GL_ENUM(0x9353,GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV) +GL_ENUM(0x9354,GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV) +GL_ENUM(0x9355,GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV) +GL_ENUM(0x9356,GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV) +GL_ENUM(0x9357,GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV) +GL_ENUM(0x9358,GL_VIEWPORT_SWIZZLE_X_NV) +GL_ENUM(0x9359,GL_VIEWPORT_SWIZZLE_Y_NV) +GL_ENUM(0x935A,GL_VIEWPORT_SWIZZLE_Z_NV) +GL_ENUM(0x935B,GL_VIEWPORT_SWIZZLE_W_NV) GL_ENUM(0x9630,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR) GL_ENUM(0x9632,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR) GL_ENUM(0x9631,GL_MAX_VIEWS_OVR) +GL_ENUM(0x9633,GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR) GL_ENUM(0x8FB0,GL_BINNING_CONTROL_HINT_QCOM) GL_ENUM(0x8FB1,GL_CPU_OPTIMIZED_QCOM) GL_ENUM(0x8FB2,GL_GPU_OPTIMIZED_QCOM) GL_ENUM(0x8FB3,GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM) +GL_ENUM(0x96A2,GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM) +GL_ENUM(0x8BFB,GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM) +GL_ENUM(0x8BFC,GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM) +GL_ENUM(0x8BFD,GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM) +GL_ENUM(0x8BFE,GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM) +GL_ENUM(0x8BFF,GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM) GL_ENUM(0x8FC4,GL_SHADER_BINARY_VIV) diff --git a/opengl/tools/glgen2/glgen.py b/opengl/tools/glgen2/glgen.py index a140091d57..fa981a89a7 100755 --- a/opengl/tools/glgen2/glgen.py +++ b/opengl/tools/glgen2/glgen.py @@ -117,6 +117,8 @@ class TrampolineGen(reg.OutputGenerator): reg.OutputGenerator.__init__(self, sys.stderr, sys.stderr, None) def genCmd(self, cmd, name): + if re.search('Win32', name): + return reg.OutputGenerator.genCmd(self, cmd, name) rtype, fname = parseProto(cmd.elem.find('proto')) @@ -142,6 +144,8 @@ class ApiGenerator(reg.OutputGenerator): self.enums = collections.OrderedDict() def genCmd(self, cmd, name): + if re.search('Win32', name): + return reg.OutputGenerator.genCmd(self, cmd, name) rtype, fname = parseProto(cmd.elem.find('proto')) params = [parseParam(p) for p in cmd.elem.findall('param')] @@ -166,6 +170,8 @@ class ApiGenerator(reg.OutputGenerator): # so leaving for later. if re.search('_BIT($|\d*_)', name): return + if re.search('D3D|WIN32', name): + return # Skip non-hex values (GL_TRUE, GL_FALSE, header guard junk) if not re.search('0x[0-9A-Fa-f]+', value): diff --git a/opengl/tools/glgen2/registry/egl.xml b/opengl/tools/glgen2/registry/egl.xml old mode 100755 new mode 100644 index c2d3494404..e422e96557 --- a/opengl/tools/glgen2/registry/egl.xml +++ b/opengl/tools/glgen2/registry/egl.xml @@ -1,7 +1,7 @@ @@ -38,6 +38,7 @@ #include <KHR/khrplatform.h> #include <EGL/eglplatform.h> + @@ -47,6 +48,7 @@ + struct AHardwareBuffer; @@ -76,6 +78,7 @@ typedef khronos_utime_nanoseconds_t EGLTimeNV; typedef khronos_utime_nanoseconds_t EGLuint64NV; typedef khronos_uint64_t EGLuint64KHR; + typedef khronos_stime_nanoseconds_t EGLnsecsANDROID; typedef int EGLNativeFileDescriptorKHR; typedef khronos_ssize_t EGLsizeiANDROID; typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); @@ -112,6 +115,7 @@ + @@ -130,6 +134,12 @@ + + + + + + @@ -139,6 +149,7 @@ + - + + + + + @@ -173,24 +188,24 @@ - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -357,7 +372,7 @@ - + @@ -442,7 +457,10 @@ - + + + + @@ -475,12 +493,15 @@ - + - + + + + @@ -533,7 +554,9 @@ - + + + @@ -606,7 +629,23 @@ - + + + + + + + + + + + + + + + + + @@ -651,7 +690,9 @@ - + + + @@ -716,11 +757,18 @@ - + + + - + + + + + + @@ -738,9 +786,19 @@ - + + + + + - + + + + + + + @@ -777,6 +835,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -879,6 +990,10 @@ EGLClientBuffer buffer const EGLint *attrib_list + + EGLClientBuffer eglCreateNativeClientBufferANDROID + const EGLint *attrib_list + EGLSurface eglCreatePbufferFromClientBuffer EGLDisplay dpy @@ -944,6 +1059,11 @@ EGLDisplay dpy const EGLint *attrib_list + + EGLStreamKHR eglCreateStreamAttribKHR + EGLDisplay dpy + const EGLAttrib *attrib_list + EGLSurface eglCreateStreamProducerSurfaceKHR EGLDisplay dpy @@ -1094,6 +1214,10 @@ EGLint eglGetError + + EGLClientBuffer eglGetNativeClientBufferANDROID + const struct AHardwareBuffer *buffer + EGLBoolean eglGetOutputLayersEXT EGLDisplay dpy @@ -1206,6 +1330,47 @@ EGLint width EGLint height + + EGLBoolean eglPresentationTimeANDROID + EGLDisplay dpy + EGLSurface surface + EGLnsecsANDROID time + + + EGLBoolean eglGetCompositorTimingSupportedANDROID + EGLDisplay dpy + EGLSurface surface + EGLint name + + + EGLBoolean eglGetCompositorTimingANDROID + EGLDisplay dpy + EGLSurface surface + EGLint numTimestamps + const EGLint *names + EGLnsecsANDROID *values + + + EGLBoolean eglGetNextFrameIdANDROID + EGLDisplay dpy + EGLSurface surface + EGLuint64KHR *frameId + + + EGLBoolean eglGetFrameTimestampSupportedANDROID + EGLDisplay dpy + EGLSurface surface + EGLint timestamp + + + EGLBoolean eglGetFrameTimestampsANDROID + EGLDisplay dpy + EGLSurface surface + EGLuint64KHR frameId + EGLint numTimestamps + const EGLint *timestamps + EGLnsecsANDROID *values + EGLenum eglQueryAPI @@ -1243,13 +1408,36 @@ EGLDisplay dpy EGLint attribute EGLAttrib *value + + + + EGLBoolean eglQueryDisplayAttribKHR + EGLDisplay dpy + EGLint name + EGLAttrib *value EGLBoolean eglQueryDisplayAttribNV EGLDisplay dpy EGLint attribute EGLAttrib *value - + + + + EGLBoolean eglQueryDmaBufFormatsEXT + EGLDisplay dpy + EGLint max_formats + EGLint *formats + EGLint *num_formats + + + EGLBoolean eglQueryDmaBufModifiersEXT + EGLDisplay dpy + EGLint format + EGLint max_modifiers + EGLuint64KHR *modifiers + EGLBoolean *external_only + EGLint *num_modifiers EGLBoolean eglQueryNativeDisplayNV @@ -1301,6 +1489,13 @@ EGLenum attribute EGLint *value + + EGLBoolean eglQueryStreamAttribKHR + EGLDisplay dpy + EGLStreamKHR stream + EGLenum attribute + EGLAttrib *value + EGLBoolean eglQueryStreamMetadataNV EGLDisplay dpy @@ -1360,6 +1555,11 @@ EGLBoolean eglReleaseThread + + EGLBoolean eglResetStreamNV + EGLDisplay dpy + EGLStreamKHR stream + void eglSetBlobCacheFuncsANDROID EGLDisplay dpy @@ -1373,6 +1573,13 @@ EGLint *rects EGLint n_rects + + EGLBoolean eglSetStreamAttribKHR + EGLDisplay dpy + EGLStreamKHR stream + EGLenum attribute + EGLAttrib value + EGLBoolean eglSetStreamMetadataNV EGLDisplay dpy @@ -1405,6 +1612,12 @@ EGLDisplay dpy EGLStreamKHR stream + + EGLBoolean eglStreamConsumerAcquireAttribKHR + EGLDisplay dpy + EGLStreamKHR stream + const EGLAttrib *attrib_list + EGLBoolean eglStreamConsumerGLTextureExternalKHR EGLDisplay dpy @@ -1414,7 +1627,7 @@ EGLBoolean eglStreamConsumerGLTextureExternalAttribsNV EGLDisplay dpy EGLStreamKHR stream - EGLAttrib *attrib_list + const EGLAttrib *attrib_list EGLBoolean eglStreamConsumerOutputEXT @@ -1427,6 +1640,12 @@ EGLDisplay dpy EGLStreamKHR stream + + EGLBoolean eglStreamConsumerReleaseAttribKHR + EGLDisplay dpy + EGLStreamKHR stream + const EGLAttrib *attrib_list + EGLBoolean eglSurfaceAttrib EGLDisplay dpy @@ -1503,6 +1722,44 @@ EGLSyncKHR sync EGLint flags + + EGLBoolean eglCompositorSetContextListEXT + const EGLint *external_ref_ids + EGLint num_entries + + + EGLBoolean eglCompositorSetContextAttributesEXT + EGLint external_ref_id + const EGLint *context_attributes + EGLint num_entries + + + EGLBoolean eglCompositorSetWindowListEXT + EGLint external_ref_id + const EGLint *external_win_ids + EGLint num_entries + + + EGLBoolean eglCompositorSetWindowAttributesEXT + EGLint external_win_id + const EGLint *window_attributes + EGLint num_entries + + + EGLBoolean eglCompositorBindTexWindowEXT + EGLint external_win_id + + + EGLBoolean eglCompositorSetSizeEXT + EGLint external_win_id + EGLint width + EGLint height + + + EGLBoolean eglCompositorSwapPolicyEXT + EGLint external_win_id + EGLint policy + @@ -1775,11 +2032,30 @@ + + + + + + + + + + + + + + + + + + + @@ -1794,6 +2070,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1825,6 +2130,11 @@ + + + + + @@ -1890,6 +2200,11 @@ + + + + + @@ -1931,6 +2246,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -1968,6 +2306,13 @@ + + + + + + + @@ -1991,6 +2336,11 @@ + + + + + @@ -2016,7 +2366,6 @@ - @@ -2073,6 +2422,12 @@ + + + + + + @@ -2096,6 +2451,13 @@ + + + + + + + @@ -2141,6 +2503,12 @@ + + + + + + @@ -2270,6 +2638,16 @@ + + + + + + + + + + @@ -2338,6 +2716,19 @@ + + + + + + + + + + + + + @@ -2394,6 +2785,7 @@ + @@ -2410,6 +2802,11 @@ + + + + + @@ -2436,6 +2833,11 @@ + + + + + @@ -2479,6 +2881,11 @@ + + + + + @@ -2489,6 +2896,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2510,6 +2959,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2556,5 +3043,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/opengl/tools/glgen2/registry/gl.xml b/opengl/tools/glgen2/registry/gl.xml old mode 100755 new mode 100644 index be231c7502..9b273423a1 --- a/opengl/tools/glgen2/registry/gl.xml +++ b/opengl/tools/glgen2/registry/gl.xml @@ -1,36 +1,27 @@ -Copyright (c) 2013-2015 The Khronos Group Inc. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and/or associated documentation files (the -"Materials"), to deal in the Materials without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Materials, and to -permit persons to whom the Materials are furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Materials. - -THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +Copyright (c) 2013-2017 The Khronos Group Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. ------------------------------------------------------------------------ -This file, gl.xml, is the OpenGL and OpenGL API Registry. The older -".spec" file format has been retired and will no longer be updated with -new extensions and API versions. The canonical version of the registry, -together with documentation, schema, and Python generator scripts used -to generate C header files for OpenGL and OpenGL ES, can always be found -in the Khronos Registry at - http://www.opengl.org/registry/ +This file, gl.xml, is the OpenGL and OpenGL API Registry. The canonical +version of the registry, together with documentation, schema, and Python +generator scripts used to generate C header files for OpenGL and OpenGL ES, +can always be found in the Khronos Registry at + https://github.com/KhronosGroup/OpenGL-Registry @@ -92,6 +83,7 @@ typedef unsigned __int64 uint64_t; typedef float GLclampf; typedef double GLdouble; typedef double GLclampd; + typedef void *GLeglClientBufferEXT; typedef void *GLeglImageOES; typedef char GLchar; typedef char GLcharARB; @@ -142,10 +134,16 @@ typedef unsigned int GLhandleARB; typedef khronos_intptr_t GLintptr; typedef khronos_ssize_t GLsizeiptr; + + typedef khronos_uint8_t GLubyte; + typedef khronos_float_t GLfloat; + typedef khronos_intptr_t GLintptr; + typedef khronos_ssize_t GLsizeiptr; typedef void ( *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); typedef unsigned short GLhalfNV; typedef GLintptr GLvdpauSurfaceNV; + typedef void ( *GLVULKANPROCNV)(void); @@ -207,42 +205,103 @@ typedef unsigned int GLhandleARB; + + + - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -329,7 +388,11 @@ typedef unsigned int GLhandleARB; + + + + @@ -395,6 +458,12 @@ typedef unsigned int GLhandleARB; + + + + + + @@ -520,6 +589,17 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + @@ -585,6 +665,10 @@ typedef unsigned int GLhandleARB; + + + + @@ -601,6 +685,16 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + @@ -612,6 +706,15 @@ typedef unsigned int GLhandleARB; + + + + + + + + + @@ -623,6 +726,22 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + @@ -636,6 +755,8 @@ typedef unsigned int GLhandleARB; + + @@ -731,11 +852,15 @@ typedef unsigned int GLhandleARB; + + + + @@ -875,6 +1000,7 @@ typedef unsigned int GLhandleARB; + @@ -1057,6 +1183,8 @@ typedef unsigned int GLhandleARB; + + @@ -1181,6 +1309,8 @@ typedef unsigned int GLhandleARB; + + @@ -1307,8 +1437,11 @@ typedef unsigned int GLhandleARB; + + + @@ -1316,12 +1449,16 @@ typedef unsigned int GLhandleARB; + + + + @@ -1384,6 +1521,7 @@ typedef unsigned int GLhandleARB; + @@ -1409,6 +1547,11 @@ typedef unsigned int GLhandleARB; + + + + + @@ -1465,15 +1608,13 @@ typedef unsigned int GLhandleARB; + - + - - - - + @@ -1491,49 +1632,212 @@ typedef unsigned int GLhandleARB; - + - + - - + + - - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1789,6 +2093,10 @@ typedef unsigned int GLhandleARB; + + + + @@ -1799,6 +2107,12 @@ typedef unsigned int GLhandleARB; + + + + + + @@ -1824,6 +2138,12 @@ typedef unsigned int GLhandleARB; + + + + + + @@ -1948,31 +2268,96 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + @@ -1993,10 +2378,13 @@ typedef unsigned int GLhandleARB; + + + @@ -2008,6 +2396,994 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2043,6 +3419,10 @@ typedef unsigned int GLhandleARB; + + + + @@ -2060,7 +3440,9 @@ typedef unsigned int GLhandleARB; - + + + @@ -2090,6 +3472,10 @@ typedef unsigned int GLhandleARB; + + + + @@ -2126,7 +3512,7 @@ typedef unsigned int GLhandleARB; - + @@ -2286,11 +3672,17 @@ typedef unsigned int GLhandleARB; + + + + + + @@ -2404,11 +3796,14 @@ typedef unsigned int GLhandleARB; + + + @@ -2731,6 +4126,7 @@ typedef unsigned int GLhandleARB; + @@ -2998,30 +4394,38 @@ typedef unsigned int GLhandleARB; + + + + + + + + @@ -3506,8 +4910,10 @@ typedef unsigned int GLhandleARB; - - + + + + @@ -3955,18 +5361,22 @@ typedef unsigned int GLhandleARB; + + + + @@ -4139,26 +5549,41 @@ typedef unsigned int GLhandleARB; ARB_direct_state_access in February 2015 after determining it was not well defined or implementable. --> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + @@ -4354,7 +5779,9 @@ typedef unsigned int GLhandleARB; - + + + @@ -4635,8 +6062,10 @@ typedef unsigned int GLhandleARB; - - + + + + @@ -5338,7 +6767,7 @@ typedef unsigned int GLhandleARB; - + @@ -5941,16 +7370,20 @@ typedef unsigned int GLhandleARB; + + + + @@ -6397,6 +7830,9 @@ typedef unsigned int GLhandleARB; + + + @@ -6421,7 +7857,13 @@ typedef unsigned int GLhandleARB; - + + + + + + + @@ -6631,11 +8073,12 @@ typedef unsigned int GLhandleARB; - + + @@ -7116,7 +8559,8 @@ typedef unsigned int GLhandleARB; - + + @@ -7288,12 +8732,16 @@ typedef unsigned int GLhandleARB; + + + + @@ -7321,7 +8769,14 @@ typedef unsigned int GLhandleARB; - + + + + + + + + @@ -7409,7 +8864,9 @@ typedef unsigned int GLhandleARB; - + + + @@ -7455,7 +8912,7 @@ typedef unsigned int GLhandleARB; - + @@ -7897,7 +9354,10 @@ typedef unsigned int GLhandleARB; - + + + + @@ -7994,9 +9454,13 @@ typedef unsigned int GLhandleARB; - - - + + + + + + + @@ -8006,7 +9470,17 @@ typedef unsigned int GLhandleARB; - + + + + + + + + + + + @@ -8138,12 +9612,16 @@ typedef unsigned int GLhandleARB; - + + + + + - + @@ -8301,15 +9779,35 @@ typedef unsigned int GLhandleARB; - + + + + + + + + + + + + + + + + + + + + + @@ -8327,7 +9825,10 @@ typedef unsigned int GLhandleARB; - + + + + @@ -8464,14 +9965,70 @@ typedef unsigned int GLhandleARB; - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + @@ -8481,7 +10038,20 @@ typedef unsigned int GLhandleARB; - + + + + + + + + + + + + + + - - + + @@ -8655,14 +10225,18 @@ typedef unsigned int GLhandleARB; void glAlphaFuncx - GLenum func + GLenum func GLfixed ref void glAlphaFuncxOES - GLenum func + GLenum func GLfixed ref + + void glAlphaToCoverageDitherControlNV + GLenum mode + void glApplyFramebufferAttachmentCMAAINTEL @@ -8670,6 +10244,12 @@ typedef unsigned int GLhandleARB; void glApplyTextureEXT GLenum mode + + GLboolean glAcquireKeyedMutexWin32EXT + GLuint memory + GLuint64 key + GLuint timeout + GLboolean glAreProgramsResidentNV GLsizei n @@ -8762,7 +10342,7 @@ typedef unsigned int GLhandleARB; void glBeginQuery - GLenum target + GLenum target GLuint id @@ -8774,27 +10354,28 @@ typedef unsigned int GLhandleARB; void glBeginQueryEXT - GLenum target + GLenum target GLuint id void glBeginQueryIndexed - GLenum target + GLenum target GLuint index GLuint id void glBeginTransformFeedback - GLenum primitiveMode + GLenum primitiveMode + void glBeginTransformFeedbackEXT - GLenum primitiveMode + GLenum primitiveMode void glBeginTransformFeedbackNV - GLenum primitiveMode + GLenum primitiveMode @@ -8830,34 +10411,35 @@ typedef unsigned int GLhandleARB; void glBindBufferBase - GLenum target + GLenum target GLuint index GLuint buffer + void glBindBufferBaseEXT - GLenum target + GLenum target GLuint index GLuint buffer void glBindBufferBaseNV - GLenum target + GLenum target GLuint index GLuint buffer void glBindBufferOffsetEXT - GLenum target + GLenum target GLuint index GLuint buffer GLintptr offset void glBindBufferOffsetNV - GLenum target + GLenum target GLuint index GLuint buffer GLintptr offset @@ -8865,15 +10447,16 @@ typedef unsigned int GLhandleARB; void glBindBufferRange - GLenum target + GLenum target GLuint index GLuint buffer GLintptr offset GLsizeiptr size + void glBindBufferRangeEXT - GLenum target + GLenum target GLuint index GLuint buffer GLintptr offset @@ -8882,7 +10465,7 @@ typedef unsigned int GLhandleARB; void glBindBufferRangeNV - GLenum target + GLenum target GLuint index GLuint buffer GLintptr offset @@ -8891,14 +10474,14 @@ typedef unsigned int GLhandleARB; void glBindBuffersBase - GLenum target + GLenum target GLuint first GLsizei count const GLuint *buffers void glBindBuffersRange - GLenum target + GLenum target GLuint first GLsizei count const GLuint *buffers @@ -8951,7 +10534,7 @@ typedef unsigned int GLhandleARB; void glBindFramebufferOES - GLenum target + GLenum target GLuint framebuffer @@ -8961,8 +10544,8 @@ typedef unsigned int GLhandleARB; GLint level GLboolean layered GLint layer - GLenum access - GLenum format + GLenum access + GLenum format void glBindImageTextureEXT @@ -8971,7 +10554,7 @@ typedef unsigned int GLhandleARB; GLint level GLboolean layered GLint layer - GLenum access + GLenum access GLint format @@ -9035,7 +10618,7 @@ typedef unsigned int GLhandleARB; void glBindRenderbufferOES - GLenum target + GLenum target GLuint renderbuffer @@ -9086,7 +10669,7 @@ typedef unsigned int GLhandleARB; void glBindTransformFeedback - GLenum target + GLenum target GLuint id @@ -9262,7 +10845,7 @@ typedef unsigned int GLhandleARB; void glBlendEquation - GLenum mode + GLenum mode @@ -9274,12 +10857,12 @@ typedef unsigned int GLhandleARB; void glBlendEquationIndexedAMD GLuint buf - GLenum mode + GLenum mode void glBlendEquationOES - GLenum mode + GLenum mode void glBlendEquationSeparate @@ -9297,69 +10880,69 @@ typedef unsigned int GLhandleARB; void glBlendEquationSeparateIndexedAMD GLuint buf - GLenum modeRGB - GLenum modeAlpha + GLenum modeRGB + GLenum modeAlpha void glBlendEquationSeparateOES - GLenum modeRGB - GLenum modeAlpha + GLenum modeRGB + GLenum modeAlpha void glBlendEquationSeparatei GLuint buf - GLenum modeRGB - GLenum modeAlpha + GLenum modeRGB + GLenum modeAlpha void glBlendEquationSeparateiARB GLuint buf - GLenum modeRGB - GLenum modeAlpha + GLenum modeRGB + GLenum modeAlpha void glBlendEquationSeparateiEXT GLuint buf - GLenum modeRGB - GLenum modeAlpha + GLenum modeRGB + GLenum modeAlpha void glBlendEquationSeparateiOES GLuint buf - GLenum modeRGB - GLenum modeAlpha + GLenum modeRGB + GLenum modeAlpha void glBlendEquationi GLuint buf - GLenum mode + GLenum mode void glBlendEquationiARB GLuint buf - GLenum mode + GLenum mode void glBlendEquationiEXT GLuint buf - GLenum mode + GLenum mode void glBlendEquationiOES GLuint buf - GLenum mode + GLenum mode void glBlendFunc - GLenum sfactor - GLenum dfactor + GLenum sfactor + GLenum dfactor @@ -9371,106 +10954,106 @@ typedef unsigned int GLhandleARB; void glBlendFuncSeparate - GLenum sfactorRGB - GLenum dfactorRGB - GLenum sfactorAlpha - GLenum dfactorAlpha + GLenum sfactorRGB + GLenum dfactorRGB + GLenum sfactorAlpha + GLenum dfactorAlpha void glBlendFuncSeparateEXT - GLenum sfactorRGB - GLenum dfactorRGB - GLenum sfactorAlpha - GLenum dfactorAlpha + GLenum sfactorRGB + GLenum dfactorRGB + GLenum sfactorAlpha + GLenum dfactorAlpha void glBlendFuncSeparateINGR - GLenum sfactorRGB - GLenum dfactorRGB - GLenum sfactorAlpha - GLenum dfactorAlpha + GLenum sfactorRGB + GLenum dfactorRGB + GLenum sfactorAlpha + GLenum dfactorAlpha void glBlendFuncSeparateIndexedAMD GLuint buf - GLenum srcRGB - GLenum dstRGB - GLenum srcAlpha - GLenum dstAlpha + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha void glBlendFuncSeparateOES - GLenum srcRGB - GLenum dstRGB - GLenum srcAlpha - GLenum dstAlpha + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha void glBlendFuncSeparatei GLuint buf - GLenum srcRGB - GLenum dstRGB - GLenum srcAlpha - GLenum dstAlpha + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha void glBlendFuncSeparateiARB GLuint buf - GLenum srcRGB - GLenum dstRGB - GLenum srcAlpha - GLenum dstAlpha + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha void glBlendFuncSeparateiEXT GLuint buf - GLenum srcRGB - GLenum dstRGB - GLenum srcAlpha - GLenum dstAlpha + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha void glBlendFuncSeparateiOES GLuint buf - GLenum srcRGB - GLenum dstRGB - GLenum srcAlpha - GLenum dstAlpha + GLenum srcRGB + GLenum dstRGB + GLenum srcAlpha + GLenum dstAlpha void glBlendFunci GLuint buf - GLenum src - GLenum dst + GLenum src + GLenum dst void glBlendFunciARB GLuint buf - GLenum src - GLenum dst + GLenum src + GLenum dst void glBlendFunciEXT GLuint buf - GLenum src - GLenum dst + GLenum src + GLenum dst void glBlendFunciOES GLuint buf - GLenum src - GLenum dst + GLenum src + GLenum dst @@ -9489,7 +11072,7 @@ typedef unsigned int GLhandleARB; GLint dstX1 GLint dstY1 GLbitfield mask - GLenum filter + GLenum filter @@ -9502,8 +11085,8 @@ typedef unsigned int GLhandleARB; GLint dstY0 GLint dstX1 GLint dstY1 - GLbitfield mask - GLenum filter + GLbitfield mask + GLenum filter void glBlitFramebufferEXT @@ -9516,7 +11099,7 @@ typedef unsigned int GLhandleARB; GLint dstX1 GLint dstY1 GLbitfield mask - GLenum filter + GLenum filter @@ -9530,8 +11113,8 @@ typedef unsigned int GLhandleARB; GLint dstY0 GLint dstX1 GLint dstY1 - GLbitfield mask - GLenum filter + GLbitfield mask + GLenum filter @@ -9546,8 +11129,8 @@ typedef unsigned int GLhandleARB; GLint dstY0 GLint dstX1 GLint dstY1 - GLbitfield mask - GLenum filter + GLbitfield mask + GLenum filter void glBufferAddressRangeNV @@ -9586,19 +11169,34 @@ typedef unsigned int GLhandleARB; void glBufferStorage - GLenum target + GLenum target GLsizeiptr size const void *data - GLbitfield flags + GLbitfield flags void glBufferStorageEXT - GLenum target + GLenum target GLsizeiptr size const void *data - GLbitfield flags + GLbitfield flags + + void glBufferStorageExternalEXT + GLenum target + GLintptr offset + GLsizeiptr size + GLeglClientBufferEXT clientBuffer + GLbitfield flags + + + void glBufferStorageMemEXT + GLenum target + GLsizeiptr size + GLuint memory + GLuint64 offset + void glBufferSubData GLenum target @@ -9631,24 +11229,24 @@ typedef unsigned int GLhandleARB; - GLenum glCheckFramebufferStatus + GLenum glCheckFramebufferStatus GLenum target - GLenum glCheckFramebufferStatusEXT + GLenum glCheckFramebufferStatusEXT GLenum target - GLenum glCheckFramebufferStatusOES - GLenum target + GLenum glCheckFramebufferStatusOES + GLenum target - GLenum glCheckNamedFramebufferStatus + GLenum glCheckNamedFramebufferStatus GLuint framebuffer - GLenum target + GLenum target GLenum glCheckNamedFramebufferStatusEXT @@ -9690,46 +11288,50 @@ typedef unsigned int GLhandleARB; void glClearBufferData - GLenum target - GLenum internalformat - GLenum format - GLenum type + GLenum target + GLenum internalformat + GLenum format + GLenum type const void *data void glClearBufferSubData GLenum target - GLenum internalformat + GLenum internalformat GLintptr offset GLsizeiptr size - GLenum format - GLenum type + GLenum format + GLenum type const void *data void glClearBufferfi - GLenum buffer + GLenum buffer GLint drawbuffer GLfloat depth GLint stencil + void glClearBufferfv - GLenum buffer + GLenum buffer GLint drawbuffer const GLfloat *value + void glClearBufferiv - GLenum buffer + GLenum buffer GLint drawbuffer const GLint *value + void glClearBufferuiv - GLenum buffer + GLenum buffer GLint drawbuffer const GLuint *value + void glClearColor @@ -9805,15 +11407,15 @@ typedef unsigned int GLhandleARB; void glClearNamedBufferData GLuint buffer - GLenum internalformat - GLenum format - GLenum type + GLenum internalformat + GLenum format + GLenum type const void *data void glClearNamedBufferDataEXT GLuint buffer - GLenum internalformat + GLenum internalformat GLenum format GLenum type const void *data @@ -9821,11 +11423,11 @@ typedef unsigned int GLhandleARB; void glClearNamedBufferSubData GLuint buffer - GLenum internalformat + GLenum internalformat GLintptr offset GLsizeiptr size - GLenum format - GLenum type + GLenum format + GLenum type const void *data @@ -9841,7 +11443,7 @@ typedef unsigned int GLhandleARB; void glClearNamedFramebufferfi GLuint framebuffer - GLenum buffer + GLenum buffer GLint drawbuffer GLfloat depth GLint stencil @@ -9849,24 +11451,30 @@ typedef unsigned int GLhandleARB; void glClearNamedFramebufferfv GLuint framebuffer - GLenum buffer + GLenum buffer GLint drawbuffer const GLfloat *value void glClearNamedFramebufferiv GLuint framebuffer - GLenum buffer + GLenum buffer GLint drawbuffer const GLint *value void glClearNamedFramebufferuiv GLuint framebuffer - GLenum buffer + GLenum buffer GLint drawbuffer const GLuint *value + + void glClearPixelLocalStorageuiEXT + GLsizei offset + GLsizei n + const GLuint *values + void glClearStencil GLint s @@ -9876,10 +11484,19 @@ typedef unsigned int GLhandleARB; void glClearTexImage GLuint texture GLint level - GLenum format - GLenum type + GLenum format + GLenum type const void *data + + void glClearTexImageEXT + GLuint texture + GLint level + GLenum format + GLenum type + const void *data + + void glClearTexSubImage GLuint texture @@ -9890,10 +11507,25 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format - GLenum type + GLenum format + GLenum type const void *data + + void glClearTexSubImageEXT + GLuint texture + GLint level + GLint xoffset + GLint yoffset + GLint zoffset + GLsizei width + GLsizei height + GLsizei depth + GLenum format + GLenum type + const void *data + + void glClientActiveTexture GLenum texture @@ -9912,22 +11544,28 @@ typedef unsigned int GLhandleARB; GLbitfield mask - GLenum glClientWaitSync + GLenum glClientWaitSync GLsync sync - GLbitfield flags + GLbitfield flags GLuint64 timeout - GLenum glClientWaitSyncAPPLE + GLenum glClientWaitSyncAPPLE GLsync sync - GLbitfield flags + GLbitfield flags GLuint64 timeout void glClipControl + GLenum origin + GLenum depth + + + void glClipControlEXT GLenum origin GLenum depth + void glClipPlane @@ -9937,33 +11575,33 @@ typedef unsigned int GLhandleARB; void glClipPlanef - GLenum p + GLenum p const GLfloat *eqn void glClipPlanefIMG - GLenum p + GLenum p const GLfloat *eqn void glClipPlanefOES - GLenum plane + GLenum plane const GLfloat *equation void glClipPlanex - GLenum plane + GLenum plane const GLfixed *equation void glClipPlanexIMG - GLenum p + GLenum p const GLfixed *eqn void glClipPlanexOES - GLenum plane + GLenum plane const GLfixed *equation @@ -10342,6 +11980,7 @@ typedef unsigned int GLhandleARB; GLboolean b GLboolean a + void glColorMaski @@ -10377,22 +12016,22 @@ typedef unsigned int GLhandleARB; void glColorP3ui - GLenum type + GLenum type GLuint color void glColorP3uiv - GLenum type + GLenum type const GLuint *color void glColorP4ui - GLenum type + GLenum type GLuint color void glColorP4uiv - GLenum type + GLenum type const GLuint *color @@ -10448,7 +12087,7 @@ typedef unsigned int GLhandleARB; void glColorTable GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLenum format GLenum type @@ -10459,7 +12098,7 @@ typedef unsigned int GLhandleARB; void glColorTableEXT GLenum target - GLenum internalFormat + GLenum internalFormat GLsizei width GLenum format GLenum type @@ -10469,7 +12108,7 @@ typedef unsigned int GLhandleARB; void glColorTableParameterfv GLenum target - GLenum pname + GLenum pname const GLfloat *params @@ -10484,7 +12123,7 @@ typedef unsigned int GLhandleARB; void glColorTableParameteriv GLenum target - GLenum pname + GLenum pname const GLint *params @@ -10499,7 +12138,7 @@ typedef unsigned int GLhandleARB; void glColorTableSGI GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLenum format GLenum type @@ -10591,7 +12230,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLint border GLsizei imageSize @@ -10602,7 +12241,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLint border @@ -10614,7 +12253,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -10665,7 +12304,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage1D GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLint border GLsizei imageSize @@ -10677,7 +12316,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage1DARB GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLint border GLsizei imageSize @@ -10689,7 +12328,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage2D GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLint border @@ -10702,7 +12341,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage2DARB GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLint border @@ -10715,7 +12354,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage3D GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -10729,7 +12368,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage3DARB GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -10741,16 +12380,15 @@ typedef unsigned int GLhandleARB; void glCompressedTexImage3DOES - GLenum target + GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border GLsizei imageSize const void *data - void glCompressedTexSubImage1D @@ -10838,7 +12476,7 @@ typedef unsigned int GLhandleARB; void glCompressedTexSubImage3DOES - GLenum target + GLenum target GLint level GLint xoffset GLint yoffset @@ -10846,17 +12484,16 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format + GLenum format GLsizei imageSize const void *data - void glCompressedTextureImage1DEXT GLuint texture GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLint border GLsizei imageSize @@ -10867,7 +12504,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLint border @@ -10879,7 +12516,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -10893,7 +12530,7 @@ typedef unsigned int GLhandleARB; GLint level GLint xoffset GLsizei width - GLenum format + GLenum format GLsizei imageSize const void *data @@ -10916,7 +12553,7 @@ typedef unsigned int GLhandleARB; GLint yoffset GLsizei width GLsizei height - GLenum format + GLenum format GLsizei imageSize const void *data @@ -10943,7 +12580,7 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format + GLenum format GLsizei imageSize const void *data @@ -10967,10 +12604,15 @@ typedef unsigned int GLhandleARB; GLenum pname GLfloat value + + void glConservativeRasterParameteriNV + GLenum pname + GLint param + void glConvolutionFilter1D GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLenum format GLenum type @@ -10981,7 +12623,7 @@ typedef unsigned int GLhandleARB; void glConvolutionFilter1DEXT GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLenum format GLenum type @@ -10992,7 +12634,7 @@ typedef unsigned int GLhandleARB; void glConvolutionFilter2D GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLenum format @@ -11004,7 +12646,7 @@ typedef unsigned int GLhandleARB; void glConvolutionFilter2DEXT GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLenum format @@ -11016,7 +12658,7 @@ typedef unsigned int GLhandleARB; void glConvolutionParameterf GLenum target - GLenum pname + GLenum pname GLfloat params @@ -11031,7 +12673,7 @@ typedef unsigned int GLhandleARB; void glConvolutionParameterfv GLenum target - GLenum pname + GLenum pname const GLfloat *params @@ -11046,7 +12688,7 @@ typedef unsigned int GLhandleARB; void glConvolutionParameteri GLenum target - GLenum pname + GLenum pname GLint params @@ -11061,7 +12703,7 @@ typedef unsigned int GLhandleARB; void glConvolutionParameteriv GLenum target - GLenum pname + GLenum pname const GLint *params @@ -11075,28 +12717,29 @@ typedef unsigned int GLhandleARB; void glConvolutionParameterxOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed param void glConvolutionParameterxvOES - GLenum target - GLenum pname + GLenum target + GLenum pname const GLfixed *params void glCopyBufferSubData - GLenum readTarget - GLenum writeTarget + GLenum readTarget + GLenum writeTarget GLintptr readOffset GLintptr writeOffset GLsizeiptr size + void glCopyBufferSubDataNV - GLenum readTarget - GLenum writeTarget + GLenum readTarget + GLenum writeTarget GLintptr readOffset GLintptr writeOffset GLsizeiptr size @@ -11123,7 +12766,7 @@ typedef unsigned int GLhandleARB; void glCopyColorTable GLenum target - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11132,7 +12775,7 @@ typedef unsigned int GLhandleARB; void glCopyColorTableSGI GLenum target - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11142,7 +12785,7 @@ typedef unsigned int GLhandleARB; void glCopyConvolutionFilter1D GLenum target - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11151,7 +12794,7 @@ typedef unsigned int GLhandleARB; void glCopyConvolutionFilter1DEXT GLenum target - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11161,7 +12804,7 @@ typedef unsigned int GLhandleARB; void glCopyConvolutionFilter2D GLenum target - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11171,7 +12814,7 @@ typedef unsigned int GLhandleARB; void glCopyConvolutionFilter2DEXT GLenum target - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11182,13 +12825,13 @@ typedef unsigned int GLhandleARB; void glCopyImageSubData GLuint srcName - GLenum srcTarget + GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName - GLenum dstTarget + GLenum dstTarget GLint dstLevel GLint dstX GLint dstY @@ -11200,13 +12843,13 @@ typedef unsigned int GLhandleARB; void glCopyImageSubDataEXT GLuint srcName - GLenum srcTarget + GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName - GLenum dstTarget + GLenum dstTarget GLint dstLevel GLint dstX GLint dstY @@ -11219,13 +12862,13 @@ typedef unsigned int GLhandleARB; void glCopyImageSubDataNV GLuint srcName - GLenum srcTarget + GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName - GLenum dstTarget + GLenum dstTarget GLint dstLevel GLint dstX GLint dstY @@ -11238,13 +12881,13 @@ typedef unsigned int GLhandleARB; void glCopyImageSubDataOES GLuint srcName - GLenum srcTarget + GLenum srcTarget GLint srcLevel GLint srcX GLint srcY GLint srcZ GLuint dstName - GLenum dstTarget + GLenum dstTarget GLint dstLevel GLint dstX GLint dstY @@ -11259,7 +12902,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11270,7 +12913,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11338,7 +12981,7 @@ typedef unsigned int GLhandleARB; void glCopyTexImage1D GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11349,7 +12992,7 @@ typedef unsigned int GLhandleARB; void glCopyTexImage1DEXT GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11361,7 +13004,7 @@ typedef unsigned int GLhandleARB; void glCopyTexImage2D GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11373,7 +13016,7 @@ typedef unsigned int GLhandleARB; void glCopyTexImage2DEXT GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11466,14 +13109,13 @@ typedef unsigned int GLhandleARB; GLint y GLsizei width GLsizei height - void glCopyTextureImage1DEXT GLuint texture GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11484,7 +13126,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLint level - GLenum internalformat + GLenum internalformat GLint x GLint y GLsizei width @@ -11606,7 +13248,7 @@ typedef unsigned int GLhandleARB; void glCoverageModulationTableNV GLsizei n - const GLfloat *v + const GLfloat *v void glCoverageOperationNV @@ -11615,17 +13257,22 @@ typedef unsigned int GLhandleARB; void glCreateBuffers GLsizei n - GLuint *buffers + GLuint *buffers void glCreateCommandListsNV GLsizei n - GLuint *lists + GLuint *lists void glCreateFramebuffers GLsizei n - GLuint *framebuffers + GLuint *framebuffers + + + void glCreateMemoryObjectsEXT + GLsizei n + GLuint *memoryObjects void glCreatePerfQueryINTEL @@ -11642,54 +13289,54 @@ typedef unsigned int GLhandleARB; void glCreateProgramPipelines GLsizei n - GLuint *pipelines + GLuint *pipelines void glCreateQueries - GLenum target + GLenum target GLsizei n - GLuint *ids + GLuint *ids void glCreateRenderbuffers GLsizei n - GLuint *renderbuffers + GLuint *renderbuffers void glCreateSamplers GLsizei n - GLuint *samplers + GLuint *samplers GLuint glCreateShader - GLenum type + GLenum type GLhandleARB glCreateShaderObjectARB - GLenum shaderType + GLenum shaderType GLuint glCreateShaderProgramEXT - GLenum type + GLenum type const GLchar *string GLuint glCreateShaderProgramv - GLenum type + GLenum type GLsizei count const GLchar *const*strings GLuint glCreateShaderProgramvEXT - GLenum type + GLenum type GLsizei count const GLchar **strings void glCreateStatesNV GLsizei n - GLuint *states + GLuint *states GLsync glCreateSyncFromCLeventARB @@ -11699,19 +13346,19 @@ typedef unsigned int GLhandleARB; void glCreateTextures - GLenum target + GLenum target GLsizei n - GLuint *textures + GLuint *textures void glCreateTransformFeedbacks GLsizei n - GLuint *ids + GLuint *ids void glCreateVertexArrays GLsizei n - GLuint *arrays + GLuint *arrays void glCullFace @@ -11761,18 +13408,18 @@ typedef unsigned int GLhandleARB; void glDebugMessageControl - GLenum source - GLenum type - GLenum severity + GLenum source + GLenum type + GLenum severity GLsizei count const GLuint *ids GLboolean enabled void glDebugMessageControlARB - GLenum source - GLenum type - GLenum severity + GLenum source + GLenum type + GLenum severity GLsizei count const GLuint *ids GLboolean enabled @@ -11780,9 +13427,9 @@ typedef unsigned int GLhandleARB; void glDebugMessageControlKHR - GLenum source - GLenum type - GLenum severity + GLenum source + GLenum type + GLenum severity GLsizei count const GLuint *ids GLboolean enabled @@ -11791,44 +13438,44 @@ typedef unsigned int GLhandleARB; void glDebugMessageEnableAMD GLenum category - GLenum severity + GLenum severity GLsizei count const GLuint *ids GLboolean enabled void glDebugMessageInsert - GLenum source - GLenum type + GLenum source + GLenum type GLuint id - GLenum severity + GLenum severity GLsizei length const GLchar *buf void glDebugMessageInsertAMD GLenum category - GLenum severity + GLenum severity GLuint id GLsizei length const GLchar *buf void glDebugMessageInsertARB - GLenum source - GLenum type + GLenum source + GLenum type GLuint id - GLenum severity + GLenum severity GLsizei length const GLchar *buf void glDebugMessageInsertKHR - GLenum source - GLenum type + GLenum source + GLenum type GLuint id - GLenum severity + GLenum severity GLsizei length const GLchar *buf @@ -11893,7 +13540,7 @@ typedef unsigned int GLhandleARB; void glDeleteCommandListsNV GLsizei n - const GLuint *lists + const GLuint *lists void glDeleteFencesAPPLE @@ -11934,6 +13581,11 @@ typedef unsigned int GLhandleARB; GLsizei range + + void glDeleteMemoryObjectsEXT + GLsizei n + const GLuint *memoryObjects + void glDeleteNamedStringARB GLint namelen @@ -12013,6 +13665,11 @@ typedef unsigned int GLhandleARB; GLsizei n const GLuint *ids + + void glDeleteQueryResourceTagNV + GLsizei n + const GLint *tagIds + void glDeleteRenderbuffers GLsizei n @@ -12036,6 +13693,11 @@ typedef unsigned int GLhandleARB; GLsizei count const GLuint *samplers + + void glDeleteSemaphoresEXT + GLsizei n + const GLuint *semaphores + void glDeleteShader GLuint shader @@ -12044,7 +13706,7 @@ typedef unsigned int GLhandleARB; void glDeleteStatesNV GLsizei n - const GLuint *states + const GLuint *states void glDeleteSync @@ -12124,8 +13786,8 @@ typedef unsigned int GLhandleARB; void glDepthRange - GLdouble near - GLdouble far + GLdouble n + GLdouble f @@ -12134,6 +13796,12 @@ typedef unsigned int GLhandleARB; GLsizei count const GLfloat *v + + void glDepthRangeArrayfvOES + GLuint first + GLsizei count + const GLfloat *v + void glDepthRangeArrayv GLuint first @@ -12152,6 +13820,12 @@ typedef unsigned int GLhandleARB; GLfloat n GLfloat f + + void glDepthRangeIndexedfOES + GLuint index + GLfloat n + GLfloat f + void glDepthRangedNV GLdouble zNear @@ -12223,9 +13897,10 @@ typedef unsigned int GLhandleARB; void glDisableIndexedEXT - GLenum target + GLenum target GLuint index + void glDisableVariantClientStateEXT @@ -12262,24 +13937,24 @@ typedef unsigned int GLhandleARB; void glDisablei - GLenum target + GLenum target GLuint index void glDisableiEXT - GLenum target + GLenum target GLuint index void glDisableiNV - GLenum target + GLenum target GLuint index void glDisableiOES - GLenum target + GLenum target GLuint index @@ -12411,7 +14086,7 @@ typedef unsigned int GLhandleARB; void glDrawBuffersEXT GLsizei n - const GLenum *bufs + const GLenum *bufs @@ -12504,7 +14179,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsIndirect GLenum mode - GLenum type + GLenum type const void *indirect @@ -12519,7 +14194,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsInstancedANGLE GLenum mode GLsizei count - GLenum type + GLenum type const void *indices GLsizei primcount @@ -12537,7 +14212,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsInstancedBaseInstance GLenum mode GLsizei count - GLenum type + GLenum type const void *indices GLsizei instancecount GLuint baseinstance @@ -12546,7 +14221,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsInstancedBaseInstanceEXT GLenum mode GLsizei count - GLenum type + GLenum type const void *indices GLsizei instancecount GLuint baseinstance @@ -12565,7 +14240,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsInstancedBaseVertexBaseInstance GLenum mode GLsizei count - GLenum type + GLenum type const void *indices GLsizei instancecount GLint basevertex @@ -12575,7 +14250,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsInstancedBaseVertexBaseInstanceEXT GLenum mode GLsizei count - GLenum type + GLenum type const void *indices GLsizei instancecount GLint basevertex @@ -12615,7 +14290,7 @@ typedef unsigned int GLhandleARB; void glDrawElementsInstancedNV GLenum mode GLsizei count - GLenum type + GLenum type const void *indices GLsizei primcount @@ -12710,10 +14385,11 @@ typedef unsigned int GLhandleARB; GLfloat z GLfloat width GLfloat height + void glDrawTexfvOES - const GLfloat *coords + const GLfloat *coords void glDrawTexiOES @@ -12722,10 +14398,11 @@ typedef unsigned int GLhandleARB; GLint z GLint width GLint height + void glDrawTexivOES - const GLint *coords + const GLint *coords void glDrawTexsOES @@ -12734,10 +14411,11 @@ typedef unsigned int GLhandleARB; GLshort z GLshort width GLshort height + void glDrawTexsvOES - const GLshort *coords + const GLshort *coords void glDrawTextureNV @@ -12760,22 +14438,36 @@ typedef unsigned int GLhandleARB; GLfixed z GLfixed width GLfixed height + void glDrawTexxvOES - const GLfixed *coords + const GLfixed *coords void glDrawTransformFeedback GLenum mode GLuint id + + void glDrawTransformFeedbackEXT + GLenum mode + GLuint id + + void glDrawTransformFeedbackInstanced GLenum mode GLuint id GLsizei instancecount + + void glDrawTransformFeedbackInstancedEXT + GLenum mode + GLuint id + GLsizei instancecount + + void glDrawTransformFeedbackNV GLenum mode @@ -12800,11 +14492,23 @@ typedef unsigned int GLhandleARB; GLenum target GLeglImageOES image + + void glEGLImageTargetTexStorageEXT + GLenum target + GLeglImageOES image + const GLint* attrib_list + void glEGLImageTargetTexture2DOES GLenum target GLeglImageOES image + + void glEGLImageTargetTextureStorageEXT + GLuint texture + GLeglImageOES image + const GLint* attrib_list + void glEdgeFlag GLboolean flag @@ -12871,9 +14575,10 @@ typedef unsigned int GLhandleARB; void glEnableIndexedEXT - GLenum target + GLenum target GLuint index + void glEnableVariantClientStateEXT @@ -12910,24 +14615,24 @@ typedef unsigned int GLhandleARB; void glEnablei - GLenum target + GLenum target GLuint index void glEnableiEXT - GLenum target + GLenum target GLuint index void glEnableiNV - GLenum target + GLenum target GLuint index void glEnableiOES - GLenum target + GLenum target GLuint index @@ -12967,29 +14672,30 @@ typedef unsigned int GLhandleARB; void glEndQuery - GLenum target + GLenum target void glEndQueryARB - GLenum target + GLenum target void glEndQueryEXT - GLenum target + GLenum target void glEndQueryIndexed - GLenum target + GLenum target GLuint index void glEndTilingQCOM - GLbitfield preserveMask + GLbitfield preserveMask void glEndTransformFeedback + void glEndTransformFeedbackEXT @@ -13127,7 +14833,7 @@ typedef unsigned int GLhandleARB; void glExtGetProgramBinarySourceQCOM GLuint program - GLenum shadertype + GLenum shadertype GLchar *source GLint *length @@ -13167,8 +14873,8 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format - GLenum type + GLenum format + GLenum type void *texels @@ -13208,12 +14914,12 @@ typedef unsigned int GLhandleARB; GLsync glFenceSync - GLenum condition + GLenum condition GLbitfield flags GLsync glFenceSyncAPPLE - GLenum condition + GLenum condition GLbitfield flags @@ -13262,14 +14968,14 @@ typedef unsigned int GLhandleARB; void glFlushMappedBufferRangeAPPLE - GLenum target + GLenum target GLintptr offset GLsizeiptr size void glFlushMappedBufferRangeEXT - GLenum target + GLenum target GLintptr offset GLsizeiptr length @@ -13417,22 +15123,22 @@ typedef unsigned int GLhandleARB; void glFogx - GLenum pname + GLenum pname GLfixed param void glFogxOES - GLenum pname + GLenum pname GLfixed param void glFogxv - GLenum pname + GLenum pname const GLfixed *param void glFogxvOES - GLenum pname + GLenum pname const GLfixed *param @@ -13531,12 +15237,42 @@ typedef unsigned int GLhandleARB; GLsizei n const GLenum *bufs + + void glFramebufferFetchBarrierEXT + + + void glFramebufferFetchBarrierQCOM + + + void glFramebufferFoveationConfigQCOM + GLuint framebuffer + GLuint numLayers + GLuint focalPointsPerLayer + GLuint requestedFeatures + GLuint *providedFeatures + + + void glFramebufferFoveationParametersQCOM + GLuint framebuffer + GLuint layer + GLuint focalPoint + GLfloat focalX + GLfloat focalY + GLfloat gainX + GLfloat gainY + GLfloat foveaArea + void glFramebufferParameteri - GLenum target - GLenum pname + GLenum target + GLenum pname GLint param + + void glFramebufferPixelLocalStorageSizeEXT + GLuint target + GLsizei size + void glFramebufferReadBufferEXT GLuint framebuffer @@ -13561,29 +15297,36 @@ typedef unsigned int GLhandleARB; void glFramebufferRenderbufferOES - GLenum target - GLenum attachment - GLenum renderbuffertarget + GLenum target + GLenum attachment + GLenum renderbuffertarget GLuint renderbuffer void glFramebufferSampleLocationsfvARB - GLenum target + GLenum target GLuint start GLsizei count const GLfloat *v void glFramebufferSampleLocationsfvNV - GLenum target + GLenum target GLuint start GLsizei count const GLfloat *v + + void glFramebufferSamplePositionsfvAMD + GLenum target + GLuint numsamples + GLuint pixelindex + const GLfloat *values + void glFramebufferTexture - GLenum target - GLenum attachment + GLenum target + GLenum attachment GLuint texture GLint level @@ -13591,7 +15334,7 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture1D GLenum target GLenum attachment - GLenum textarget + GLenum textarget GLuint texture GLint level @@ -13600,7 +15343,7 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture1DEXT GLenum target GLenum attachment - GLenum textarget + GLenum textarget GLuint texture GLint level @@ -13610,7 +15353,7 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture2D GLenum target GLenum attachment - GLenum textarget + GLenum textarget GLuint texture GLint level @@ -13619,35 +15362,45 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture2DEXT GLenum target GLenum attachment - GLenum textarget + GLenum textarget GLuint texture GLint level + + void glFramebufferTexture2DDownsampleIMG + GLenum target + GLenum attachment + GLenum textarget + GLuint texture + GLint level + GLint xscale + GLint yscale + void glFramebufferTexture2DMultisampleEXT - GLenum target - GLenum attachment - GLenum textarget + GLenum target + GLenum attachment + GLenum textarget GLuint texture GLint level GLsizei samples void glFramebufferTexture2DMultisampleIMG - GLenum target - GLenum attachment - GLenum textarget + GLenum target + GLenum attachment + GLenum textarget GLuint texture GLint level GLsizei samples void glFramebufferTexture2DOES - GLenum target - GLenum attachment - GLenum textarget + GLenum target + GLenum attachment + GLenum textarget GLuint texture GLint level @@ -13655,7 +15408,7 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture3D GLenum target GLenum attachment - GLenum textarget + GLenum textarget GLuint texture GLint level GLint zoffset @@ -13665,7 +15418,7 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture3DEXT GLenum target GLenum attachment - GLenum textarget + GLenum textarget GLuint texture GLint level GLint zoffset @@ -13674,13 +15427,12 @@ typedef unsigned int GLhandleARB; void glFramebufferTexture3DOES - GLenum target - GLenum attachment - GLenum textarget + GLenum target + GLenum attachment + GLenum textarget GLuint texture GLint level GLint zoffset - void glFramebufferTextureARB @@ -13742,6 +15494,16 @@ typedef unsigned int GLhandleARB; GLint layer + + void glFramebufferTextureLayerDownsampleIMG + GLenum target + GLenum attachment + GLuint texture + GLint level + GLint layer + GLint xscale + GLint yscale + void glFramebufferTextureMultisampleMultiviewOVR GLenum target @@ -13938,6 +15700,11 @@ typedef unsigned int GLhandleARB; GLsizei n GLuint *ids + + void glGenQueryResourceTagNV + GLsizei n + GLint *tagIds + void glGenRenderbuffers GLsizei n @@ -13961,6 +15728,11 @@ typedef unsigned int GLhandleARB; GLsizei count GLuint *samplers + + void glGenSemaphoresEXT + GLsizei n + GLuint *semaphores + GLuint glGenSymbolsEXT GLenum datatype @@ -14015,18 +15787,18 @@ typedef unsigned int GLhandleARB; void glGenerateMipmap - GLenum target + GLenum target void glGenerateMipmapEXT - GLenum target + GLenum target void glGenerateMipmapOES - GLenum target + GLenum target void glGenerateMultiTexMipmapEXT @@ -14046,7 +15818,7 @@ typedef unsigned int GLhandleARB; void glGetActiveAtomicCounterBufferiv GLuint program GLuint bufferIndex - GLenum pname + GLenum pname GLint *params @@ -14056,7 +15828,7 @@ typedef unsigned int GLhandleARB; GLsizei bufSize GLsizei *length GLint *size - GLenum *type + GLenum *type GLchar *name @@ -14066,14 +15838,14 @@ typedef unsigned int GLhandleARB; GLsizei maxLength GLsizei *length GLint *size - GLenum *type + GLenum *type GLcharARB *name void glGetActiveSubroutineName GLuint program - GLenum shadertype + GLenum shadertype GLuint index GLsizei bufsize GLsizei *length @@ -14082,7 +15854,7 @@ typedef unsigned int GLhandleARB; void glGetActiveSubroutineUniformName GLuint program - GLenum shadertype + GLenum shadertype GLuint index GLsizei bufsize GLsizei *length @@ -14091,9 +15863,9 @@ typedef unsigned int GLhandleARB; void glGetActiveSubroutineUniformiv GLuint program - GLenum shadertype + GLenum shadertype GLuint index - GLenum pname + GLenum pname GLint *values @@ -14103,7 +15875,7 @@ typedef unsigned int GLhandleARB; GLsizei bufSize GLsizei *length GLint *size - GLenum *type + GLenum *type GLchar *name @@ -14113,7 +15885,7 @@ typedef unsigned int GLhandleARB; GLsizei maxLength GLsizei *length GLint *size - GLenum *type + GLenum *type GLcharARB *name @@ -14124,13 +15896,15 @@ typedef unsigned int GLhandleARB; GLsizei bufSize GLsizei *length GLchar *uniformBlockName + void glGetActiveUniformBlockiv GLuint program GLuint uniformBlockIndex - GLenum pname + GLenum pname GLint *params + void glGetActiveUniformName @@ -14139,14 +15913,16 @@ typedef unsigned int GLhandleARB; GLsizei bufSize GLsizei *length GLchar *uniformName + void glGetActiveUniformsiv GLuint program GLsizei uniformCount const GLuint *uniformIndices - GLenum pname + GLenum pname GLint *params + void glGetActiveVaryingNV @@ -14197,14 +15973,15 @@ typedef unsigned int GLhandleARB; void glGetBooleanIndexedvEXT - GLenum target + GLenum target GLuint index GLboolean *data + void glGetBooleani_v - GLenum target + GLenum target GLuint index GLboolean *data @@ -14235,7 +16012,7 @@ typedef unsigned int GLhandleARB; void glGetBufferParameterui64vNV - GLenum target + GLenum target GLenum pname GLuint64EXT *params @@ -14254,8 +16031,8 @@ typedef unsigned int GLhandleARB; void glGetBufferPointervOES - GLenum target - GLenum pname + GLenum target + GLenum pname void **params @@ -14282,23 +16059,23 @@ typedef unsigned int GLhandleARB; void glGetClipPlanef - GLenum plane + GLenum plane GLfloat *equation void glGetClipPlanefOES - GLenum plane + GLenum plane GLfloat *equation void glGetClipPlanex - GLenum plane + GLenum plane GLfixed *equation void glGetClipPlanexOES - GLenum plane + GLenum plane GLfixed *equation @@ -14321,14 +16098,14 @@ typedef unsigned int GLhandleARB; void glGetColorTableParameterfv GLenum target - GLenum pname + GLenum pname GLfloat *params void glGetColorTableParameterfvEXT GLenum target - GLenum pname + GLenum pname GLfloat *params @@ -14342,14 +16119,14 @@ typedef unsigned int GLhandleARB; void glGetColorTableParameteriv GLenum target - GLenum pname + GLenum pname GLint *params void glGetColorTableParameterivEXT GLenum target - GLenum pname + GLenum pname GLint *params @@ -14483,7 +16260,7 @@ typedef unsigned int GLhandleARB; void glGetConvolutionParameterfv GLenum target - GLenum pname + GLenum pname GLfloat *params @@ -14497,7 +16274,7 @@ typedef unsigned int GLhandleARB; void glGetConvolutionParameteriv GLenum target - GLenum pname + GLenum pname GLint *params @@ -14523,10 +16300,10 @@ typedef unsigned int GLhandleARB; GLuint glGetDebugMessageLog GLuint count GLsizei bufSize - GLenum *sources - GLenum *types + GLenum *sources + GLenum *types GLuint *ids - GLenum *severities + GLenum *severities GLsizei *lengths GLchar *messageLog @@ -14535,7 +16312,7 @@ typedef unsigned int GLhandleARB; GLuint count GLsizei bufsize GLenum *categories - GLuint *severities + GLuint *severities GLuint *ids GLsizei *lengths GLchar *message @@ -14544,10 +16321,10 @@ typedef unsigned int GLhandleARB; GLuint glGetDebugMessageLogARB GLuint count GLsizei bufSize - GLenum *sources - GLenum *types + GLenum *sources + GLenum *types GLuint *ids - GLenum *severities + GLenum *severities GLsizei *lengths GLchar *messageLog @@ -14556,10 +16333,10 @@ typedef unsigned int GLhandleARB; GLuint glGetDebugMessageLogKHR GLuint count GLsizei bufSize - GLenum *sources - GLenum *types + GLenum *sources + GLenum *types GLuint *ids - GLenum *severities + GLenum *severities GLsizei *lengths GLchar *messageLog @@ -14579,7 +16356,7 @@ typedef unsigned int GLhandleARB; void glGetDoublei_v - GLenum target + GLenum target GLuint index GLdouble *data @@ -14640,12 +16417,12 @@ typedef unsigned int GLhandleARB; void glGetFixedv - GLenum pname + GLenum pname GLfixed *params void glGetFixedvOES - GLenum pname + GLenum pname GLfixed *params @@ -14675,6 +16452,13 @@ typedef unsigned int GLhandleARB; GLfloat *data + + void glGetFloati_vOES + GLenum target + GLuint index + GLfloat *data + + void glGetFloatv GLenum pname @@ -14735,7 +16519,7 @@ typedef unsigned int GLhandleARB; void glGetFramebufferAttachmentParameteriv GLenum target GLenum attachment - GLenum pname + GLenum pname GLint *params @@ -14743,22 +16527,31 @@ typedef unsigned int GLhandleARB; void glGetFramebufferAttachmentParameterivEXT GLenum target GLenum attachment - GLenum pname + GLenum pname GLint *params void glGetFramebufferAttachmentParameterivOES - GLenum target - GLenum attachment - GLenum pname + GLenum target + GLenum attachment + GLenum pname GLint *params + + void glGetFramebufferParameterfvAMD + GLenum target + GLenum pname + GLuint numsamples + GLuint pixelindex + GLsizei size + GLfloat *values + void glGetFramebufferParameteriv - GLenum target - GLenum pname + GLenum target + GLenum pname GLint *params @@ -14768,16 +16561,20 @@ typedef unsigned int GLhandleARB; GLint *params - GLenum glGetGraphicsResetStatus + GLsizei glGetFramebufferPixelLocalStorageSizeEXT + GLuint target + + + GLenum glGetGraphicsResetStatus - GLenum glGetGraphicsResetStatusARB + GLenum glGetGraphicsResetStatusARB - GLenum glGetGraphicsResetStatusEXT + GLenum glGetGraphicsResetStatusEXT - GLenum glGetGraphicsResetStatusKHR + GLenum glGetGraphicsResetStatusKHR @@ -14786,7 +16583,7 @@ typedef unsigned int GLhandleARB; void glGetHistogram - GLenum target + GLenum target GLboolean reset GLenum format GLenum type @@ -14805,8 +16602,8 @@ typedef unsigned int GLhandleARB; void glGetHistogramParameterfv - GLenum target - GLenum pname + GLenum target + GLenum pname GLfloat *params @@ -14819,8 +16616,8 @@ typedef unsigned int GLhandleARB; void glGetHistogramParameteriv - GLenum target - GLenum pname + GLenum target + GLenum pname GLint *params @@ -14833,8 +16630,8 @@ typedef unsigned int GLhandleARB; void glGetHistogramParameterxvOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed *params @@ -14843,7 +16640,7 @@ typedef unsigned int GLhandleARB; GLint level GLboolean layered GLint layer - GLenum format + GLenum format GLuint64 glGetImageHandleNV @@ -14851,7 +16648,7 @@ typedef unsigned int GLhandleARB; GLint level GLboolean layered GLint layer - GLenum format + GLenum format void glGetImageTransformParameterfvHP @@ -14878,18 +16675,18 @@ typedef unsigned int GLhandleARB; void glGetInteger64i_v - GLenum target + GLenum target GLuint index GLint64 *data void glGetInteger64v - GLenum pname + GLenum pname GLint64 *data void glGetInteger64vAPPLE - GLenum pname + GLenum pname GLint64 *params @@ -14899,16 +16696,17 @@ typedef unsigned int GLhandleARB; GLuint index GLint *data + void glGetIntegeri_v - GLenum target + GLenum target GLuint index GLint *data void glGetIntegeri_vEXT - GLenum target + GLenum target GLuint index GLint *data @@ -14931,26 +16729,26 @@ typedef unsigned int GLhandleARB; void glGetInternalformatSampleivNV - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLsizei samples - GLenum pname + GLenum pname GLsizei bufSize GLint *params void glGetInternalformati64v - GLenum target - GLenum internalformat - GLenum pname + GLenum target + GLenum internalformat + GLenum pname GLsizei bufSize GLint64 *params void glGetInternalformativ - GLenum target - GLenum internalformat - GLenum pname + GLenum target + GLenum internalformat + GLenum pname GLsizei bufSize GLint *params @@ -14988,20 +16786,20 @@ typedef unsigned int GLhandleARB; void glGetLightxOES - GLenum light - GLenum pname + GLenum light + GLenum pname GLfixed *params void glGetLightxv - GLenum light - GLenum pname + GLenum light + GLenum pname GLfixed *params void glGetLightxvOES - GLenum light - GLenum pname + GLenum light + GLenum pname GLfixed *params @@ -15093,8 +16891,8 @@ typedef unsigned int GLhandleARB; void glGetMapxvOES - GLenum target - GLenum query + GLenum target + GLenum query GLfixed *v @@ -15113,25 +16911,31 @@ typedef unsigned int GLhandleARB; void glGetMaterialxOES - GLenum face - GLenum pname + GLenum face + GLenum pname GLfixed param void glGetMaterialxv - GLenum face - GLenum pname + GLenum face + GLenum pname GLfixed *params void glGetMaterialxvOES - GLenum face - GLenum pname + GLenum face + GLenum pname GLfixed *params + + void glGetMemoryObjectParameterivEXT + GLuint memoryObject + GLenum pname + GLint *params + void glGetMinmax - GLenum target + GLenum target GLboolean reset GLenum format GLenum type @@ -15150,8 +16954,8 @@ typedef unsigned int GLhandleARB; void glGetMinmaxParameterfv - GLenum target - GLenum pname + GLenum target + GLenum pname GLfloat *params @@ -15164,8 +16968,8 @@ typedef unsigned int GLhandleARB; void glGetMinmaxParameteriv - GLenum target - GLenum pname + GLenum target + GLenum pname GLint *params @@ -15266,7 +17070,7 @@ typedef unsigned int GLhandleARB; void glGetMultisamplefv - GLenum pname + GLenum pname GLuint index GLfloat *val @@ -15280,13 +17084,13 @@ typedef unsigned int GLhandleARB; void glGetNamedBufferParameteri64v GLuint buffer - GLenum pname + GLenum pname GLint64 *params void glGetNamedBufferParameteriv GLuint buffer - GLenum pname + GLenum pname GLint *params @@ -15304,7 +17108,7 @@ typedef unsigned int GLhandleARB; void glGetNamedBufferPointerv GLuint buffer - GLenum pname + GLenum pname void **params @@ -15328,10 +17132,19 @@ typedef unsigned int GLhandleARB; void *data - void glGetNamedFramebufferAttachmentParameteriv + void glGetNamedFramebufferParameterfvAMD GLuint framebuffer - GLenum attachment GLenum pname + GLuint numsamples + GLuint pixelindex + GLsizei size + GLfloat *values + + + void glGetNamedFramebufferAttachmentParameteriv + GLuint framebuffer + GLenum attachment + GLenum pname GLint *params @@ -15344,7 +17157,7 @@ typedef unsigned int GLhandleARB; void glGetNamedFramebufferParameteriv GLuint framebuffer - GLenum pname + GLenum pname GLint *param @@ -15392,13 +17205,13 @@ typedef unsigned int GLhandleARB; void glGetNamedProgramivEXT GLuint program GLenum target - GLenum pname + GLenum pname GLint *params void glGetNamedRenderbufferParameteriv GLuint renderbuffer - GLenum pname + GLenum pname GLint *params @@ -15660,7 +17473,7 @@ typedef unsigned int GLhandleARB; GLuint queryHandle GLuint flags GLsizei dataSize - GLvoid *data + void *data GLuint *bytesWritten @@ -15701,7 +17514,7 @@ typedef unsigned int GLhandleARB; void glGetPixelMapxv - GLenum map + GLenum map GLint size GLfixed *values @@ -15717,14 +17530,14 @@ typedef unsigned int GLhandleARB; void glGetPixelTransformParameterfvEXT - GLenum target + GLenum target GLenum pname GLfloat *params void glGetPixelTransformParameterivEXT - GLenum target + GLenum target GLenum pname GLint *params @@ -15817,8 +17630,8 @@ typedef unsigned int GLhandleARB; void glGetProgramInterfaceiv GLuint program - GLenum programInterface - GLenum pname + GLenum programInterface + GLenum pname GLint *params @@ -15894,43 +17707,43 @@ typedef unsigned int GLhandleARB; void glGetProgramPipelineiv GLuint pipeline - GLenum pname + GLenum pname GLint *params void glGetProgramPipelineivEXT GLuint pipeline - GLenum pname + GLenum pname GLint *params GLuint glGetProgramResourceIndex GLuint program - GLenum programInterface + GLenum programInterface const GLchar *name GLint glGetProgramResourceLocation GLuint program - GLenum programInterface + GLenum programInterface const GLchar *name GLint glGetProgramResourceLocationIndex GLuint program - GLenum programInterface + GLenum programInterface const GLchar *name GLint glGetProgramResourceLocationIndexEXT GLuint program - GLenum programInterface + GLenum programInterface const GLchar *name void glGetProgramResourceName GLuint program - GLenum programInterface + GLenum programInterface GLuint index GLsizei bufSize GLsizei *length @@ -15939,7 +17752,7 @@ typedef unsigned int GLhandleARB; void glGetProgramResourcefvNV GLuint program - GLenum programInterface + GLenum programInterface GLuint index GLsizei propCount const GLenum *props @@ -15950,7 +17763,7 @@ typedef unsigned int GLhandleARB; void glGetProgramResourceiv GLuint program - GLenum programInterface + GLenum programInterface GLuint index GLsizei propCount const GLenum *props @@ -15961,8 +17774,8 @@ typedef unsigned int GLhandleARB; void glGetProgramStageiv GLuint program - GLenum shadertype - GLenum pname + GLenum shadertype + GLenum pname GLint *values @@ -15987,7 +17800,7 @@ typedef unsigned int GLhandleARB; void glGetProgramiv GLuint program - GLenum pname + GLenum pname GLint *params @@ -16008,47 +17821,47 @@ typedef unsigned int GLhandleARB; void glGetQueryBufferObjecti64v GLuint id GLuint buffer - GLenum pname + GLenum pname GLintptr offset void glGetQueryBufferObjectiv GLuint id GLuint buffer - GLenum pname + GLenum pname GLintptr offset void glGetQueryBufferObjectui64v GLuint id GLuint buffer - GLenum pname + GLenum pname GLintptr offset void glGetQueryBufferObjectuiv GLuint id GLuint buffer - GLenum pname + GLenum pname GLintptr offset void glGetQueryIndexediv GLenum target GLuint index - GLenum pname + GLenum pname GLint *params void glGetQueryObjecti64v GLuint id - GLenum pname + GLenum pname GLint64 *params void glGetQueryObjecti64vEXT GLuint id - GLenum pname + GLenum pname GLint64 *params @@ -16056,34 +17869,34 @@ typedef unsigned int GLhandleARB; void glGetQueryObjectiv GLuint id - GLenum pname + GLenum pname GLint *params void glGetQueryObjectivARB GLuint id - GLenum pname + GLenum pname GLint *params void glGetQueryObjectivEXT GLuint id - GLenum pname - GLint *params + GLenum pname + GLint *params void glGetQueryObjectui64v GLuint id - GLenum pname + GLenum pname GLuint64 *params void glGetQueryObjectui64vEXT GLuint id - GLenum pname + GLenum pname GLuint64 *params @@ -16091,119 +17904,125 @@ typedef unsigned int GLhandleARB; void glGetQueryObjectuiv GLuint id - GLenum pname + GLenum pname GLuint *params void glGetQueryObjectuivARB GLuint id - GLenum pname + GLenum pname GLuint *params void glGetQueryObjectuivEXT GLuint id - GLenum pname - GLuint *params + GLenum pname + GLuint *params void glGetQueryiv - GLenum target - GLenum pname + GLenum target + GLenum pname GLint *params void glGetQueryivARB - GLenum target - GLenum pname + GLenum target + GLenum pname GLint *params void glGetQueryivEXT - GLenum target - GLenum pname - GLint *params + GLenum target + GLenum pname + GLint *params void glGetRenderbufferParameteriv GLenum target - GLenum pname + GLenum pname GLint *params void glGetRenderbufferParameterivEXT GLenum target - GLenum pname + GLenum pname GLint *params void glGetRenderbufferParameterivOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLint *params void glGetSamplerParameterIiv GLuint sampler - GLenum pname + GLenum pname GLint *params void glGetSamplerParameterIivEXT GLuint sampler - GLenum pname + GLenum pname GLint *params void glGetSamplerParameterIivOES GLuint sampler - GLenum pname + GLenum pname GLint *params void glGetSamplerParameterIuiv GLuint sampler - GLenum pname + GLenum pname GLuint *params void glGetSamplerParameterIuivEXT GLuint sampler - GLenum pname + GLenum pname GLuint *params void glGetSamplerParameterIuivOES GLuint sampler - GLenum pname + GLenum pname GLuint *params void glGetSamplerParameterfv GLuint sampler - GLenum pname + GLenum pname GLfloat *params void glGetSamplerParameteriv GLuint sampler - GLenum pname + GLenum pname GLint *params + + void glGetSemaphoreParameterui64vEXT + GLuint semaphore + GLenum pname + GLuint64 *params + void glGetSeparableFilter - GLenum target + GLenum target GLenum format GLenum type void *row @@ -16232,10 +18051,10 @@ typedef unsigned int GLhandleARB; void glGetShaderPrecisionFormat - GLenum shadertype - GLenum precisiontype + GLenum shadertype + GLenum precisiontype GLint *range - GLint *precision + GLint *precision void glGetShaderSource @@ -16255,7 +18074,7 @@ typedef unsigned int GLhandleARB; void glGetShaderiv GLuint shader - GLenum pname + GLenum pname GLint *params @@ -16267,7 +18086,7 @@ typedef unsigned int GLhandleARB; GLushort glGetStageIndexNV - GLenum shadertype + GLenum shadertype const GLubyte *glGetString @@ -16276,25 +18095,26 @@ typedef unsigned int GLhandleARB; const GLubyte *glGetStringi - GLenum name + GLenum name GLuint index + GLuint glGetSubroutineIndex GLuint program - GLenum shadertype + GLenum shadertype const GLchar *name GLint glGetSubroutineUniformLocation GLuint program - GLenum shadertype + GLenum shadertype const GLchar *name void glGetSynciv GLsync sync - GLenum pname + GLenum pname GLsizei bufSize GLsizei *length GLint *values @@ -16302,7 +18122,7 @@ typedef unsigned int GLhandleARB; void glGetSyncivAPPLE GLsync sync - GLenum pname + GLenum pname GLsizei bufSize GLsizei *length GLint *values @@ -16334,14 +18154,14 @@ typedef unsigned int GLhandleARB; void glGetTexEnvxv - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed *params void glGetTexEnvxvOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed *params @@ -16367,8 +18187,8 @@ typedef unsigned int GLhandleARB; void glGetTexGenfvOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname GLfloat *params @@ -16380,14 +18200,14 @@ typedef unsigned int GLhandleARB; void glGetTexGenivOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname GLint *params void glGetTexGenxvOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname GLfixed *params @@ -16418,9 +18238,9 @@ typedef unsigned int GLhandleARB; void glGetTexLevelParameterxvOES - GLenum target + GLenum target GLint level - GLenum pname + GLenum pname GLfixed *params @@ -16487,20 +18307,25 @@ typedef unsigned int GLhandleARB; void glGetTexParameterxv - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed *params void glGetTexParameterxvOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed *params GLuint64 glGetTextureHandleARB GLuint texture + + GLuint64 glGetTextureHandleIMG + GLuint texture + + GLuint64 glGetTextureHandleNV GLuint texture @@ -16509,8 +18334,8 @@ typedef unsigned int GLhandleARB; void glGetTextureImage GLuint texture GLint level - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *pixels @@ -16527,7 +18352,7 @@ typedef unsigned int GLhandleARB; void glGetTextureLevelParameterfv GLuint texture GLint level - GLenum pname + GLenum pname GLfloat *params @@ -16542,7 +18367,7 @@ typedef unsigned int GLhandleARB; void glGetTextureLevelParameteriv GLuint texture GLint level - GLenum pname + GLenum pname GLint *params @@ -16556,7 +18381,7 @@ typedef unsigned int GLhandleARB; void glGetTextureParameterIiv GLuint texture - GLenum pname + GLenum pname GLint *params @@ -16569,7 +18394,7 @@ typedef unsigned int GLhandleARB; void glGetTextureParameterIuiv GLuint texture - GLenum pname + GLenum pname GLuint *params @@ -16582,7 +18407,7 @@ typedef unsigned int GLhandleARB; void glGetTextureParameterfv GLuint texture - GLenum pname + GLenum pname GLfloat *params @@ -16595,7 +18420,7 @@ typedef unsigned int GLhandleARB; void glGetTextureParameteriv GLuint texture - GLenum pname + GLenum pname GLint *params @@ -16610,6 +18435,12 @@ typedef unsigned int GLhandleARB; GLuint texture GLuint sampler + + GLuint64 glGetTextureSamplerHandleIMG + GLuint texture + GLuint sampler + + GLuint64 glGetTextureSamplerHandleNV GLuint texture @@ -16625,8 +18456,8 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *pixels @@ -16647,6 +18478,7 @@ typedef unsigned int GLhandleARB; GLsizei *size GLenum *type GLchar *name + void glGetTransformFeedbackVaryingEXT @@ -16668,21 +18500,21 @@ typedef unsigned int GLhandleARB; void glGetTransformFeedbacki64_v GLuint xfb - GLenum pname + GLenum pname GLuint index GLint64 *param void glGetTransformFeedbacki_v GLuint xfb - GLenum pname + GLenum pname GLuint index GLint *param void glGetTransformFeedbackiv GLuint xfb - GLenum pname + GLenum pname GLint *param @@ -16696,6 +18528,7 @@ typedef unsigned int GLhandleARB; GLuint glGetUniformBlockIndex GLuint program const GLchar *uniformBlockName + GLint glGetUniformBufferSizeEXT @@ -16708,6 +18541,7 @@ typedef unsigned int GLhandleARB; GLsizei uniformCount const GLchar *const*uniformNames GLuint *uniformIndices + GLint glGetUniformLocation @@ -16727,7 +18561,7 @@ typedef unsigned int GLhandleARB; void glGetUniformSubroutineuiv - GLenum shadertype + GLenum shadertype GLint location GLuint *params @@ -16800,6 +18634,17 @@ typedef unsigned int GLhandleARB; GLuint *params + + void glGetUnsignedBytevEXT + GLenum pname + GLubyte *data + + + void glGetUnsignedBytei_vEXT + GLenum target + GLuint index + GLubyte *data + void glGetVariantArrayObjectfvATI GLuint id @@ -16845,46 +18690,46 @@ typedef unsigned int GLhandleARB; void glGetVertexArrayIndexed64iv GLuint vaobj GLuint index - GLenum pname + GLenum pname GLint64 *param void glGetVertexArrayIndexediv GLuint vaobj GLuint index - GLenum pname + GLenum pname GLint *param void glGetVertexArrayIntegeri_vEXT GLuint vaobj GLuint index - GLenum pname + GLenum pname GLint *param void glGetVertexArrayIntegervEXT GLuint vaobj - GLenum pname + GLenum pname GLint *param void glGetVertexArrayPointeri_vEXT GLuint vaobj GLuint index - GLenum pname + GLenum pname void **param void glGetVertexArrayPointervEXT GLuint vaobj - GLenum pname + GLenum pname void **param void glGetVertexArrayiv GLuint vaobj - GLenum pname + GLenum pname GLint *param @@ -16928,32 +18773,32 @@ typedef unsigned int GLhandleARB; void glGetVertexAttribLdv GLuint index - GLenum pname + GLenum pname GLdouble *params void glGetVertexAttribLdvEXT GLuint index - GLenum pname + GLenum pname GLdouble *params void glGetVertexAttribLi64vNV GLuint index - GLenum pname + GLenum pname GLint64EXT *params void glGetVertexAttribLui64vARB GLuint index - GLenum pname + GLenum pname GLuint64EXT *params void glGetVertexAttribLui64vNV GLuint index - GLenum pname + GLenum pname GLuint64EXT *params @@ -17099,161 +18944,161 @@ typedef unsigned int GLhandleARB; void glGetnColorTable - GLenum target - GLenum format - GLenum type + GLenum target + GLenum format + GLenum type GLsizei bufSize void *table void glGetnColorTableARB - GLenum target - GLenum format - GLenum type + GLenum target + GLenum format + GLenum type GLsizei bufSize void *table void glGetnCompressedTexImage - GLenum target + GLenum target GLint lod GLsizei bufSize void *pixels void glGetnCompressedTexImageARB - GLenum target + GLenum target GLint lod GLsizei bufSize void *img void glGetnConvolutionFilter - GLenum target - GLenum format - GLenum type + GLenum target + GLenum format + GLenum type GLsizei bufSize void *image void glGetnConvolutionFilterARB - GLenum target - GLenum format - GLenum type + GLenum target + GLenum format + GLenum type GLsizei bufSize void *image void glGetnHistogram - GLenum target + GLenum target GLboolean reset - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *values void glGetnHistogramARB - GLenum target + GLenum target GLboolean reset - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *values void glGetnMapdv - GLenum target - GLenum query + GLenum target + GLenum query GLsizei bufSize GLdouble *v void glGetnMapdvARB - GLenum target - GLenum query + GLenum target + GLenum query GLsizei bufSize GLdouble *v void glGetnMapfv - GLenum target - GLenum query + GLenum target + GLenum query GLsizei bufSize GLfloat *v void glGetnMapfvARB - GLenum target - GLenum query + GLenum target + GLenum query GLsizei bufSize GLfloat *v void glGetnMapiv - GLenum target - GLenum query + GLenum target + GLenum query GLsizei bufSize GLint *v void glGetnMapivARB - GLenum target - GLenum query + GLenum target + GLenum query GLsizei bufSize GLint *v void glGetnMinmax - GLenum target + GLenum target GLboolean reset - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *values void glGetnMinmaxARB - GLenum target + GLenum target GLboolean reset - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *values void glGetnPixelMapfv - GLenum map + GLenum map GLsizei bufSize GLfloat *values void glGetnPixelMapfvARB - GLenum map + GLenum map GLsizei bufSize GLfloat *values void glGetnPixelMapuiv - GLenum map + GLenum map GLsizei bufSize GLuint *values void glGetnPixelMapuivARB - GLenum map + GLenum map GLsizei bufSize GLuint *values void glGetnPixelMapusv - GLenum map + GLenum map GLsizei bufSize GLushort *values void glGetnPixelMapusvARB - GLenum map + GLenum map GLsizei bufSize GLushort *values @@ -17269,9 +19114,9 @@ typedef unsigned int GLhandleARB; void glGetnSeparableFilter - GLenum target - GLenum format - GLenum type + GLenum target + GLenum format + GLenum type GLsizei rowBufSize void *row GLsizei columnBufSize @@ -17280,9 +19125,9 @@ typedef unsigned int GLhandleARB; void glGetnSeparableFilterARB - GLenum target - GLenum format - GLenum type + GLenum target + GLenum format + GLenum type GLsizei rowBufSize void *row GLsizei columnBufSize @@ -17291,19 +19136,19 @@ typedef unsigned int GLhandleARB; void glGetnTexImage - GLenum target + GLenum target GLint level - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize - void *pixels + void *pixels void glGetnTexImageARB - GLenum target + GLenum target GLint level - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *img @@ -17312,7 +19157,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei bufSize - GLdouble *params + GLdouble *params void glGetnUniformdvARB @@ -17326,7 +19171,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei bufSize - GLfloat *params + GLfloat *params void glGetnUniformfvARB @@ -17341,13 +19186,14 @@ typedef unsigned int GLhandleARB; GLint location GLsizei bufSize GLfloat *params + void glGetnUniformfvKHR GLuint program GLint location GLsizei bufSize - GLfloat *params + GLfloat *params @@ -17355,14 +19201,14 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei bufSize - GLint64 *params + GLint64 *params void glGetnUniformiv GLuint program GLint location GLsizei bufSize - GLint *params + GLint *params void glGetnUniformivARB @@ -17377,13 +19223,14 @@ typedef unsigned int GLhandleARB; GLint location GLsizei bufSize GLint *params + void glGetnUniformivKHR GLuint program GLint location GLsizei bufSize - GLint *params + GLint *params @@ -17391,14 +19238,14 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei bufSize - GLuint64 *params + GLuint64 *params void glGetnUniformuiv GLuint program GLint location GLsizei bufSize - GLuint *params + GLuint *params void glGetnUniformuivARB @@ -17412,7 +19259,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei bufSize - GLuint *params + GLuint *params @@ -17460,9 +19307,9 @@ typedef unsigned int GLhandleARB; void glHistogram - GLenum target + GLenum target GLsizei width - GLenum internalformat + GLenum internalformat GLboolean sink @@ -17470,7 +19317,7 @@ typedef unsigned int GLhandleARB; void glHistogramEXT GLenum target GLsizei width - GLenum internalformat + GLenum internalformat GLboolean sink @@ -17505,6 +19352,45 @@ typedef unsigned int GLhandleARB; GLenum pname const GLint *params + + void glImportMemoryFdEXT + GLuint memory + GLuint64 size + GLenum handleType + GLint fd + + + void glImportMemoryWin32HandleEXT + GLuint memory + GLuint64 size + GLenum handleType + void *handle + + + void glImportMemoryWin32NameEXT + GLuint memory + GLuint64 size + GLenum handleType + const void *name + + + void glImportSemaphoreFdEXT + GLuint semaphore + GLenum handleType + GLint fd + + + void glImportSemaphoreWin32HandleEXT + GLuint semaphore + GLenum handleType + void *handle + + + void glImportSemaphoreWin32NameEXT + GLuint semaphore + GLenum handleType + const void *name + GLsync glImportSyncEXT GLenum external_sync_type @@ -17655,7 +19541,7 @@ typedef unsigned int GLhandleARB; void glInvalidateFramebuffer - GLenum target + GLenum target GLsizei numAttachments const GLenum *attachments @@ -17663,13 +19549,13 @@ typedef unsigned int GLhandleARB; void glInvalidateNamedFramebufferData GLuint framebuffer GLsizei numAttachments - const GLenum *attachments + const GLenum *attachments void glInvalidateNamedFramebufferSubData GLuint framebuffer GLsizei numAttachments - const GLenum *attachments + const GLenum *attachments GLint x GLint y GLsizei width @@ -17679,7 +19565,7 @@ typedef unsigned int GLhandleARB; void glInvalidateSubFramebuffer GLenum target GLsizei numAttachments - const GLenum *attachments + const GLenum *attachments GLint x GLint y GLsizei width @@ -17729,30 +19615,31 @@ typedef unsigned int GLhandleARB; GLboolean glIsEnabledIndexedEXT - GLenum target + GLenum target GLuint index + GLboolean glIsEnabledi - GLenum target + GLenum target GLuint index GLboolean glIsEnablediEXT - GLenum target + GLenum target GLuint index GLboolean glIsEnablediNV - GLenum target + GLenum target GLuint index GLboolean glIsEnablediOES - GLenum target + GLenum target GLuint index @@ -17793,6 +19680,10 @@ typedef unsigned int GLhandleARB; GLuint list + + GLboolean glIsMemoryObjectEXT + GLuint memoryObject + GLboolean glIsNameAMD GLenum identifier @@ -17885,6 +19776,10 @@ typedef unsigned int GLhandleARB; GLboolean glIsRenderbufferOES GLuint renderbuffer + + GLboolean glIsSemaphoreEXT + GLuint semaphore + GLboolean glIsSampler GLuint sampler @@ -17959,6 +19854,37 @@ typedef unsigned int GLhandleARB; GLuint index GLenum pname + + void glLGPUCopyImageSubDataNVX + GLuint sourceGpu + GLbitfield destinationGpuMask + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srxY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei width + GLsizei height + GLsizei depth + + + void glLGPUInterlockNVX + + + void glLGPUNamedBufferSubDataNVX + GLbitfield gpuMask + GLuint buffer + GLintptr offset + GLsizeiptr size + const void *data + void glLabelObjectEXT GLenum type @@ -17997,22 +19923,22 @@ typedef unsigned int GLhandleARB; void glLightModelx - GLenum pname + GLenum pname GLfixed param void glLightModelxOES - GLenum pname + GLenum pname GLfixed param void glLightModelxv - GLenum pname + GLenum pname const GLfixed *param void glLightModelxvOES - GLenum pname + GLenum pname const GLfixed *param @@ -18045,26 +19971,26 @@ typedef unsigned int GLhandleARB; void glLightx - GLenum light - GLenum pname + GLenum light + GLenum pname GLfixed param void glLightxOES - GLenum light - GLenum pname + GLenum light + GLenum pname GLfixed param void glLightxv - GLenum light - GLenum pname + GLenum light + GLenum pname const GLfixed *params void glLightxvOES - GLenum light - GLenum pname + GLenum light + GLenum pname const GLfixed *params @@ -18287,7 +20213,7 @@ typedef unsigned int GLhandleARB; void glMap1xOES - GLenum target + GLenum target GLfixed u1 GLfixed u2 GLint stride @@ -18324,7 +20250,7 @@ typedef unsigned int GLhandleARB; void glMap2xOES - GLenum target + GLenum target GLfixed u1 GLfixed u2 GLint ustride @@ -18348,8 +20274,8 @@ typedef unsigned int GLhandleARB; void *glMapBufferOES - GLenum target - GLenum access + GLenum target + GLenum access @@ -18362,10 +20288,10 @@ typedef unsigned int GLhandleARB; void *glMapBufferRangeEXT - GLenum target + GLenum target GLintptr offset GLsizeiptr length - GLbitfield access + GLbitfield access @@ -18431,19 +20357,19 @@ typedef unsigned int GLhandleARB; void *glMapNamedBuffer GLuint buffer - GLenum access + GLenum access void *glMapNamedBufferEXT GLuint buffer - GLenum access + GLenum access void *glMapNamedBufferRange GLuint buffer GLintptr offset GLsizeiptr length - GLbitfield access + GLbitfield access void *glMapNamedBufferRangeEXT @@ -18554,26 +20480,26 @@ typedef unsigned int GLhandleARB; void glMaterialx - GLenum face - GLenum pname + GLenum face + GLenum pname GLfixed param void glMaterialxOES - GLenum face - GLenum pname + GLenum face + GLenum pname GLfixed param void glMaterialxv - GLenum face - GLenum pname + GLenum face + GLenum pname const GLfixed *param void glMaterialxvOES - GLenum face - GLenum pname + GLenum face + GLenum pname const GLfixed *param @@ -18596,7 +20522,7 @@ typedef unsigned int GLhandleARB; void glMatrixIndexPointerOES GLint size - GLenum type + GLenum type GLsizei stride const void *pointer @@ -18759,23 +20685,34 @@ typedef unsigned int GLhandleARB; GLfloat y GLfloat z + + void glMaxShaderCompilerThreadsKHR + GLuint count + void glMaxShaderCompilerThreadsARB GLuint count + void glMemoryBarrier - GLbitfield barriers + GLbitfield barriers void glMemoryBarrierByRegion - GLbitfield barriers + GLbitfield barriers void glMemoryBarrierEXT - GLbitfield barriers + GLbitfield barriers + + void glMemoryObjectParameterivEXT + GLuint memoryObject + GLenum pname + const GLint *params + void glMinSampleShading GLfloat value @@ -18792,15 +20729,15 @@ typedef unsigned int GLhandleARB; void glMinmax - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLboolean sink void glMinmaxEXT GLenum target - GLenum internalformat + GLenum internalformat GLboolean sink @@ -18862,14 +20799,14 @@ typedef unsigned int GLhandleARB; void glMultiDrawArraysIndirect - GLenum mode + GLenum mode const void *indirect GLsizei drawcount GLsizei stride void glMultiDrawArraysIndirectAMD - GLenum mode + GLenum mode const void *indirect GLsizei primcount GLsizei stride @@ -18877,7 +20814,7 @@ typedef unsigned int GLhandleARB; void glMultiDrawArraysIndirectBindlessCountNV - GLenum mode + GLenum mode const void *indirect GLsizei drawCount GLsizei maxDrawCount @@ -18886,23 +20823,32 @@ typedef unsigned int GLhandleARB; void glMultiDrawArraysIndirectBindlessNV - GLenum mode + GLenum mode const void *indirect GLsizei drawCount GLsizei stride GLint vertexBufferCount + + void glMultiDrawArraysIndirectCount + GLenum mode + const void *indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + void glMultiDrawArraysIndirectCountARB - GLenum mode - GLintptr indirect + GLenum mode + const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride + void glMultiDrawArraysIndirectEXT - GLenum mode + GLenum mode const void *indirect GLsizei drawcount GLsizei stride @@ -18925,7 +20871,7 @@ typedef unsigned int GLhandleARB; void glMultiDrawElementsBaseVertex - GLenum mode + GLenum mode const GLsizei *count GLenum type const void *const*indices @@ -18934,17 +20880,7 @@ typedef unsigned int GLhandleARB; void glMultiDrawElementsBaseVertexEXT - GLenum mode - const GLsizei *count - GLenum type - const void *const*indices - GLsizei primcount - const GLint *basevertex - - - - void glMultiDrawElementsBaseVertexOES - GLenum mode + GLenum mode const GLsizei *count GLenum type const void *const*indices @@ -18963,16 +20899,16 @@ typedef unsigned int GLhandleARB; void glMultiDrawElementsIndirect - GLenum mode - GLenum type + GLenum mode + GLenum type const void *indirect GLsizei drawcount GLsizei stride void glMultiDrawElementsIndirectAMD - GLenum mode - GLenum type + GLenum mode + GLenum type const void *indirect GLsizei primcount GLsizei stride @@ -18980,8 +20916,8 @@ typedef unsigned int GLhandleARB; void glMultiDrawElementsIndirectBindlessCountNV - GLenum mode - GLenum type + GLenum mode + GLenum type const void *indirect GLsizei drawCount GLsizei maxDrawCount @@ -18990,26 +20926,36 @@ typedef unsigned int GLhandleARB; void glMultiDrawElementsIndirectBindlessNV - GLenum mode - GLenum type + GLenum mode + GLenum type const void *indirect GLsizei drawCount GLsizei stride GLint vertexBufferCount - void glMultiDrawElementsIndirectCountARB - GLenum mode + void glMultiDrawElementsIndirectCount + GLenum mode GLenum type - GLintptr indirect + const void *indirect GLintptr drawcount GLsizei maxdrawcount GLsizei stride + + void glMultiDrawElementsIndirectCountARB + GLenum mode + GLenum type + const void *indirect + GLintptr drawcount + GLsizei maxdrawcount + GLsizei stride + + void glMultiDrawElementsIndirectEXT - GLenum mode - GLenum type + GLenum mode + GLenum type const void *indirect GLsizei drawcount GLsizei stride @@ -19050,12 +20996,12 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord1bOES - GLenum texture + GLenum texture GLbyte s void glMultiTexCoord1bvOES - GLenum texture + GLenum texture const GLbyte *coords @@ -19176,23 +21122,23 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord1xOES - GLenum texture + GLenum texture GLfixed s void glMultiTexCoord1xvOES - GLenum texture + GLenum texture const GLfixed *coords void glMultiTexCoord2bOES - GLenum texture + GLenum texture GLbyte s GLbyte t void glMultiTexCoord2bvOES - GLenum texture + GLenum texture const GLbyte *coords @@ -19322,25 +21268,25 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord2xOES - GLenum texture + GLenum texture GLfixed s GLfixed t void glMultiTexCoord2xvOES - GLenum texture + GLenum texture const GLfixed *coords void glMultiTexCoord3bOES - GLenum texture + GLenum texture GLbyte s GLbyte t GLbyte r void glMultiTexCoord3bvOES - GLenum texture + GLenum texture const GLbyte *coords @@ -19479,19 +21425,19 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord3xOES - GLenum texture + GLenum texture GLfixed s GLfixed t GLfixed r void glMultiTexCoord3xvOES - GLenum texture + GLenum texture const GLfixed *coords void glMultiTexCoord4bOES - GLenum texture + GLenum texture GLbyte s GLbyte t GLbyte r @@ -19499,7 +21445,7 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord4bvOES - GLenum texture + GLenum texture const GLbyte *coords @@ -19647,7 +21593,7 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord4x - GLenum texture + GLenum texture GLfixed s GLfixed t GLfixed r @@ -19655,7 +21601,7 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord4xOES - GLenum texture + GLenum texture GLfixed s GLfixed t GLfixed r @@ -19663,55 +21609,55 @@ typedef unsigned int GLhandleARB; void glMultiTexCoord4xvOES - GLenum texture + GLenum texture const GLfixed *coords void glMultiTexCoordP1ui - GLenum texture - GLenum type + GLenum texture + GLenum type GLuint coords void glMultiTexCoordP1uiv - GLenum texture - GLenum type + GLenum texture + GLenum type const GLuint *coords void glMultiTexCoordP2ui - GLenum texture - GLenum type + GLenum texture + GLenum type GLuint coords void glMultiTexCoordP2uiv - GLenum texture - GLenum type + GLenum texture + GLenum type const GLuint *coords void glMultiTexCoordP3ui - GLenum texture - GLenum type + GLenum texture + GLenum type GLuint coords void glMultiTexCoordP3uiv - GLenum texture - GLenum type + GLenum texture + GLenum type const GLuint *coords void glMultiTexCoordP4ui - GLenum texture - GLenum type + GLenum texture + GLenum type GLuint coords void glMultiTexCoordP4uiv - GLenum texture - GLenum type + GLenum texture + GLenum type const GLuint *coords @@ -19802,7 +21748,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLint border GLenum format @@ -19814,7 +21760,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLsizei height GLint border @@ -19827,7 +21773,7 @@ typedef unsigned int GLhandleARB; GLenum texunit GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLsizei height GLsizei depth @@ -19925,12 +21871,109 @@ typedef unsigned int GLhandleARB; GLenum type const void *pixels + + void glMulticastBarrierNV + + + void glMulticastBlitFramebufferNV + GLuint srcGpu + GLuint dstGpu + GLint srcX0 + GLint srcY0 + GLint srcX1 + GLint srcY1 + GLint dstX0 + GLint dstY0 + GLint dstX1 + GLint dstY1 + GLbitfield mask + GLenum filter + + + void glMulticastBufferSubDataNV + GLbitfield gpuMask + GLuint buffer + GLintptr offset + GLsizeiptr size + const void *data + + + void glMulticastCopyBufferSubDataNV + GLuint readGpu + GLbitfield writeGpuMask + GLuint readBuffer + GLuint writeBuffer + GLintptr readOffset + GLintptr writeOffset + GLsizeiptr size + + + void glMulticastCopyImageSubDataNV + GLuint srcGpu + GLbitfield dstGpuMask + GLuint srcName + GLenum srcTarget + GLint srcLevel + GLint srcX + GLint srcY + GLint srcZ + GLuint dstName + GLenum dstTarget + GLint dstLevel + GLint dstX + GLint dstY + GLint dstZ + GLsizei srcWidth + GLsizei srcHeight + GLsizei srcDepth + + + void glMulticastFramebufferSampleLocationsfvNV + GLuint gpu + GLuint framebuffer + GLuint start + GLsizei count + const GLfloat *v + + + void glMulticastGetQueryObjecti64vNV + GLuint gpu + GLuint id + GLenum pname + GLint64 *params + + + void glMulticastGetQueryObjectivNV + GLuint gpu + GLuint id + GLenum pname + GLint *params + + + void glMulticastGetQueryObjectui64vNV + GLuint gpu + GLuint id + GLenum pname + GLuint64 *params + + + void glMulticastGetQueryObjectuivNV + GLuint gpu + GLuint id + GLenum pname + GLuint *params + + + void glMulticastWaitSyncNV + GLuint signalGpu + GLbitfield waitGpuMask + void glNamedBufferData GLuint buffer GLsizeiptr size const void *data - GLenum usage + GLenum usage void glNamedBufferDataEXT @@ -19958,16 +22001,31 @@ typedef unsigned int GLhandleARB; GLuint buffer GLsizeiptr size const void *data - GLbitfield flags + GLbitfield flags + + + void glNamedBufferStorageExternalEXT + GLuint buffer + GLintptr offset + GLsizeiptr size + GLeglClientBufferEXT clientBuffer + GLbitfield flags void glNamedBufferStorageEXT GLuint buffer GLsizeiptr size const void *data - GLbitfield flags + GLbitfield flags + + void glNamedBufferStorageMemEXT + GLuint buffer + GLsizeiptr size + GLuint memory + GLuint64 offset + void glNamedBufferSubData GLuint buffer @@ -19994,18 +22052,18 @@ typedef unsigned int GLhandleARB; void glNamedFramebufferDrawBuffer GLuint framebuffer - GLenum buf + GLenum buf void glNamedFramebufferDrawBuffers GLuint framebuffer GLsizei n - const GLenum *bufs + const GLenum *bufs void glNamedFramebufferParameteri GLuint framebuffer - GLenum pname + GLenum pname GLint param @@ -20017,13 +22075,13 @@ typedef unsigned int GLhandleARB; void glNamedFramebufferReadBuffer GLuint framebuffer - GLenum src + GLenum src void glNamedFramebufferRenderbuffer GLuint framebuffer - GLenum attachment - GLenum renderbuffertarget + GLenum attachment + GLenum renderbuffertarget GLuint renderbuffer @@ -20050,10 +22108,17 @@ typedef unsigned int GLhandleARB; void glNamedFramebufferTexture GLuint framebuffer - GLenum attachment + GLenum attachment GLuint texture GLint level + + void glNamedFramebufferSamplePositionsfvAMD + GLuint framebuffer + GLuint numsamples + GLuint pixelindex + const GLfloat *values + void glNamedFramebufferTexture1DEXT GLuint framebuffer @@ -20097,7 +22162,7 @@ typedef unsigned int GLhandleARB; void glNamedFramebufferTextureLayer GLuint framebuffer - GLenum attachment + GLenum attachment GLuint texture GLint level GLint layer @@ -20217,14 +22282,14 @@ typedef unsigned int GLhandleARB; void glNamedRenderbufferStorage GLuint renderbuffer - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glNamedRenderbufferStorageEXT GLuint renderbuffer - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -20232,7 +22297,7 @@ typedef unsigned int GLhandleARB; void glNamedRenderbufferStorageMultisample GLuint renderbuffer GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -20241,7 +22306,7 @@ typedef unsigned int GLhandleARB; GLuint renderbuffer GLsizei coverageSamples GLsizei colorSamples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -20249,7 +22314,7 @@ typedef unsigned int GLhandleARB; void glNamedRenderbufferStorageMultisampleEXT GLuint renderbuffer GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -20382,12 +22447,12 @@ typedef unsigned int GLhandleARB; void glNormalP3ui - GLenum type + GLenum type GLuint coords void glNormalP3uiv - GLenum type + GLenum type const GLuint *coords @@ -20477,14 +22542,14 @@ typedef unsigned int GLhandleARB; void glObjectLabel - GLenum identifier + GLenum identifier GLuint name GLsizei length const GLchar *label void glObjectLabelKHR - GLenum identifier + GLenum identifier GLuint name GLsizei length const GLchar *label @@ -20589,23 +22654,23 @@ typedef unsigned int GLhandleARB; void glPatchParameterfv - GLenum pname + GLenum pname const GLfloat *values void glPatchParameteri - GLenum pname + GLenum pname GLint value void glPatchParameteriEXT - GLenum pname + GLenum pname GLint value void glPatchParameteriOES - GLenum pname + GLenum pname GLint value @@ -20651,7 +22716,7 @@ typedef unsigned int GLhandleARB; GLuint firstPathName GLenum fontTarget const void *fontName - GLbitfield fontStyle + GLbitfield fontStyle GLuint firstGlyphIndex GLsizei numGlyphs GLuint pathParameterTemplate @@ -20661,7 +22726,7 @@ typedef unsigned int GLhandleARB; GLenum glPathGlyphIndexRangeNV GLenum fontTarget const void *fontName - GLbitfield fontStyle + GLbitfield fontStyle GLuint pathParameterTemplate GLfloat emScale GLuint baseAndCount[2] @@ -20810,7 +22875,7 @@ typedef unsigned int GLhandleARB; void glPixelMapx - GLenum map + GLenum map GLint size const GLfixed *values @@ -20828,7 +22893,7 @@ typedef unsigned int GLhandleARB; void glPixelStorex - GLenum pname + GLenum pname GLfixed param @@ -20870,7 +22935,7 @@ typedef unsigned int GLhandleARB; void glPixelTransferxOES - GLenum pname + GLenum pname GLfixed param @@ -20999,22 +23064,22 @@ typedef unsigned int GLhandleARB; void glPointParameterx - GLenum pname + GLenum pname GLfixed param void glPointParameterxOES - GLenum pname + GLenum pname GLfixed param void glPointParameterxv - GLenum pname + GLenum pname const GLfixed *params void glPointParameterxvOES - GLenum pname + GLenum pname const GLfixed *params @@ -21064,12 +23129,19 @@ typedef unsigned int GLhandleARB; - void glPolygonOffsetClampEXT + void glPolygonOffsetClamp GLfloat factor GLfloat units GLfloat clamp + + void glPolygonOffsetClampEXT + GLfloat factor + GLfloat units + GLfloat clamp + + void glPolygonOffsetEXT GLfloat factor @@ -21201,9 +23273,11 @@ typedef unsigned int GLhandleARB; void glPrimitiveRestartIndexNV GLuint index + void glPrimitiveRestartNV + void glPrioritizeTextures @@ -21583,7 +23657,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform1dvEXT @@ -21610,7 +23684,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLfloat *value + const GLfloat *value void glProgramUniform1fvEXT @@ -21664,7 +23738,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLint *value + const GLint *value void glProgramUniform1ivEXT @@ -21718,7 +23792,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLuint *value + const GLuint *value void glProgramUniform1uivEXT @@ -21747,14 +23821,14 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform2dvEXT GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform2f @@ -21776,7 +23850,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLfloat *value + const GLfloat *value void glProgramUniform2fvEXT @@ -21834,7 +23908,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLint *value + const GLint *value void glProgramUniform2ivEXT @@ -21892,7 +23966,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLuint *value + const GLuint *value void glProgramUniform2uivEXT @@ -21923,14 +23997,14 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform3dvEXT GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform3f @@ -21954,7 +24028,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLfloat *value + const GLfloat *value void glProgramUniform3fvEXT @@ -22016,7 +24090,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLint *value + const GLint *value void glProgramUniform3ivEXT @@ -22078,7 +24152,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLuint *value + const GLuint *value void glProgramUniform3uivEXT @@ -22111,14 +24185,14 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform4dvEXT GLuint program GLint location GLsizei count - const GLdouble *value + const GLdouble *value void glProgramUniform4f @@ -22144,7 +24218,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLfloat *value + const GLfloat *value void glProgramUniform4fvEXT @@ -22210,7 +24284,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLint *value + const GLint *value void glProgramUniform4ivEXT @@ -22276,7 +24350,7 @@ typedef unsigned int GLhandleARB; GLuint program GLint location GLsizei count - const GLuint *value + const GLuint *value void glProgramUniform4uivEXT @@ -22292,6 +24366,13 @@ typedef unsigned int GLhandleARB; GLint location GLuint64 value + + void glProgramUniformHandleui64IMG + GLuint program + GLint location + GLuint64 value + + void glProgramUniformHandleui64NV GLuint program @@ -22305,6 +24386,14 @@ typedef unsigned int GLhandleARB; GLsizei count const GLuint64 *values + + void glProgramUniformHandleui64vIMG + GLuint program + GLint location + GLsizei count + const GLuint64 *values + + void glProgramUniformHandleui64vNV GLuint program @@ -22318,7 +24407,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix2dvEXT @@ -22326,7 +24415,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix2fv @@ -22334,7 +24423,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix2fvEXT @@ -22351,7 +24440,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix2x3dvEXT @@ -22359,7 +24448,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix2x3fv @@ -22367,7 +24456,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix2x3fvEXT @@ -22384,7 +24473,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix2x4dvEXT @@ -22392,7 +24481,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix2x4fv @@ -22400,7 +24489,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix2x4fvEXT @@ -22417,7 +24506,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix3dvEXT @@ -22425,7 +24514,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix3fv @@ -22433,7 +24522,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix3fvEXT @@ -22450,7 +24539,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix3x2dvEXT @@ -22458,7 +24547,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix3x2fv @@ -22466,7 +24555,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix3x2fvEXT @@ -22483,7 +24572,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix3x4dvEXT @@ -22491,7 +24580,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix3x4fv @@ -22499,7 +24588,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix3x4fvEXT @@ -22516,7 +24605,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix4dvEXT @@ -22524,7 +24613,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix4fv @@ -22532,7 +24621,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix4fvEXT @@ -22549,7 +24638,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix4x2dvEXT @@ -22557,7 +24646,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix4x2fv @@ -22565,7 +24654,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix4x2fvEXT @@ -22582,7 +24671,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix4x3dvEXT @@ -22590,7 +24679,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLdouble *value + const GLdouble *value void glProgramUniformMatrix4x3fv @@ -22598,7 +24687,7 @@ typedef unsigned int GLhandleARB; GLint location GLsizei count GLboolean transpose - const GLfloat *value + const GLfloat *value void glProgramUniformMatrix4x3fvEXT @@ -22629,11 +24718,11 @@ typedef unsigned int GLhandleARB; void glProvokingVertex - GLenum mode + GLenum mode void glProvokingVertexEXT - GLenum mode + GLenum mode @@ -22651,14 +24740,14 @@ typedef unsigned int GLhandleARB; void glPushDebugGroup - GLenum source + GLenum source GLuint id GLsizei length const GLchar *message void glPushDebugGroupKHR - GLenum source + GLenum source GLuint id GLsizei length const GLchar *message @@ -22681,12 +24770,12 @@ typedef unsigned int GLhandleARB; void glQueryCounter GLuint id - GLenum target + GLenum target void glQueryCounterEXT GLuint id - GLenum target + GLenum target @@ -22696,11 +24785,23 @@ typedef unsigned int GLhandleARB; void glQueryObjectParameteruiAMD - GLenum target + GLenum target GLuint id GLenum pname GLuint param + + GLint glQueryResourceNV + GLenum queryType + GLint tagId + GLuint bufSize + GLint *buffer + + + void glQueryResourceTagNV + GLint tagId + const GLchar *tagString + void glRasterPos2d GLdouble x @@ -22887,7 +24988,7 @@ typedef unsigned int GLhandleARB; void glReadBufferIndexedEXT - GLenum src + GLenum src GLint index @@ -22917,10 +25018,10 @@ typedef unsigned int GLhandleARB; GLint y GLsizei width GLsizei height - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize - void *data + void *data void glReadnPixelsARB @@ -22928,8 +25029,8 @@ typedef unsigned int GLhandleARB; GLint y GLsizei width GLsizei height - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *data @@ -22940,8 +25041,8 @@ typedef unsigned int GLhandleARB; GLint y GLsizei width GLsizei height - GLenum format - GLenum type + GLenum format + GLenum type GLsizei bufSize void *data @@ -22958,6 +25059,11 @@ typedef unsigned int GLhandleARB; void *data + + GLboolean glReleaseKeyedMutexWin32EXT + GLuint memory + GLuint64 key + void glRectd GLdouble x1 @@ -23034,6 +25140,10 @@ typedef unsigned int GLhandleARB; void glReleaseShaderCompiler + + void glRenderGpuMaskNV + GLbitfield mask + GLint glRenderMode GLenum mode @@ -23042,7 +25152,7 @@ typedef unsigned int GLhandleARB; void glRenderbufferStorage GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -23050,7 +25160,7 @@ typedef unsigned int GLhandleARB; void glRenderbufferStorageEXT GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -23058,26 +25168,26 @@ typedef unsigned int GLhandleARB; void glRenderbufferStorageMultisample - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleANGLE - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleAPPLE - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -23086,15 +25196,15 @@ typedef unsigned int GLhandleARB; GLenum target GLsizei coverageSamples GLsizei colorSamples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleEXT - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -23102,25 +25212,25 @@ typedef unsigned int GLhandleARB; void glRenderbufferStorageMultisampleIMG - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageMultisampleNV - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glRenderbufferStorageOES - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLsizei width GLsizei height @@ -23302,7 +25412,7 @@ typedef unsigned int GLhandleARB; void glResetHistogram - GLenum target + GLenum target @@ -23313,7 +25423,7 @@ typedef unsigned int GLhandleARB; void glResetMinmax - GLenum target + GLenum target @@ -23431,65 +25541,65 @@ typedef unsigned int GLhandleARB; void glSamplerParameterIiv GLuint sampler - GLenum pname + GLenum pname const GLint *param void glSamplerParameterIivEXT GLuint sampler - GLenum pname + GLenum pname const GLint *param void glSamplerParameterIivOES GLuint sampler - GLenum pname + GLenum pname const GLint *param void glSamplerParameterIuiv GLuint sampler - GLenum pname + GLenum pname const GLuint *param void glSamplerParameterIuivEXT GLuint sampler - GLenum pname + GLenum pname const GLuint *param void glSamplerParameterIuivOES GLuint sampler - GLenum pname + GLenum pname const GLuint *param void glSamplerParameterf GLuint sampler - GLenum pname + GLenum pname GLfloat param void glSamplerParameterfv GLuint sampler - GLenum pname + GLenum pname const GLfloat *param void glSamplerParameteri GLuint sampler - GLenum pname + GLenum pname GLint param void glSamplerParameteriv GLuint sampler - GLenum pname + GLenum pname const GLint *param @@ -23539,6 +25649,13 @@ typedef unsigned int GLhandleARB; const GLint *v + + void glScissorArrayvOES + GLuint first + GLsizei count + const GLint *v + + void glScissorIndexed GLuint index @@ -23556,6 +25673,15 @@ typedef unsigned int GLhandleARB; GLsizei height + + void glScissorIndexedOES + GLuint index + GLint left + GLint bottom + GLsizei width + GLsizei height + + void glScissorIndexedv GLuint index @@ -23567,6 +25693,12 @@ typedef unsigned int GLhandleARB; const GLint *v + + void glScissorIndexedvOES + GLuint index + const GLint *v + + void glSecondaryColor3b GLbyte red @@ -23790,17 +25922,17 @@ typedef unsigned int GLhandleARB; void glSecondaryColorFormatNV GLint size - GLenum type + GLenum type GLsizei stride void glSecondaryColorP3ui - GLenum type + GLenum type GLuint color void glSecondaryColorP3uiv - GLenum type + GLenum type const GLuint *color @@ -23840,10 +25972,16 @@ typedef unsigned int GLhandleARB; GLint numCounters GLuint *counterList + + void glSemaphoreParameterui64vEXT + GLuint semaphore + GLenum pname + const GLuint64 *params + void glSeparableFilter2D - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLsizei width GLsizei height GLenum format @@ -23856,7 +25994,7 @@ typedef unsigned int GLhandleARB; void glSeparableFilter2DEXT GLenum target - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLenum format @@ -23960,6 +26098,32 @@ typedef unsigned int GLhandleARB; const GLfloat *points + + void glSignalSemaphoreEXT + GLuint semaphore + GLuint numBufferBarriers + const GLuint *buffers + GLuint numTextureBarriers + const GLuint *textures + const GLenum *dstLayouts + + + void glSpecializeShader + GLuint shader + const GLchar *pEntryPoint + GLuint numSpecializationConstants + const GLuint *pConstantIndex + const GLuint *pConstantValue + + + void glSpecializeShaderARB + GLuint shader + const GLchar *pEntryPoint + GLuint numSpecializationConstants + const GLuint *pConstantIndex + const GLuint *pConstantValue + + void glSpriteParameterfSGIX GLenum pname @@ -23994,7 +26158,7 @@ typedef unsigned int GLhandleARB; GLuint y GLuint width GLuint height - GLbitfield preserveMask + GLbitfield preserveMask void glStateCaptureNV @@ -24259,42 +26423,43 @@ typedef unsigned int GLhandleARB; void glTexBuffer GLenum target - GLenum internalformat + GLenum internalformat GLuint buffer void glTexBufferARB GLenum target - GLenum internalformat + GLenum internalformat GLuint buffer + void glTexBufferEXT GLenum target - GLenum internalformat + GLenum internalformat GLuint buffer void glTexBufferOES GLenum target - GLenum internalformat + GLenum internalformat GLuint buffer void glTexBufferRange - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size void glTexBufferRangeEXT - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size @@ -24302,8 +26467,8 @@ typedef unsigned int GLhandleARB; void glTexBufferRangeOES - GLenum target - GLenum internalformat + GLenum target + GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size @@ -24761,42 +26926,42 @@ typedef unsigned int GLhandleARB; void glTexCoordP1ui - GLenum type + GLenum type GLuint coords void glTexCoordP1uiv - GLenum type + GLenum type const GLuint *coords void glTexCoordP2ui - GLenum type + GLenum type GLuint coords void glTexCoordP2uiv - GLenum type + GLenum type const GLuint *coords void glTexCoordP3ui - GLenum type + GLenum type GLuint coords void glTexCoordP3uiv - GLenum type + GLenum type const GLuint *coords void glTexCoordP4ui - GLenum type + GLenum type GLuint coords void glTexCoordP4uiv - GLenum type + GLenum type const GLuint *coords @@ -24858,26 +27023,26 @@ typedef unsigned int GLhandleARB; void glTexEnvx - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed param void glTexEnvxOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed param void glTexEnvxv - GLenum target - GLenum pname + GLenum target + GLenum pname const GLfixed *params void glTexEnvxvOES - GLenum target - GLenum pname + GLenum target + GLenum pname const GLfixed *params @@ -24911,8 +27076,8 @@ typedef unsigned int GLhandleARB; void glTexGenfOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname GLfloat param @@ -24924,8 +27089,8 @@ typedef unsigned int GLhandleARB; void glTexGenfvOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname const GLfloat *params @@ -24937,8 +27102,8 @@ typedef unsigned int GLhandleARB; void glTexGeniOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname GLint param @@ -24950,27 +27115,27 @@ typedef unsigned int GLhandleARB; void glTexGenivOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname const GLint *params void glTexGenxOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname GLfixed param void glTexGenxvOES - GLenum coord - GLenum pname + GLenum coord + GLenum pname const GLfixed *params void glTexImage1D GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLint border GLenum format @@ -24983,7 +27148,7 @@ typedef unsigned int GLhandleARB; void glTexImage2D GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLsizei height GLint border @@ -24995,16 +27160,16 @@ typedef unsigned int GLhandleARB; void glTexImage2DMultisample - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations void glTexImage2DMultisampleCoverageNV - GLenum target + GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat @@ -25016,7 +27181,7 @@ typedef unsigned int GLhandleARB; void glTexImage3D GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLsizei height GLsizei depth @@ -25031,7 +27196,7 @@ typedef unsigned int GLhandleARB; void glTexImage3DEXT GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25044,9 +27209,9 @@ typedef unsigned int GLhandleARB; void glTexImage3DMultisample - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25054,7 +27219,7 @@ typedef unsigned int GLhandleARB; void glTexImage3DMultisampleCoverageNV - GLenum target + GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat @@ -25065,23 +27230,22 @@ typedef unsigned int GLhandleARB; void glTexImage3DOES - GLenum target + GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth GLint border - GLenum format - GLenum type + GLenum format + GLenum type const void *pixels - void glTexImage4DSGIS GLenum target GLint level - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25189,26 +27353,26 @@ typedef unsigned int GLhandleARB; void glTexParameterx - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed param void glTexParameterxOES - GLenum target - GLenum pname + GLenum target + GLenum pname GLfixed param void glTexParameterxv - GLenum target - GLenum pname + GLenum target + GLenum pname const GLfixed *params void glTexParameterxvOES - GLenum target - GLenum pname + GLenum target + GLenum pname const GLfixed *params @@ -25218,59 +27382,59 @@ typedef unsigned int GLhandleARB; void glTexStorage1D - GLenum target + GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width void glTexStorage1DEXT - GLenum target + GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width void glTexStorage2D - GLenum target + GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glTexStorage2DEXT - GLenum target + GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height void glTexStorage2DMultisample - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations void glTexStorage3D - GLenum target + GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth void glTexStorage3DEXT - GLenum target + GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25278,9 +27442,9 @@ typedef unsigned int GLhandleARB; void glTexStorage3DMultisample - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25288,9 +27452,9 @@ typedef unsigned int GLhandleARB; void glTexStorage3DMultisampleOES - GLenum target + GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25298,14 +27462,67 @@ typedef unsigned int GLhandleARB; - void glTexStorageSparseAMD - GLenum target + void glTexStorageMem1DEXT + GLenum target + GLsizei levels + GLenum internalFormat + GLsizei width + GLuint memory + GLuint64 offset + + + void glTexStorageMem2DEXT + GLenum target + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLuint memory + GLuint64 offset + + + void glTexStorageMem2DMultisampleEXT + GLenum target + GLsizei samples GLenum internalFormat GLsizei width GLsizei height + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTexStorageMem3DEXT + GLenum target + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLuint memory + GLuint64 offset + + + void glTexStorageMem3DMultisampleEXT + GLenum target + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTexStorageSparseAMD + GLenum target + GLenum internalFormat + GLsizei width + GLsizei height GLsizei depth GLsizei layers - GLbitfield flags + GLbitfield flags void glTexSubImage1D @@ -25393,7 +27610,7 @@ typedef unsigned int GLhandleARB; void glTexSubImage3DOES - GLenum target + GLenum target GLint level GLint xoffset GLint yoffset @@ -25401,10 +27618,9 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format - GLenum type + GLenum format + GLenum type const void *pixels - void glTexSubImage4DSGIS @@ -25433,20 +27649,20 @@ typedef unsigned int GLhandleARB; void glTextureBuffer GLuint texture - GLenum internalformat + GLenum internalformat GLuint buffer void glTextureBufferEXT GLuint texture GLenum target - GLenum internalformat + GLenum internalformat GLuint buffer void glTextureBufferRange GLuint texture - GLenum internalformat + GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size @@ -25455,7 +27671,7 @@ typedef unsigned int GLhandleARB; void glTextureBufferRangeEXT GLuint texture GLenum target - GLenum internalformat + GLenum internalformat GLuint buffer GLintptr offset GLsizeiptr size @@ -25468,12 +27684,23 @@ typedef unsigned int GLhandleARB; GLboolean alpha + + void glTextureFoveationParametersQCOM + GLuint texture + GLuint layer + GLuint focalPoint + GLfloat focalX + GLfloat focalY + GLfloat gainX + GLfloat gainY + GLfloat foveaArea + void glTextureImage1DEXT GLuint texture GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLint border GLenum format @@ -25485,7 +27712,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLsizei height GLint border @@ -25496,7 +27723,7 @@ typedef unsigned int GLhandleARB; void glTextureImage2DMultisampleCoverageNV GLuint texture - GLenum target + GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat @@ -25507,7 +27734,7 @@ typedef unsigned int GLhandleARB; void glTextureImage2DMultisampleNV GLuint texture - GLenum target + GLenum target GLsizei samples GLint internalFormat GLsizei width @@ -25519,7 +27746,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLint level - GLint internalformat + GLint internalformat GLsizei width GLsizei height GLsizei depth @@ -25531,7 +27758,7 @@ typedef unsigned int GLhandleARB; void glTextureImage3DMultisampleCoverageNV GLuint texture - GLenum target + GLenum target GLsizei coverageSamples GLsizei colorSamples GLint internalFormat @@ -25543,7 +27770,7 @@ typedef unsigned int GLhandleARB; void glTextureImage3DMultisampleNV GLuint texture - GLenum target + GLenum target GLsizei samples GLint internalFormat GLsizei width @@ -25579,7 +27806,7 @@ typedef unsigned int GLhandleARB; void glTextureParameterIiv GLuint texture - GLenum pname + GLenum pname const GLint *params @@ -25592,7 +27819,7 @@ typedef unsigned int GLhandleARB; void glTextureParameterIuiv GLuint texture - GLenum pname + GLenum pname const GLuint *params @@ -25605,7 +27832,7 @@ typedef unsigned int GLhandleARB; void glTextureParameterf GLuint texture - GLenum pname + GLenum pname GLfloat param @@ -25619,7 +27846,7 @@ typedef unsigned int GLhandleARB; void glTextureParameterfv GLuint texture - GLenum pname + GLenum pname const GLfloat *param @@ -25632,7 +27859,7 @@ typedef unsigned int GLhandleARB; void glTextureParameteri GLuint texture - GLenum pname + GLenum pname GLint param @@ -25646,7 +27873,7 @@ typedef unsigned int GLhandleARB; void glTextureParameteriv GLuint texture - GLenum pname + GLenum pname const GLint *param @@ -25672,7 +27899,7 @@ typedef unsigned int GLhandleARB; void glTextureStorage1D GLuint texture GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width @@ -25680,14 +27907,14 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width void glTextureStorage2D GLuint texture GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -25696,7 +27923,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height @@ -25704,7 +27931,7 @@ typedef unsigned int GLhandleARB; void glTextureStorage2DMultisample GLuint texture GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations @@ -25714,7 +27941,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLboolean fixedsamplelocations @@ -25723,7 +27950,7 @@ typedef unsigned int GLhandleARB; void glTextureStorage3D GLuint texture GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25733,7 +27960,7 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLsizei levels - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25742,7 +27969,7 @@ typedef unsigned int GLhandleARB; void glTextureStorage3DMultisample GLuint texture GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth @@ -25753,22 +27980,75 @@ typedef unsigned int GLhandleARB; GLuint texture GLenum target GLsizei samples - GLenum internalformat + GLenum internalformat GLsizei width GLsizei height GLsizei depth GLboolean fixedsamplelocations + + void glTextureStorageMem1DEXT + GLuint texture + GLsizei levels + GLenum internalFormat + GLsizei width + GLuint memory + GLuint64 offset + + + void glTextureStorageMem2DEXT + GLuint texture + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLuint memory + GLuint64 offset + + + void glTextureStorageMem2DMultisampleEXT + GLuint texture + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + + + void glTextureStorageMem3DEXT + GLuint texture + GLsizei levels + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLuint memory + GLuint64 offset + + + void glTextureStorageMem3DMultisampleEXT + GLuint texture + GLsizei samples + GLenum internalFormat + GLsizei width + GLsizei height + GLsizei depth + GLboolean fixedSampleLocations + GLuint memory + GLuint64 offset + void glTextureStorageSparseAMD GLuint texture GLenum target - GLenum internalFormat + GLenum internalFormat GLsizei width GLsizei height GLsizei depth GLsizei layers - GLbitfield flags + GLbitfield flags void glTextureSubImage1D @@ -25776,8 +28056,8 @@ typedef unsigned int GLhandleARB; GLint level GLint xoffset GLsizei width - GLenum format - GLenum type + GLenum format + GLenum type const void *pixels @@ -25799,8 +28079,8 @@ typedef unsigned int GLhandleARB; GLint yoffset GLsizei width GLsizei height - GLenum format - GLenum type + GLenum format + GLenum type const void *pixels @@ -25826,8 +28106,8 @@ typedef unsigned int GLhandleARB; GLsizei width GLsizei height GLsizei depth - GLenum format - GLenum type + GLenum format + GLenum type const void *pixels @@ -25848,9 +28128,9 @@ typedef unsigned int GLhandleARB; void glTextureView GLuint texture - GLenum target + GLenum target GLuint origtexture - GLenum internalformat + GLenum internalformat GLuint minlevel GLuint numlevels GLuint minlayer @@ -25859,9 +28139,9 @@ typedef unsigned int GLhandleARB; void glTextureViewEXT GLuint texture - GLenum target + GLenum target GLuint origtexture - GLenum internalformat + GLenum internalformat GLuint minlevel GLuint numlevels GLuint minlayer @@ -25871,9 +28151,9 @@ typedef unsigned int GLhandleARB; void glTextureViewOES GLuint texture - GLenum target + GLenum target GLuint origtexture - GLenum internalformat + GLenum internalformat GLuint minlevel GLuint numlevels GLuint minlayer @@ -25922,6 +28202,7 @@ typedef unsigned int GLhandleARB; GLsizei count const GLchar *const*varyings GLenum bufferMode + void glTransformFeedbackVaryingsEXT @@ -26550,6 +28831,7 @@ typedef unsigned int GLhandleARB; GLuint program GLuint uniformBlockIndex GLuint uniformBlockBinding + void glUniformBufferEXT @@ -26562,6 +28844,12 @@ typedef unsigned int GLhandleARB; GLint location GLuint64 value + + void glUniformHandleui64IMG + GLint location + GLuint64 value + + void glUniformHandleui64NV GLint location @@ -26573,6 +28861,13 @@ typedef unsigned int GLhandleARB; GLsizei count const GLuint64 *value + + void glUniformHandleui64vIMG + GLint location + GLsizei count + const GLuint64 *value + + void glUniformHandleui64vNV GLint location @@ -26785,7 +29080,7 @@ typedef unsigned int GLhandleARB; void glUniformSubroutinesuiv - GLenum shadertype + GLenum shadertype GLsizei count const GLuint *indices @@ -26854,13 +29149,13 @@ typedef unsigned int GLhandleARB; void glUseProgramStages GLuint pipeline - GLbitfield stages + GLbitfield stages GLuint program void glUseProgramStagesEXT GLuint pipeline - GLbitfield stages + GLbitfield stages GLuint program @@ -27241,7 +29536,7 @@ typedef unsigned int GLhandleARB; GLuint vaobj GLuint attribindex GLint size - GLenum type + GLenum type GLboolean normalized GLuint relativeoffset @@ -27250,7 +29545,7 @@ typedef unsigned int GLhandleARB; GLuint vaobj GLuint attribindex GLint size - GLenum type + GLenum type GLuint relativeoffset @@ -27258,7 +29553,7 @@ typedef unsigned int GLhandleARB; GLuint vaobj GLuint attribindex GLint size - GLenum type + GLenum type GLuint relativeoffset @@ -28546,7 +30841,7 @@ typedef unsigned int GLhandleARB; void glVertexAttribIPointer GLuint index GLint size - GLenum type + GLenum type GLsizei stride const void *pointer @@ -28554,7 +30849,7 @@ typedef unsigned int GLhandleARB; void glVertexAttribIPointerEXT GLuint index GLint size - GLenum type + GLenum type GLsizei stride const void *pointer @@ -28765,21 +31060,21 @@ typedef unsigned int GLhandleARB; void glVertexAttribLFormat GLuint attribindex GLint size - GLenum type + GLenum type GLuint relativeoffset void glVertexAttribLFormatNV GLuint index GLint size - GLenum type + GLenum type GLsizei stride void glVertexAttribLPointer GLuint index GLint size - GLenum type + GLenum type GLsizei stride const void *pointer @@ -28787,7 +31082,7 @@ typedef unsigned int GLhandleARB; void glVertexAttribLPointerEXT GLuint index GLint size - GLenum type + GLenum type GLsizei stride const void *pointer @@ -28795,56 +31090,56 @@ typedef unsigned int GLhandleARB; void glVertexAttribP1ui GLuint index - GLenum type + GLenum type GLboolean normalized GLuint value void glVertexAttribP1uiv GLuint index - GLenum type + GLenum type GLboolean normalized const GLuint *value void glVertexAttribP2ui GLuint index - GLenum type + GLenum type GLboolean normalized GLuint value void glVertexAttribP2uiv GLuint index - GLenum type + GLenum type GLboolean normalized const GLuint *value void glVertexAttribP3ui GLuint index - GLenum type + GLenum type GLboolean normalized GLuint value void glVertexAttribP3uiv GLuint index - GLenum type + GLenum type GLboolean normalized const GLuint *value void glVertexAttribP4ui GLuint index - GLenum type + GLenum type GLboolean normalized GLuint value void glVertexAttribP4uiv GLuint index - GLenum type + GLenum type GLboolean normalized const GLuint *value @@ -29023,37 +31318,37 @@ typedef unsigned int GLhandleARB; void glVertexFormatNV GLint size - GLenum type + GLenum type GLsizei stride void glVertexP2ui - GLenum type + GLenum type GLuint value void glVertexP2uiv - GLenum type + GLenum type const GLuint *value void glVertexP3ui - GLenum type + GLenum type GLuint value void glVertexP3uiv - GLenum type + GLenum type const GLuint *value void glVertexP4ui - GLenum type + GLenum type GLuint value void glVertexP4uiv - GLenum type + GLenum type const GLuint *value @@ -29344,6 +31639,13 @@ typedef unsigned int GLhandleARB; const GLfloat *v + + void glViewportArrayvOES + GLuint first + GLsizei count + const GLfloat *v + + void glViewportIndexedf GLuint index @@ -29352,6 +31654,15 @@ typedef unsigned int GLhandleARB; GLfloat w GLfloat h + + void glViewportIndexedfOES + GLuint index + GLfloat x + GLfloat y + GLfloat w + GLfloat h + + void glViewportIndexedfNV GLuint index @@ -29366,12 +31677,41 @@ typedef unsigned int GLhandleARB; GLuint index const GLfloat *v + + void glViewportIndexedfvOES + GLuint index + const GLfloat *v + + void glViewportIndexedfvNV GLuint index const GLfloat *v + + void glViewportPositionWScaleNV + GLuint index + GLfloat xcoeff + GLfloat ycoeff + + + void glViewportSwizzleNV + GLuint index + GLenum swizzlex + GLenum swizzley + GLenum swizzlez + GLenum swizzlew + + + void glWaitSemaphoreEXT + GLuint semaphore + GLuint numBufferBarriers + const GLuint *buffers + GLuint numTextureBarriers + const GLuint *textures + const GLenum *srcLayouts + void glWaitSync GLsync sync @@ -29802,6 +32142,12 @@ typedef unsigned int GLhandleARB; void glWindowPos4svMESA const GLshort *v + + void glWindowRectanglesEXT + GLenum mode + GLsizei count + const GLint *box + void glWriteMaskEXT GLuint res @@ -29811,6 +32157,36 @@ typedef unsigned int GLhandleARB; GLenum outZ GLenum outW + + void glDrawVkImageNV + GLuint64 vkImage + GLuint sampler + GLfloat x0 + GLfloat y0 + GLfloat x1 + GLfloat y1 + GLfloat z + GLfloat s0 + GLfloat t0 + GLfloat s1 + GLfloat t1 + + + GLVULKANPROCNV glGetVkProcAddrNV + const GLchar *name + + + void glWaitVkSemaphoreNV + GLuint64 vkSemaphore + + + void glSignalVkSemaphoreNV + GLuint64 vkSemaphore + + + void glSignalVkFenceNV + GLuint64 vkFence + @@ -29818,319 +32194,6 @@ typedef unsigned int GLhandleARB; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -30212,7 +32275,6 @@ typedef unsigned int GLhandleARB; - @@ -30240,21 +32302,9 @@ typedef unsigned int GLhandleARB; - - - - - - - - - - - - @@ -30265,7 +32315,6 @@ typedef unsigned int GLhandleARB; - @@ -30317,23 +32366,7 @@ typedef unsigned int GLhandleARB; - - - - - - - - - - - - - - - - @@ -30352,9 +32385,6 @@ typedef unsigned int GLhandleARB; - - - @@ -30394,14 +32424,6 @@ typedef unsigned int GLhandleARB; - - - - - - - - @@ -30447,11 +32469,9 @@ typedef unsigned int GLhandleARB; - - @@ -30501,7 +32521,6 @@ typedef unsigned int GLhandleARB; - @@ -30537,35 +32556,8 @@ typedef unsigned int GLhandleARB; - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -30612,6 +32604,403 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -30645,20 +33034,6 @@ typedef unsigned int GLhandleARB; - - - - - - - - - - - - - - @@ -30738,7 +33113,7 @@ typedef unsigned int GLhandleARB; - + @@ -30974,15 +33349,17 @@ typedef unsigned int GLhandleARB; - - - - - + + + + + + + @@ -32935,6 +35312,7 @@ typedef unsigned int GLhandleARB; + @@ -33596,7 +35974,6 @@ typedef unsigned int GLhandleARB; - + + + + + + @@ -35670,178 +38107,572 @@ typedef unsigned int GLhandleARB; - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -35922,7 +38753,37 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -36034,7 +38895,7 @@ typedef unsigned int GLhandleARB; - + @@ -36085,8 +38946,12 @@ typedef unsigned int GLhandleARB; + + + + @@ -36111,6 +38976,7 @@ typedef unsigned int GLhandleARB; + @@ -36335,7 +39201,7 @@ typedef unsigned int GLhandleARB; - + @@ -36504,7 +39370,7 @@ typedef unsigned int GLhandleARB; - + @@ -36930,7 +39796,7 @@ typedef unsigned int GLhandleARB; - + @@ -37063,7 +39929,7 @@ typedef unsigned int GLhandleARB; - + @@ -37183,7 +40049,7 @@ typedef unsigned int GLhandleARB; - + @@ -37228,6 +40094,13 @@ typedef unsigned int GLhandleARB; + + + + + + + @@ -37273,7 +40146,7 @@ typedef unsigned int GLhandleARB; - + @@ -37335,17 +40208,17 @@ typedef unsigned int GLhandleARB; + + - + + - - - @@ -37456,7 +40329,7 @@ typedef unsigned int GLhandleARB; - + @@ -37759,7 +40632,7 @@ typedef unsigned int GLhandleARB; - + @@ -37781,7 +40654,7 @@ typedef unsigned int GLhandleARB; - + @@ -37805,7 +40678,13 @@ typedef unsigned int GLhandleARB; - + + + + + + + @@ -37919,7 +40798,7 @@ typedef unsigned int GLhandleARB; - + @@ -37989,6 +40868,7 @@ typedef unsigned int GLhandleARB; + @@ -38043,7 +40923,7 @@ typedef unsigned int GLhandleARB; - + @@ -38078,9 +40958,9 @@ typedef unsigned int GLhandleARB; - + - + @@ -38280,7 +41160,7 @@ typedef unsigned int GLhandleARB; - + @@ -38342,8 +41222,14 @@ typedef unsigned int GLhandleARB; - - + + + + + + + + @@ -38423,12 +41309,12 @@ typedef unsigned int GLhandleARB; - + - + @@ -38552,7 +41438,13 @@ typedef unsigned int GLhandleARB; - + + + + + + + @@ -38594,7 +41486,7 @@ typedef unsigned int GLhandleARB; - + @@ -38628,7 +41520,7 @@ typedef unsigned int GLhandleARB; - + @@ -39669,6 +42561,17 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + @@ -39782,6 +42685,38 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39820,6 +42755,7 @@ typedef unsigned int GLhandleARB; + @@ -39920,7 +42856,7 @@ typedef unsigned int GLhandleARB; - + @@ -39936,7 +42872,7 @@ typedef unsigned int GLhandleARB; - + @@ -39950,7 +42886,7 @@ typedef unsigned int GLhandleARB; - + @@ -40431,7 +43367,7 @@ typedef unsigned int GLhandleARB; - + @@ -40444,6 +43380,18 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + @@ -40771,6 +43719,67 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40936,19 +43945,25 @@ typedef unsigned int GLhandleARB; - + - + + + + + + + @@ -40968,7 +43983,7 @@ typedef unsigned int GLhandleARB; - + @@ -41019,6 +44034,51 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -41060,7 +44120,7 @@ typedef unsigned int GLhandleARB; - + @@ -41130,11 +44190,18 @@ typedef unsigned int GLhandleARB; - + + + + + + + + @@ -41198,8 +44265,9 @@ typedef unsigned int GLhandleARB; - + + @@ -41207,6 +44275,16 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + @@ -41244,7 +44322,7 @@ typedef unsigned int GLhandleARB; - + @@ -41444,6 +44522,19 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + @@ -41458,7 +44549,7 @@ typedef unsigned int GLhandleARB; - + @@ -41466,7 +44557,7 @@ typedef unsigned int GLhandleARB; - + @@ -41474,6 +44565,14 @@ typedef unsigned int GLhandleARB; + + + + + + + + @@ -41541,15 +44640,10 @@ typedef unsigned int GLhandleARB; - + - - - - - - - + + @@ -41557,6 +44651,11 @@ typedef unsigned int GLhandleARB; + + + + + @@ -41628,6 +44727,11 @@ typedef unsigned int GLhandleARB; + + + + + @@ -41700,7 +44804,7 @@ typedef unsigned int GLhandleARB; - + @@ -42095,6 +45199,23 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + @@ -42218,6 +45339,26 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + @@ -42311,8 +45452,13 @@ typedef unsigned int GLhandleARB; + + + + + - + @@ -42328,6 +45474,11 @@ typedef unsigned int GLhandleARB; + + + + + @@ -42341,7 +45492,7 @@ typedef unsigned int GLhandleARB; - + @@ -42375,7 +45526,7 @@ typedef unsigned int GLhandleARB; - + @@ -42395,7 +45546,7 @@ typedef unsigned int GLhandleARB; - + @@ -42412,7 +45563,7 @@ typedef unsigned int GLhandleARB; - + @@ -42628,6 +45779,13 @@ typedef unsigned int GLhandleARB; + + + + + + + @@ -42643,11 +45801,24 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + @@ -42683,6 +45854,12 @@ typedef unsigned int GLhandleARB; + + + + + + @@ -42698,19 +45875,37 @@ typedef unsigned int GLhandleARB; - + + + + + + + + + + + + + + + + + + + - + - + @@ -42727,7 +45922,7 @@ typedef unsigned int GLhandleARB; - + @@ -42784,13 +45979,27 @@ typedef unsigned int GLhandleARB; - + + + + + + + - + + + + + + + + + @@ -42836,7 +46045,7 @@ typedef unsigned int GLhandleARB; - + @@ -42846,7 +46055,7 @@ typedef unsigned int GLhandleARB; - + @@ -42855,7 +46064,7 @@ typedef unsigned int GLhandleARB; - + @@ -42863,6 +46072,21 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + @@ -42972,6 +46196,15 @@ typedef unsigned int GLhandleARB; + + + + + + + + + @@ -43062,7 +46295,7 @@ typedef unsigned int GLhandleARB; - + @@ -43094,7 +46327,7 @@ typedef unsigned int GLhandleARB; - + @@ -43130,7 +46363,7 @@ typedef unsigned int GLhandleARB; - + @@ -43140,7 +46373,7 @@ typedef unsigned int GLhandleARB; - + @@ -43170,7 +46403,7 @@ typedef unsigned int GLhandleARB; - + @@ -43205,7 +46438,7 @@ typedef unsigned int GLhandleARB; - + @@ -43249,7 +46482,7 @@ typedef unsigned int GLhandleARB; - + @@ -43375,7 +46608,7 @@ typedef unsigned int GLhandleARB; - + @@ -43393,6 +46626,27 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + @@ -43454,7 +46708,7 @@ typedef unsigned int GLhandleARB; - + @@ -43692,9 +46946,28 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + - + @@ -43711,6 +46984,14 @@ typedef unsigned int GLhandleARB; + + + + + + + + @@ -43755,6 +47036,24 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + @@ -43845,6 +47144,11 @@ typedef unsigned int GLhandleARB; + + + + + @@ -43859,7 +47163,7 @@ typedef unsigned int GLhandleARB; - + @@ -43874,12 +47178,13 @@ typedef unsigned int GLhandleARB; - - - - - - + + + + + + + @@ -43900,7 +47205,7 @@ typedef unsigned int GLhandleARB; - + @@ -43909,14 +47214,14 @@ typedef unsigned int GLhandleARB; - + - + @@ -43927,6 +47232,7 @@ typedef unsigned int GLhandleARB; + @@ -43949,7 +47255,7 @@ typedef unsigned int GLhandleARB; - + @@ -43999,6 +47305,7 @@ typedef unsigned int GLhandleARB; + @@ -44166,7 +47473,7 @@ typedef unsigned int GLhandleARB; - + @@ -44207,7 +47514,7 @@ typedef unsigned int GLhandleARB; - + @@ -44232,7 +47539,7 @@ typedef unsigned int GLhandleARB; - + @@ -44534,7 +47841,24 @@ typedef unsigned int GLhandleARB; - + + + + + + + + + + + + + + + + + + @@ -44634,12 +47958,12 @@ typedef unsigned int GLhandleARB; - + - + @@ -44696,7 +48020,7 @@ typedef unsigned int GLhandleARB; - + @@ -45041,7 +48365,7 @@ typedef unsigned int GLhandleARB; - + @@ -45074,7 +48398,7 @@ typedef unsigned int GLhandleARB; - + @@ -45100,7 +48424,7 @@ typedef unsigned int GLhandleARB; - + @@ -45317,7 +48641,7 @@ typedef unsigned int GLhandleARB; - + @@ -45364,6 +48688,30 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + @@ -45386,15 +48734,16 @@ typedef unsigned int GLhandleARB; - + + - + @@ -45506,11 +48855,37 @@ typedef unsigned int GLhandleARB; + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3-59-g8ed1b From b0bcd266e7a076d919608f700ce18524cab06c23 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Mon, 2 Apr 2018 13:53:30 -0700 Subject: EGL: Fix ARM assembly constraint. addne takes immed_8r (constraint I) as the second operand, not FlexOffset (constraint J). Details: https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html Bug: 77455035 Test: Built and ran some CTS tests on Pixel XL. Change-Id: I95588462d885274b1e7900415d5853864292c11d --- opengl/libs/EGL/getProcAddress.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/getProcAddress.cpp b/opengl/libs/EGL/getProcAddress.cpp index c05e840f32..0183621299 100644 --- a/opengl/libs/EGL/getProcAddress.cpp +++ b/opengl/libs/EGL/getProcAddress.cpp @@ -54,7 +54,7 @@ namespace android { : [tls] "J"(TLS_SLOT_OPENGL_API*4), \ [ext] "J"(__builtin_offsetof(gl_hooks_t, \ ext.extensions[0])), \ - [api] "J"(_api*sizeof(void*)) \ + [api] "I"(_api*sizeof(void*)) \ : "r12" \ ); -- cgit v1.2.3-59-g8ed1b From 3430724214216a1932965ceab0b074995e683130 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Mon, 2 Apr 2018 10:58:32 -0700 Subject: Expose additional symbols from libGLESv2 and libGLESv3. The new symbols are from extensions required on Daydream-ready devices (feature android.vr.high_performance). Bug: 76152545 Test: Built and ran some GL-using CTS tests. Change-Id: Ibcba2fff1085995b0ed5b6c4a1b8981789222761 --- opengl/libs/libGLESv2.map.txt | 2 ++ opengl/libs/libGLESv3.map.txt | 7 +++++++ 2 files changed, 9 insertions(+) (limited to 'opengl/libs') diff --git a/opengl/libs/libGLESv2.map.txt b/opengl/libs/libGLESv2.map.txt index 1b0042aef5..787c8355a8 100644 --- a/opengl/libs/libGLESv2.map.txt +++ b/opengl/libs/libGLESv2.map.txt @@ -79,6 +79,7 @@ LIBGLESV2 { glFramebufferRenderbuffer; glFramebufferTexture2D; glFramebufferTexture2DMultisampleIMG; # introduced-mips=9 introduced-x86=9 + glFramebufferTexture2DMultisampleEXT; # introduced=28 glFramebufferTexture3DOES; glFrontFace; glGenBuffers; @@ -147,6 +148,7 @@ LIBGLESV2 { glReadPixels; glReleaseShaderCompiler; glRenderbufferStorage; + glRenderbufferStorageMultisampleEXT; # introduced=28 glRenderbufferStorageMultisampleIMG; # introduced-mips=9 introduced-x86=9 glSampleCoverage; glScissor; diff --git a/opengl/libs/libGLESv3.map.txt b/opengl/libs/libGLESv3.map.txt index 21f6cb665e..a7b17f453a 100644 --- a/opengl/libs/libGLESv3.map.txt +++ b/opengl/libs/libGLESv3.map.txt @@ -36,6 +36,8 @@ LIBGLESV3 { glBlendFunciEXT; # introduced=21 glBlitFramebuffer; glBufferData; + glBufferStorageEXT; # introduced=28 + glBufferStorageExternalEXT; # introduced=28 glBufferSubData; glCheckFramebufferStatus; glClear; @@ -110,6 +112,7 @@ LIBGLESV3 { glDrawRangeElementsBaseVertex; # introduced=24 glEGLImageTargetRenderbufferStorageOES; glEGLImageTargetTexture2DOES; + glEGLImageTargetTexStorageEXT; # introduced=28 glEnable; glEnableVertexAttribArray; glEnablei; # introduced=24 @@ -124,9 +127,12 @@ LIBGLESV3 { glFramebufferRenderbuffer; glFramebufferTexture; # introduced=24 glFramebufferTexture2D; + glFramebufferTexture2DMultisampleEXT; # introduced=28 glFramebufferTexture3DOES; glFramebufferTextureEXT; # introduced=21 glFramebufferTextureLayer; + glFramebufferTextureMultisampleMultiviewOVR; # introduced=28 + glFramebufferTextureMultiviewOVR; # introduced=28 glFrontFace; glGenBuffers; glGenFramebuffers; @@ -306,6 +312,7 @@ LIBGLESV3 { glReleaseShaderCompiler; glRenderbufferStorage; glRenderbufferStorageMultisample; + glRenderbufferStorageMultisampleEXT; # introduced=28 glResumeTransformFeedback; glSampleCoverage; glSampleMaski; # introduced=21 -- cgit v1.2.3-59-g8ed1b From f210217912c1d46b838d2a5cad85930b73bac13c Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Mon, 16 Apr 2018 10:11:31 -0700 Subject: Do not strip colorspace attribute for RGB888 surfaces. Bug: 76088973 Test: Ran an internal test app that draws a solid bar of 50% gray and 1-pixel stripes alternating between black and white to a RGB888 surface. Verified that the display matches expectations (the stripes and the bar are approximately the same brightness). Change-Id: I8682dfcaecf1034d74532b051bdd528b2e5e2870 --- opengl/libs/EGL/eglApi.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index f3a9ad8b88..d6c254d527 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -489,6 +489,9 @@ static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, bool haveColorSpaceSupport = dp->haveExtension("EGL_KHR_gl_colorspace"); switch (format) { case HAL_PIXEL_FORMAT_RGBA_8888: + case HAL_PIXEL_FORMAT_RGBX_8888: + // RGB_888 is never returned by getNativePixelFormat, but is included here for completeness. + case HAL_PIXEL_FORMAT_RGB_888: if (haveColorSpaceSupport) { // Spec says: // [fn1] Only OpenGL and OpenGL ES contexts which support sRGB -- cgit v1.2.3-59-g8ed1b From 41171c5a46f5238e90319aa242bf325a83d66aec Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Thu, 19 Apr 2018 21:38:54 -0700 Subject: Fix extension name for EGLImage colorspace support. The correct extension string is EGL_EXT_image_gl_colorspace, not EGL_KHR_image_gl_colorspace. Qualcomm driver exposes both variants. Bug: 32147090 Test: Used the application OpenGL ES CapsViewer from Play Store to verify that the extension EGL_EXT_image_gl_colorspace is present on Pixel XL. Change-Id: I2f5e053b7210ac896f5122a46932b41e4db87c3b --- opengl/libs/EGL/eglApi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index d6c254d527..ef6e9d0f9c 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -94,7 +94,7 @@ char const * const gBuiltinExtensionString = char const * const gExtensionString = "EGL_KHR_image " // mandatory "EGL_KHR_image_base " // mandatory - "EGL_KHR_image_gl_colorspace " + "EGL_EXT_image_gl_colorspace " "EGL_KHR_image_pixmap " "EGL_KHR_lock_surface " "EGL_KHR_gl_colorspace " -- cgit v1.2.3-59-g8ed1b From f2fc4e9780bdfbf30511f44f6722b6af7bb3baa3 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Wed, 18 Apr 2018 16:29:49 -0700 Subject: Refactor color space attribute processing. getColorSpaceAttribute and stripAttributes have closely related purpose. Merge them into a single processAttribute function. This also adjusts which color space attributes are passed to the driver, based on the EGL extension specifications. Bug: 78247539 Test: cts-tradefed run singleCommand cts-dev -m CtsDeqpTestCases \ --module-arg CtsDeqpTestCases:include-filter:dEQP-EGL.functional.* \ --skip-preconditions Change-Id: I79650e0066e54ae92033b280d75f17b4060114bd --- opengl/libs/EGL/eglApi.cpp | 386 ++++++++++++++++------------------------ opengl/libs/EGL/egl_display.cpp | 8 +- opengl/libs/EGL/egl_display.h | 1 + 3 files changed, 165 insertions(+), 230 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index d6c254d527..8bb76d214d 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -80,6 +80,7 @@ extern char const * const gBuiltinExtensionString; extern char const * const gExtensionString; // clang-format off +// Extensions implemented by the EGL wrapper. char const * const gBuiltinExtensionString = "EGL_KHR_get_all_proc_addresses " "EGL_ANDROID_presentation_time " @@ -91,6 +92,7 @@ char const * const gBuiltinExtensionString = "EGL_EXT_surface_CTA861_3_metadata " ; +// Whitelist of extensions exposed to applications if implemented in the vendor driver. char const * const gExtensionString = "EGL_KHR_image " // mandatory "EGL_KHR_image_base " // mandatory @@ -451,12 +453,8 @@ EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, // surfaces // ---------------------------------------------------------------------------- -// Turn linear formats into corresponding sRGB formats when colorspace is -// EGL_GL_COLORSPACE_SRGB_KHR, or turn sRGB formats into corresponding linear -// formats when colorspace is EGL_GL_COLORSPACE_LINEAR_KHR. In any cases where -// the modification isn't possible, the original dataSpace is returned. -static android_dataspace modifyBufferDataspace(android_dataspace dataSpace, - EGLint colorspace) { +// Translates EGL color spaces to Android data spaces. +static android_dataspace dataSpaceFromEGLColorSpace(EGLint colorspace) { if (colorspace == EGL_GL_COLORSPACE_LINEAR_KHR) { return HAL_DATASPACE_SRGB_LINEAR; } else if (colorspace == EGL_GL_COLORSPACE_SRGB_KHR) { @@ -474,196 +472,135 @@ static android_dataspace modifyBufferDataspace(android_dataspace dataSpace, } else if (colorspace == EGL_GL_COLORSPACE_BT2020_PQ_EXT) { return HAL_DATASPACE_BT2020_PQ; } - return dataSpace; -} - -// stripAttributes is used by eglCreateWindowSurface, eglCreatePbufferSurface -// and eglCreatePixmapSurface to clean up color space related Window parameters -// that a driver does not advertise support for. -// Return true if stripped_attrib_list has stripped contents. - -static EGLBoolean stripAttributes(egl_display_ptr dp, const EGLint* attrib_list, - EGLint format, - std::vector& stripped_attrib_list) { - std::vector allowedColorSpaces; - bool haveColorSpaceSupport = dp->haveExtension("EGL_KHR_gl_colorspace"); - switch (format) { - case HAL_PIXEL_FORMAT_RGBA_8888: - case HAL_PIXEL_FORMAT_RGBX_8888: - // RGB_888 is never returned by getNativePixelFormat, but is included here for completeness. - case HAL_PIXEL_FORMAT_RGB_888: - if (haveColorSpaceSupport) { - // Spec says: - // [fn1] Only OpenGL and OpenGL ES contexts which support sRGB - // rendering must respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and - // only to sRGB formats supported by the context (normally just SRGB8) - // Older versions not supporting sRGB rendering will ignore this - // surface attribute. - // - // We support sRGB and pixel format is SRGB8, so allow - // the EGL_GL_COLORSPACE_SRGB_KHR and - // EGL_GL_COLORSPACE_LINEAR_KHR - // colorspaces to be specified. - - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_SRGB_KHR); - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_LINEAR_KHR); - } - if (findExtension(dp->disp.queryString.extensions, - "EGL_EXT_gl_colorspace_display_p3_linear")) { - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT); - } - if (findExtension(dp->disp.queryString.extensions, - "EGL_EXT_gl_colorspace_display_p3")) { - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_EXT); - } - if (findExtension(dp->disp.queryString.extensions, - "EGL_EXT_gl_colorspace_bt2020_linear")) { - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_BT2020_LINEAR_EXT); - } - if (findExtension(dp->disp.queryString.extensions, - "EGL_EXT_gl_colorspace_bt2020_pq")) { - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); - } - if (findExtension(dp->disp.queryString.extensions, - "EGL_EXT_gl_colorspace_scrgb_linear")) { - allowedColorSpaces.push_back(EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT); - } - break; - - case HAL_PIXEL_FORMAT_RGBA_FP16: - case HAL_PIXEL_FORMAT_RGBA_1010102: - case HAL_PIXEL_FORMAT_RGB_565: - // Future: if driver supports XXXX extension, we can pass down that colorspace - default: - break; + return HAL_DATASPACE_UNKNOWN; +} + +// Returns a list of color spaces understood by the vendor EGL driver. +static std::vector getDriverColorSpaces(egl_display_ptr dp, + android_pixel_format format) { + std::vector colorSpaces; + if (!dp->hasColorSpaceSupport) return colorSpaces; + + // OpenGL drivers only support sRGB encoding with 8-bit formats. + // RGB_888 is never returned by getNativePixelFormat, but is included for completeness. + const bool formatSupportsSRGBEncoding = + format == HAL_PIXEL_FORMAT_RGBA_8888 || format == HAL_PIXEL_FORMAT_RGBX_8888 || + format == HAL_PIXEL_FORMAT_RGB_888; + const bool formatIsFloatingPoint = format == HAL_PIXEL_FORMAT_RGBA_FP16; + + if (formatSupportsSRGBEncoding) { + // sRGB and linear are always supported when color space support is present. + colorSpaces.push_back(EGL_GL_COLORSPACE_SRGB_KHR); + colorSpaces.push_back(EGL_GL_COLORSPACE_LINEAR_KHR); + // DCI-P3 uses the sRGB transfer function, so it's only relevant for 8-bit formats. + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_display_p3")) { + colorSpaces.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_EXT); + } } - if (!attrib_list) return false; - - bool stripped = false; - for (const EGLint* attr = attrib_list; attr[0] != EGL_NONE; attr += 2) { - switch (attr[0]) { - case EGL_GL_COLORSPACE_KHR: { - EGLint colorSpace = attr[1]; - bool found = false; - // Verify that color space is allowed - for (auto it : allowedColorSpaces) { - if (colorSpace == it) { - found = true; - } - } - if (found) { - // Found supported attribute - stripped_attrib_list.push_back(attr[0]); - stripped_attrib_list.push_back(attr[1]); - } else if (!haveColorSpaceSupport) { - // Device does not support colorspace extension - // pass on the attribute and let downstream - // components validate like normal - stripped_attrib_list.push_back(attr[0]); - stripped_attrib_list.push_back(attr[1]); - } else { - // Found supported attribute that driver does not - // support, strip it. - stripped = true; - } - } - break; - default: - stripped_attrib_list.push_back(attr[0]); - stripped_attrib_list.push_back(attr[1]); - break; + // According to the spec, scRGB is only supported for floating point formats. + // For non-linear scRGB, the application is responsible for applying the + // transfer function. + if (formatIsFloatingPoint) { + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_scrgb")) { + colorSpaces.push_back(EGL_GL_COLORSPACE_SCRGB_EXT); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_scrgb_linear")) { + colorSpaces.push_back(EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT); } } - // Make sure there is at least one attribute - if (stripped) { - stripped_attrib_list.push_back(EGL_NONE); - } - return stripped; -} - -static EGLBoolean getColorSpaceAttribute(egl_display_ptr dp, NativeWindowType window, - const EGLint* attrib_list, EGLint& colorSpace, - android_dataspace& dataSpace) { - colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; - dataSpace = HAL_DATASPACE_UNKNOWN; - - if (attrib_list && dp->haveExtension("EGL_KHR_gl_colorspace")) { - for (const EGLint* attr = attrib_list; *attr != EGL_NONE; attr += 2) { - if (*attr == EGL_GL_COLORSPACE_KHR) { - colorSpace = attr[1]; - bool found = false; - bool verify = true; - // Verify that color space is allowed - if (colorSpace == EGL_GL_COLORSPACE_SRGB_KHR || - colorSpace == EGL_GL_COLORSPACE_LINEAR_KHR) { - // SRGB and LINEAR are always supported when EGL_KHR_gl_colorspace - // is available, so no need to verify. - found = true; - verify = false; - } else if (colorSpace == EGL_GL_COLORSPACE_BT2020_LINEAR_EXT && - dp->haveExtension("EGL_EXT_gl_colorspace_bt2020_linear")) { - found = true; - } else if (colorSpace == EGL_GL_COLORSPACE_BT2020_PQ_EXT && - dp->haveExtension("EGL_EXT_gl_colorspace_bt2020_pq")) { - found = true; - } else if (colorSpace == EGL_GL_COLORSPACE_SCRGB_EXT && - dp->haveExtension("EGL_EXT_gl_colorspace_scrgb")) { - found = true; - } else if (colorSpace == EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT && - dp->haveExtension("EGL_EXT_gl_colorspace_scrgb_linear")) { - found = true; - } else if (colorSpace == EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT && - dp->haveExtension("EGL_EXT_gl_colorspace_display_p3_linear")) { - found = true; - } else if (colorSpace == EGL_GL_COLORSPACE_DISPLAY_P3_EXT && - dp->haveExtension("EGL_EXT_gl_colorspace_display_p3")) { - found = true; - } - if (!found) { - return false; - } - if (verify && window) { - bool wide_color_support = true; - // Ordinarily we'd put a call to native_window_get_wide_color_support - // at the beginning of the function so that we'll have the - // result when needed elsewhere in the function. - // However, because eglCreateWindowSurface is called by SurfaceFlinger and - // SurfaceFlinger is required to answer the call below we would - // end up in a deadlock situation. By moving the call to only happen - // if the application has specifically asked for wide-color we avoid - // the deadlock with SurfaceFlinger since it will not ask for a - // wide-color surface. - int err = native_window_get_wide_color_support(window, &wide_color_support); - - if (err) { - ALOGE("getColorSpaceAttribute: invalid window (win=%p) " - "failed (%#x) (already connected to another API?)", - window, err); - return false; - } - if (!wide_color_support) { - // Application has asked for a wide-color colorspace but - // wide-color support isn't available on the display the window is on. - return false; - } + // BT2020 can be used with any pixel format. PQ encoding must be applied by the + // application and does not affect the behavior of OpenGL. + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_bt2020_linear")) { + colorSpaces.push_back(EGL_GL_COLORSPACE_BT2020_LINEAR_EXT); + } + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_bt2020_pq")) { + colorSpaces.push_back(EGL_GL_COLORSPACE_BT2020_PQ_EXT); + } + + // Linear DCI-P3 simply uses different primaries than standard RGB and thus + // can be used with any pixel format. + if (findExtension(dp->disp.queryString.extensions, + "EGL_EXT_gl_colorspace_display_p3_linear")) { + colorSpaces.push_back(EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT); + } + return colorSpaces; +} + +// Cleans up color space related parameters that the driver does not understand. +// If there is no color space attribute in attrib_list, colorSpace is left +// unmodified. +static EGLBoolean processAttributes(egl_display_ptr dp, NativeWindowType window, + android_pixel_format format, const EGLint* attrib_list, + EGLint* colorSpace, + std::vector* strippedAttribList) { + for (const EGLint* attr = attrib_list; attr && attr[0] != EGL_NONE; attr += 2) { + bool copyAttribute = true; + if (attr[0] == EGL_GL_COLORSPACE_KHR) { + // Fail immediately if the driver doesn't have color space support at all. + if (!dp->hasColorSpaceSupport) return false; + *colorSpace = attr[1]; + + // Strip the attribute if the driver doesn't understand it. + copyAttribute = false; + std::vector driverColorSpaces = getDriverColorSpaces(dp, format); + for (auto driverColorSpace : driverColorSpaces) { + if (attr[1] == driverColorSpace) { + copyAttribute = true; + break; } - // Only change the dataSpace from default if the application - // has explicitly set the color space with a EGL_GL_COLORSPACE_KHR attribute. - dataSpace = modifyBufferDataspace(dataSpace, colorSpace); } } + if (copyAttribute) { + strippedAttribList->push_back(attr[0]); + strippedAttribList->push_back(attr[1]); + } + } + // Terminate the attribute list. + strippedAttribList->push_back(EGL_NONE); + + // If the passed color space has wide color gamut, check whether the target native window + // supports wide color. + const bool colorSpaceIsNarrow = + *colorSpace == EGL_GL_COLORSPACE_SRGB_KHR || + *colorSpace == EGL_GL_COLORSPACE_LINEAR_KHR; + if (window && !colorSpaceIsNarrow) { + bool windowSupportsWideColor = true; + // Ordinarily we'd put a call to native_window_get_wide_color_support + // at the beginning of the function so that we'll have the + // result when needed elsewhere in the function. + // However, because eglCreateWindowSurface is called by SurfaceFlinger and + // SurfaceFlinger is required to answer the call below we would + // end up in a deadlock situation. By moving the call to only happen + // if the application has specifically asked for wide-color we avoid + // the deadlock with SurfaceFlinger since it will not ask for a + // wide-color surface. + int err = native_window_get_wide_color_support(window, &windowSupportsWideColor); + + if (err) { + ALOGE("processAttributes: invalid window (win=%p) " + "failed (%#x) (already connected to another API?)", + window, err); + return false; + } + if (!windowSupportsWideColor) { + // Application has asked for a wide-color colorspace but + // wide-color support isn't available on the display the window is on. + return false; + } } return true; } -static EGLBoolean getColorSpaceAttribute(egl_display_ptr dp, const EGLint* attrib_list, - EGLint& colorSpace, android_dataspace& dataSpace) { - return getColorSpaceAttribute(dp, NULL, attrib_list, colorSpace, dataSpace); -} - -void getNativePixelFormat(EGLDisplay dpy, egl_connection_t* cnx, EGLConfig config, EGLint& format) { +// Gets the native pixel format corrsponding to the passed EGLConfig. +void getNativePixelFormat(EGLDisplay dpy, egl_connection_t* cnx, EGLConfig config, + android_pixel_format* format) { // Set the native window's buffers format to match what this config requests. // Whether to use sRGB gamma is not part of the EGLconfig, but is part // of our native format. So if sRGB gamma is requested, we have to @@ -697,27 +634,27 @@ void getNativePixelFormat(EGLDisplay dpy, egl_connection_t* cnx, EGLConfig confi // endif if (a == 0) { if (colorDepth <= 16) { - format = HAL_PIXEL_FORMAT_RGB_565; + *format = HAL_PIXEL_FORMAT_RGB_565; } else { if (componentType == EGL_COLOR_COMPONENT_TYPE_FIXED_EXT) { if (colorDepth > 24) { - format = HAL_PIXEL_FORMAT_RGBA_1010102; + *format = HAL_PIXEL_FORMAT_RGBA_1010102; } else { - format = HAL_PIXEL_FORMAT_RGBX_8888; + *format = HAL_PIXEL_FORMAT_RGBX_8888; } } else { - format = HAL_PIXEL_FORMAT_RGBA_FP16; + *format = HAL_PIXEL_FORMAT_RGBA_FP16; } } } else { if (componentType == EGL_COLOR_COMPONENT_TYPE_FIXED_EXT) { if (colorDepth > 24) { - format = HAL_PIXEL_FORMAT_RGBA_1010102; + *format = HAL_PIXEL_FORMAT_RGBA_1010102; } else { - format = HAL_PIXEL_FORMAT_RGBA_8888; + *format = HAL_PIXEL_FORMAT_RGBA_8888; } } else { - format = HAL_PIXEL_FORMAT_RGBA_FP16; + *format = HAL_PIXEL_FORMAT_RGBA_FP16; } } } @@ -758,8 +695,6 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, egl_connection_t* cnx = NULL; egl_display_ptr dp = validate_display_connection(dpy, cnx); if (dp) { - EGLDisplay iDpy = dp->disp.dpy; - if (!window) { return setError(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE); } @@ -778,39 +713,36 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, return setError(EGL_BAD_ALLOC, EGL_NO_SURFACE); } - EGLint format; - getNativePixelFormat(iDpy, cnx, config, format); + EGLDisplay iDpy = dp->disp.dpy; + android_pixel_format format; + getNativePixelFormat(iDpy, cnx, config, &format); // now select correct colorspace and dataspace based on user's attribute list - EGLint colorSpace; - android_dataspace dataSpace; - if (!getColorSpaceAttribute(dp, window, attrib_list, colorSpace, dataSpace)) { + EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; + std::vector strippedAttribList; + if (!processAttributes(dp, window, format, attrib_list, &colorSpace, + &strippedAttribList)) { ALOGE("error invalid colorspace: %d", colorSpace); return setError(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); } + attrib_list = strippedAttribList.data(); - std::vector strippedAttribList; - if (stripAttributes(dp, attrib_list, format, strippedAttribList)) { - // Had to modify the attribute list due to use of color space. - // Use modified list from here on. - attrib_list = strippedAttribList.data(); - } - - if (format != 0) { + { int err = native_window_set_buffers_format(window, format); if (err != 0) { ALOGE("error setting native window pixel format: %s (%d)", - strerror(-err), err); + strerror(-err), err); native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL); return setError(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE); } } - if (dataSpace != 0) { + android_dataspace dataSpace = dataSpaceFromEGLColorSpace(colorSpace); + if (dataSpace != HAL_DATASPACE_UNKNOWN) { int err = native_window_set_buffers_data_space(window, dataSpace); if (err != 0) { ALOGE("error setting native window pixel dataSpace: %s (%d)", - strerror(-err), err); + strerror(-err), err); native_window_api_disconnect(window, NATIVE_WINDOW_API_EGL); return setError(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE); } @@ -844,14 +776,20 @@ EGLSurface eglCreatePixmapSurface( EGLDisplay dpy, EGLConfig config, egl_connection_t* cnx = NULL; egl_display_ptr dp = validate_display_connection(dpy, cnx); - EGLint colorSpace; - android_dataspace dataSpace; if (dp) { + EGLDisplay iDpy = dp->disp.dpy; + android_pixel_format format; + getNativePixelFormat(iDpy, cnx, config, &format); + // now select a corresponding sRGB format if needed - if (!getColorSpaceAttribute(dp, attrib_list, colorSpace, dataSpace)) { + EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; + std::vector strippedAttribList; + if (!processAttributes(dp, nullptr, format, attrib_list, &colorSpace, + &strippedAttribList)) { ALOGE("error invalid colorspace: %d", colorSpace); return setError(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); } + attrib_list = strippedAttribList.data(); EGLSurface surface = cnx->egl.eglCreatePixmapSurface( dp->disp.dpy, config, pixmap, attrib_list); @@ -872,26 +810,18 @@ EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, egl_display_ptr dp = validate_display_connection(dpy, cnx); if (dp) { EGLDisplay iDpy = dp->disp.dpy; - EGLint format; - getNativePixelFormat(iDpy, cnx, config, format); + android_pixel_format format; + getNativePixelFormat(iDpy, cnx, config, &format); - // now select correct colorspace and dataspace based on user's attribute list - EGLint colorSpace; - android_dataspace dataSpace; - if (!getColorSpaceAttribute(dp, attrib_list, colorSpace, dataSpace)) { + // Select correct colorspace based on user's attribute list + EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; + std::vector strippedAttribList; + if (!processAttributes(dp, nullptr, format, attrib_list, &colorSpace, + &strippedAttribList)) { ALOGE("error invalid colorspace: %d", colorSpace); return setError(EGL_BAD_ATTRIBUTE, EGL_NO_SURFACE); } - - // Pbuffers are not displayed so we don't need to store the - // colorspace. We do need to filter out color spaces the - // driver doesn't know how to process. - std::vector strippedAttribList; - if (stripAttributes(dp, attrib_list, format, strippedAttribList)) { - // Had to modify the attribute list due to use of color space. - // Use modified list from here on. - attrib_list = strippedAttribList.data(); - } + attrib_list = strippedAttribList.data(); EGLSurface surface = cnx->egl.eglCreatePbufferSurface( dp->disp.dpy, config, attrib_list); diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index 74ddd1c31e..a56890a9d8 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -206,12 +206,16 @@ EGLBoolean egl_display_t::initialize(EGLint *major, EGLint *minor) { mExtensionString = gBuiltinExtensionString; + hasColorSpaceSupport = findExtension(disp.queryString.extensions, "EGL_KHR_gl_colorspace"); + + // Note: CDD requires that devices supporting wide color and/or HDR color also support + // the EGL_KHR_gl_colorspace extension. bool wideColorBoardConfig = getBool( false); // Add wide-color extensions if device can support wide-color - if (wideColorBoardConfig) { + if (wideColorBoardConfig && hasColorSpaceSupport) { mExtensionString.append( "EGL_EXT_gl_colorspace_scrgb EGL_EXT_gl_colorspace_scrgb_linear " "EGL_EXT_gl_colorspace_display_p3_linear EGL_EXT_gl_colorspace_display_p3 "); @@ -220,7 +224,7 @@ EGLBoolean egl_display_t::initialize(EGLint *major, EGLint *minor) { bool hasHdrBoardConfig = getBool(false); - if (hasHdrBoardConfig) { + if (hasHdrBoardConfig && hasColorSpaceSupport) { // hasHDRBoardConfig indicates the system is capable of supporting HDR content. // Typically that means there is an HDR capable display attached, but could be // support for attaching an HDR display. In either case, advertise support for diff --git a/opengl/libs/EGL/egl_display.h b/opengl/libs/EGL/egl_display.h index ccd333d5ff..79a9f082a6 100644 --- a/opengl/libs/EGL/egl_display.h +++ b/opengl/libs/EGL/egl_display.h @@ -113,6 +113,7 @@ public: DisplayImpl disp; bool finishOnSwap; // property: debug.egl.finish bool traceGpuCompletion; // property: debug.egl.traceGpuCompletion + bool hasColorSpaceSupport; private: friend class egl_display_ptr; -- cgit v1.2.3-59-g8ed1b From b18333d93d5f19d73af2ff36e73e9f32ce3c59b4 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Fri, 20 Apr 2018 19:37:42 -0700 Subject: Expose EGL_EXT_image_gl_colorspace if EGL_KHR... is present. Adreno 530 driver exposes EGL_KHR_image_gl_colorspace, which is the draft name of EGL_EXT_image_gl_colorspace that was changed during Khronos review. Add a mitigation to expose the correct extension string until the driver can be fixed. Bug: 78368937 Test: Built and flashed Pixel XL, verified that the extension EGL_EXT_image_gl_colorspace is present in the list of EGL exts; Ran CtsNativeHardwareTestCases and inspected the log to verify that test cases for sRGB EGLImages are not skipped. Change-Id: I64cef7be828516e2dbc160f98c83879fd8662450 --- opengl/libs/EGL/egl_display.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index a56890a9d8..2aec249aa5 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -240,6 +240,12 @@ EGLBoolean egl_display_t::initialize(EGLint *major, EGLint *minor) { if (len) { // NOTE: we could avoid the copy if we had strnstr. const std::string ext(start, len); + // Temporary hack: Adreno 530 driver exposes this extension under the draft + // KHR name, but during Khronos review it was decided to demote it to EXT. + if (ext == "EGL_EXT_image_gl_colorspace" && + findExtension(disp.queryString.extensions, "EGL_KHR_image_gl_colorspace")) { + mExtensionString.append("EGL_EXT_image_gl_colorspace "); + } if (findExtension(disp.queryString.extensions, ext.c_str(), len)) { mExtensionString.append(ext + " "); } -- cgit v1.2.3-59-g8ed1b From ae98af57f47fc85cb11781ab3185dc540b6759a1 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Thu, 26 Apr 2018 18:33:36 -0700 Subject: Work around CTS failure in eglCreateImageKHR. Qualcomm driver does not accept EGL_GL_COLORSPACE_DEFAULT_EXT. However, the meaning of this attribute is the same as not passing any colorspace attribute at all, so we can simply strip it. Bug: 78640230 Bug: 78660105 Test: Ran CtsVrTestCases on Pixel XL, passes. Change-Id: I265fbb70366f81b5ab75d06343ea85e0524dd314 --- opengl/libs/EGL/eglApi.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index b022a208c9..3615577f15 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -1733,13 +1733,31 @@ EGLImageKHR eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, ContextRef _c(dp.get(), ctx); egl_context_t * const c = _c.get(); + // Temporary hack: eglImageCreateKHR should accept EGL_GL_COLORSPACE_LINEAR_KHR, + // EGL_GL_COLORSPACE_SRGB_KHR and EGL_GL_COLORSPACE_DEFAULT_EXT if + // EGL_EXT_image_gl_colorspace is supported, but some drivers don't like + // the DEFAULT value and generate an error. + std::vector strippedAttribList; + for (const EGLint *attr = attrib_list; attr && attr[0] != EGL_NONE; attr += 2) { + if (attr[0] == EGL_GL_COLORSPACE_KHR && + dp->haveExtension("EGL_EXT_image_gl_colorspace")) { + if (attr[1] != EGL_GL_COLORSPACE_LINEAR_KHR && + attr[1] != EGL_GL_COLORSPACE_SRGB_KHR) { + continue; + } + } + strippedAttribList.push_back(attr[0]); + strippedAttribList.push_back(attr[1]); + } + strippedAttribList.push_back(EGL_NONE); + EGLImageKHR result = EGL_NO_IMAGE_KHR; egl_connection_t* const cnx = &gEGLImpl; if (cnx->dso && cnx->egl.eglCreateImageKHR) { result = cnx->egl.eglCreateImageKHR( dp->disp.dpy, c ? c->context : EGL_NO_CONTEXT, - target, buffer, attrib_list); + target, buffer, strippedAttribList.data()); } return result; } -- cgit v1.2.3-59-g8ed1b From 12752442419a83901691471c8c52a43146c213e4 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosiński Date: Tue, 8 May 2018 15:25:31 -0700 Subject: EGL: default to HAL_DATASPACE_UNKNOWN. The refactoring in ag/3926362 accidentally changed the dataspace used when no colorspace is specified to HAL_DATASPACE_SRGB_LINEAR. Go back to using HAL_DATASPACE_UNKNOWN in that case. Bug: 79248854 Bug: 76088973 Test: Ran some dEQP tests on Pixel XL. Change-Id: Ie723f8a0da71a2938e2af3b340a1660a976a071f --- opengl/libs/EGL/eglApi.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index 3615577f15..c65bddfbb3 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -475,6 +475,12 @@ static android_dataspace dataSpaceFromEGLColorSpace(EGLint colorspace) { return HAL_DATASPACE_UNKNOWN; } +// Get the colorspace value that should be reported from queries. When the colorspace +// is unknown (no attribute passed), default to reporting LINEAR. +static EGLint getReportedColorSpace(EGLint colorspace) { + return colorspace == EGL_UNKNOWN ? EGL_GL_COLORSPACE_LINEAR_KHR : colorspace; +} + // Returns a list of color spaces understood by the vendor EGL driver. static std::vector getDriverColorSpaces(egl_display_ptr dp, android_pixel_format format) { @@ -569,7 +575,8 @@ static EGLBoolean processAttributes(egl_display_ptr dp, NativeWindowType window, // supports wide color. const bool colorSpaceIsNarrow = *colorSpace == EGL_GL_COLORSPACE_SRGB_KHR || - *colorSpace == EGL_GL_COLORSPACE_LINEAR_KHR; + *colorSpace == EGL_GL_COLORSPACE_LINEAR_KHR || + *colorSpace == EGL_UNKNOWN; if (window && !colorSpaceIsNarrow) { bool windowSupportsWideColor = true; // Ordinarily we'd put a call to native_window_get_wide_color_support @@ -718,7 +725,7 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, getNativePixelFormat(iDpy, cnx, config, &format); // now select correct colorspace and dataspace based on user's attribute list - EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; + EGLint colorSpace = EGL_UNKNOWN; std::vector strippedAttribList; if (!processAttributes(dp, window, format, attrib_list, &colorSpace, &strippedAttribList)) { @@ -757,7 +764,8 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, iDpy, config, window, attrib_list); if (surface != EGL_NO_SURFACE) { egl_surface_t* s = - new egl_surface_t(dp.get(), config, window, surface, colorSpace, cnx); + new egl_surface_t(dp.get(), config, window, surface, + getReportedColorSpace(colorSpace), cnx); return s; } @@ -782,7 +790,7 @@ EGLSurface eglCreatePixmapSurface( EGLDisplay dpy, EGLConfig config, getNativePixelFormat(iDpy, cnx, config, &format); // now select a corresponding sRGB format if needed - EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; + EGLint colorSpace = EGL_UNKNOWN; std::vector strippedAttribList; if (!processAttributes(dp, nullptr, format, attrib_list, &colorSpace, &strippedAttribList)) { @@ -794,7 +802,9 @@ EGLSurface eglCreatePixmapSurface( EGLDisplay dpy, EGLConfig config, EGLSurface surface = cnx->egl.eglCreatePixmapSurface( dp->disp.dpy, config, pixmap, attrib_list); if (surface != EGL_NO_SURFACE) { - egl_surface_t* s = new egl_surface_t(dp.get(), config, NULL, surface, colorSpace, cnx); + egl_surface_t* s = + new egl_surface_t(dp.get(), config, NULL, surface, + getReportedColorSpace(colorSpace), cnx); return s; } } @@ -814,7 +824,7 @@ EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, getNativePixelFormat(iDpy, cnx, config, &format); // Select correct colorspace based on user's attribute list - EGLint colorSpace = EGL_GL_COLORSPACE_LINEAR_KHR; + EGLint colorSpace = EGL_UNKNOWN; std::vector strippedAttribList; if (!processAttributes(dp, nullptr, format, attrib_list, &colorSpace, &strippedAttribList)) { @@ -826,7 +836,9 @@ EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, EGLSurface surface = cnx->egl.eglCreatePbufferSurface( dp->disp.dpy, config, attrib_list); if (surface != EGL_NO_SURFACE) { - egl_surface_t* s = new egl_surface_t(dp.get(), config, NULL, surface, colorSpace, cnx); + egl_surface_t* s = + new egl_surface_t(dp.get(), config, NULL, surface, + getReportedColorSpace(colorSpace), cnx); return s; } } -- cgit v1.2.3-59-g8ed1b From 3ba2f86ae731aff8f751ccacec4996eb57e11d0d Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Thu, 17 May 2018 16:03:59 -0700 Subject: Switch x86/x64 trampolines to use __attribute__((naked)) Switching to clang++ means __attribute__((optimize)) is no longer recognized. However, we do get __attribute__((naked)). Slightly larger change than I'd like because __attribute__((naked)) doesn't permit C variable declarations. Change-Id: I558ccaf292e381d33e10c5034053cdc651eff5f2 Bug: b/79574249 Test: TBC --- opengl/libs/EGL/getProcAddress.cpp | 42 ++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'opengl/libs') diff --git a/opengl/libs/EGL/getProcAddress.cpp b/opengl/libs/EGL/getProcAddress.cpp index 0183621299..fedc7893db 100644 --- a/opengl/libs/EGL/getProcAddress.cpp +++ b/opengl/libs/EGL/getProcAddress.cpp @@ -80,46 +80,44 @@ namespace android { #elif defined(__i386__) - #define API_ENTRY(_api) __attribute__((noinline,optimize("omit-frame-pointer"))) _api + #define API_ENTRY(_api) __attribute__((naked)) _api #define CALL_GL_EXTENSION_API(_api) \ - register void** fn; \ __asm__ volatile( \ - "mov %%gs:0, %[fn]\n" \ - "mov %P[tls](%[fn]), %[fn]\n" \ - "test %[fn], %[fn]\n" \ - "cmovne %P[api](%[fn]), %[fn]\n" \ - "test %[fn], %[fn]\n" \ + "mov %%gs:0, %%eax\n" \ + "mov %P[tls](%%eax), %%eax\n" \ + "test %%eax, %%eax\n" \ + "cmovne %P[api](%%eax), %%eax\n" \ + "test %%eax, %%eax\n" \ "je 1f\n" \ - "jmp *%[fn]\n" \ - "1:\n" \ - : [fn] "=r" (fn) \ + "jmp *%%eax\n" \ + "1: ret\n" \ + : \ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \ [api] "i" (__builtin_offsetof(gl_hooks_t, \ ext.extensions[_api])) \ - : "cc" \ + : "eax", "cc" \ ); #elif defined(__x86_64__) - #define API_ENTRY(_api) __attribute__((noinline,optimize("omit-frame-pointer"))) _api + #define API_ENTRY(_api) __attribute__((naked)) _api #define CALL_GL_EXTENSION_API(_api) \ - register void** fn; \ __asm__ volatile( \ - "mov %%fs:0, %[fn]\n" \ - "mov %P[tls](%[fn]), %[fn]\n" \ - "test %[fn], %[fn]\n" \ - "cmovne %P[api](%[fn]), %[fn]\n" \ - "test %[fn], %[fn]\n" \ + "mov %%fs:0, %%rax\n" \ + "mov %P[tls](%%rax), %%rax\n" \ + "test %%rax, %%rax\n" \ + "cmovne %P[api](%%rax), %%rax\n" \ + "test %%rax, %%rax\n" \ "je 1f\n" \ - "jmp *%[fn]\n" \ - "1:\n" \ - : [fn] "=r" (fn) \ + "jmp *%%rax\n" \ + "1: ret\n" \ + : \ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \ [api] "i" (__builtin_offsetof(gl_hooks_t, \ ext.extensions[_api])) \ - : "cc" \ + : "rax", "cc" \ ); #elif defined(__mips64) -- cgit v1.2.3-59-g8ed1b