Merge "ANativeWindow_setBuffersTransform: Allow forwarding INVERSE_DISPLAY" into pi-dev
diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp
index 9648ede..19bf216 100644
--- a/cmds/dumpstate/dumpstate.cpp
+++ b/cmds/dumpstate/dumpstate.cpp
@@ -32,14 +32,20 @@
#include <sys/time.h>
#include <sys/wait.h>
#include <unistd.h>
+
+#include <chrono>
+#include <functional>
+#include <future>
#include <memory>
#include <regex>
#include <set>
#include <string>
+#include <utility>
#include <vector>
#include <android-base/file.h>
#include <android-base/properties.h>
+#include <android-base/scopeguard.h>
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
@@ -53,6 +59,7 @@
#include <private/android_filesystem_config.h>
#include <private/android_logger.h>
#include <serviceutils/PriorityDumper.h>
+#include <utils/StrongPointer.h>
#include "DumpstateInternal.h"
#include "DumpstateSectionReporter.h"
#include "DumpstateService.h"
@@ -1489,6 +1496,8 @@
SEC_TO_MSEC(10));
RunDumpsys("DUMPSYS", {"carrier_config"}, CommandOptions::WithTimeout(90).Build(),
SEC_TO_MSEC(10));
+ RunDumpsys("DUMPSYS", {"wifi"}, CommandOptions::WithTimeout(90).Build(),
+ SEC_TO_MSEC(10));
printf("========================================================\n");
printf("== Running Application Services\n");
@@ -1533,77 +1542,101 @@
printf("== Board\n");
printf("========================================================\n");
- ::android::sp<IDumpstateDevice> dumpstate_device(IDumpstateDevice::getService());
- if (dumpstate_device == nullptr) {
- MYLOGE("No IDumpstateDevice implementation\n");
- return;
- }
-
if (!IsZipping()) {
MYLOGD("Not dumping board info because it's not a zipped bugreport\n");
return;
}
- std::string path[NUM_OF_DUMPS];
- android::base::unique_fd fd[NUM_OF_DUMPS];
- int numFds = 0;
-
+ std::vector<std::string> paths;
+ std::vector<android::base::ScopeGuard<std::function<void()>>> remover;
for (int i = 0; i < NUM_OF_DUMPS; i++) {
- path[i] = kDumpstateBoardPath + kDumpstateBoardFiles[i];
- MYLOGI("Calling IDumpstateDevice implementation using path %s\n", path[i].c_str());
+ paths.emplace_back(kDumpstateBoardPath + kDumpstateBoardFiles[i]);
+ remover.emplace_back(android::base::make_scope_guard(std::bind(
+ [](std::string path) {
+ if (remove(path.c_str()) != 0 && errno != ENOENT) {
+ MYLOGE("Could not remove(%s): %s\n", path.c_str(), strerror(errno));
+ }
+ },
+ paths[i])));
+ }
- fd[i] = android::base::unique_fd(
- TEMP_FAILURE_RETRY(open(path[i].c_str(),
- O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NOFOLLOW,
- S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)));
- if (fd[i] < 0) {
- MYLOGE("Could not open file %s: %s\n", path[i].c_str(), strerror(errno));
- return;
- } else {
- numFds++;
+ // Given that bugreport is required to diagnose failures, it's better to
+ // drop the result of IDumpstateDevice than to block the rest of bugreport
+ // for an arbitrary amount of time.
+ std::packaged_task<std::unique_ptr<ssize_t[]>()>
+ dumpstate_task([paths]() -> std::unique_ptr<ssize_t[]> {
+ ::android::sp<IDumpstateDevice> dumpstate_device(IDumpstateDevice::getService());
+ if (dumpstate_device == nullptr) {
+ MYLOGE("No IDumpstateDevice implementation\n");
+ return nullptr;
+ }
+
+ using ScopedNativeHandle =
+ std::unique_ptr<native_handle_t, std::function<void(native_handle_t*)>>;
+ ScopedNativeHandle handle(native_handle_create(static_cast<int>(paths.size()), 0),
+ [](native_handle_t* handle) {
+ native_handle_close(handle);
+ native_handle_delete(handle);
+ });
+ if (handle == nullptr) {
+ MYLOGE("Could not create native_handle\n");
+ return nullptr;
+ }
+
+ for (size_t i = 0; i < paths.size(); i++) {
+ MYLOGI("Calling IDumpstateDevice implementation using path %s\n", paths[i].c_str());
+
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(
+ open(paths[i].c_str(), O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NOFOLLOW,
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)));
+ if (fd < 0) {
+ MYLOGE("Could not open file %s: %s\n", paths[i].c_str(), strerror(errno));
+ return nullptr;
+ }
+ handle.get()->data[i] = fd.release();
+ }
+
+ android::hardware::Return<void> status = dumpstate_device->dumpstateBoard(handle.get());
+ if (!status.isOk()) {
+ MYLOGE("dumpstateBoard failed: %s\n", status.description().c_str());
+ return nullptr;
+ }
+ auto file_sizes = std::make_unique<ssize_t[]>(paths.size());
+ for (size_t i = 0; i < paths.size(); i++) {
+ struct stat s;
+ if (fstat(handle.get()->data[i], &s) == -1) {
+ MYLOGE("Failed to fstat %s: %s\n", kDumpstateBoardFiles[i].c_str(),
+ strerror(errno));
+ file_sizes[i] = -1;
+ continue;
+ }
+ file_sizes[i] = s.st_size;
+ }
+ return file_sizes;
+ });
+ auto result = dumpstate_task.get_future();
+ std::thread(std::move(dumpstate_task)).detach();
+ if (result.wait_for(30s) != std::future_status::ready) {
+ MYLOGE("dumpstateBoard timed out after 30s\n");
+ return;
+ }
+ std::unique_ptr<ssize_t[]> file_sizes = result.get();
+ if (file_sizes == nullptr) {
+ return;
+ }
+
+ for (size_t i = 0; i < paths.size(); i++) {
+ if (file_sizes[i] == -1) {
+ continue;
}
- }
-
- native_handle_t *handle = native_handle_create(numFds, 0);
- if (handle == nullptr) {
- MYLOGE("Could not create native_handle\n");
- return;
- }
-
- for (int i = 0; i < numFds; i++) {
- handle->data[i] = fd[i].release();
- }
-
- // TODO: need a timeout mechanism so dumpstate does not hang on device implementation call.
- android::hardware::Return<void> status = dumpstate_device->dumpstateBoard(handle);
- if (!status.isOk()) {
- MYLOGE("dumpstateBoard failed: %s\n", status.description().c_str());
- native_handle_close(handle);
- native_handle_delete(handle);
- return;
- }
-
- for (int i = 0; i < numFds; i++) {
- struct stat s;
- if (fstat(handle->data[i], &s) == -1) {
- MYLOGE("Failed to fstat %s: %d\n", kDumpstateBoardFiles[i].c_str(), errno);
- } else if (s.st_size > 0) {
- AddZipEntry(kDumpstateBoardFiles[i], path[i]);
- } else {
+ if (file_sizes[i] == 0) {
MYLOGE("Ignoring empty %s\n", kDumpstateBoardFiles[i].c_str());
+ continue;
}
+ AddZipEntry(kDumpstateBoardFiles[i], paths[i]);
}
printf("*** See dumpstate-board.txt entry ***\n");
-
- native_handle_close(handle);
- native_handle_delete(handle);
-
- for (int i = 0; i < numFds; i++) {
- if (remove(path[i].c_str()) != 0) {
- MYLOGE("Could not remove(%s): %s\n", path[i].c_str(), strerror(errno));
- }
- }
}
static void ShowUsageAndExit(int exitCode = 1) {
diff --git a/cmds/installd/dexopt.cpp b/cmds/installd/dexopt.cpp
index e1e73c7..2777662 100644
--- a/cmds/installd/dexopt.cpp
+++ b/cmds/installd/dexopt.cpp
@@ -1264,8 +1264,8 @@
};
// (re)Creates the app image if needed.
-Dex2oatFileWrapper maybe_open_app_image(const char* out_oat_path, bool profile_guided,
- bool is_public, int uid, bool is_secondary_dex) {
+Dex2oatFileWrapper maybe_open_app_image(const char* out_oat_path,
+ bool generate_app_image, bool is_public, int uid, bool is_secondary_dex) {
// We don't create an image for secondary dex files.
if (is_secondary_dex) {
@@ -1278,11 +1278,11 @@
return Dex2oatFileWrapper();
}
- // Use app images only if it is enabled (by a set image format) and we are compiling
- // profile-guided (so the app image doesn't conservatively contain all classes).
- if (!profile_guided) {
- // In case there is a stale image, remove it now. Ignore any error.
- unlink(image_path.c_str());
+ // In case there is a stale image, remove it now. Ignore any error.
+ unlink(image_path.c_str());
+
+ // Not enabled, exit.
+ if (!generate_app_image) {
return Dex2oatFileWrapper();
}
char app_image_format[kPropertyValueMax];
@@ -1959,6 +1959,7 @@
bool background_job_compile = (dexopt_flags & DEXOPT_IDLE_BACKGROUND_JOB) != 0;
bool enable_hidden_api_checks = (dexopt_flags & DEXOPT_ENABLE_HIDDEN_API_CHECKS) != 0;
bool generate_compact_dex = (dexopt_flags & DEXOPT_GENERATE_COMPACT_DEX) != 0;
+ bool generate_app_image = (dexopt_flags & DEXOPT_GENERATE_APP_IMAGE) != 0;
// Check if we're dealing with a secondary dex file and if we need to compile it.
std::string oat_dir_str;
@@ -2027,8 +2028,8 @@
unique_fd swap_fd = maybe_open_dexopt_swap_file(out_oat_path);
// Create the app image file if needed.
- Dex2oatFileWrapper image_fd =
- maybe_open_app_image(out_oat_path, profile_guided, is_public, uid, is_secondary_dex);
+ Dex2oatFileWrapper image_fd = maybe_open_app_image(
+ out_oat_path, generate_app_image, is_public, uid, is_secondary_dex);
// Open the reference profile if needed.
Dex2oatFileWrapper reference_profile_fd = maybe_open_reference_profile(
diff --git a/cmds/installd/installd_constants.h b/cmds/installd/installd_constants.h
index 26aa443..c928631 100644
--- a/cmds/installd/installd_constants.h
+++ b/cmds/installd/installd_constants.h
@@ -54,6 +54,7 @@
constexpr int DEXOPT_IDLE_BACKGROUND_JOB = 1 << 9;
constexpr int DEXOPT_ENABLE_HIDDEN_API_CHECKS = 1 << 10;
constexpr int DEXOPT_GENERATE_COMPACT_DEX = 1 << 11;
+constexpr int DEXOPT_GENERATE_APP_IMAGE = 1 << 12;
/* all known values for dexopt flags */
constexpr int DEXOPT_MASK =
@@ -67,7 +68,8 @@
| DEXOPT_STORAGE_DE
| DEXOPT_IDLE_BACKGROUND_JOB
| DEXOPT_ENABLE_HIDDEN_API_CHECKS
- | DEXOPT_GENERATE_COMPACT_DEX;
+ | DEXOPT_GENERATE_COMPACT_DEX
+ | DEXOPT_GENERATE_APP_IMAGE;
// NOTE: keep in sync with StorageManager
constexpr int FLAG_STORAGE_DE = 1 << 0;
diff --git a/cmds/installd/otapreopt.cpp b/cmds/installd/otapreopt.cpp
index 58355f9..96d8c47 100644
--- a/cmds/installd/otapreopt.cpp
+++ b/cmds/installd/otapreopt.cpp
@@ -82,8 +82,9 @@
static_assert(DEXOPT_ENABLE_HIDDEN_API_CHECKS == 1 << 10,
"DEXOPT_ENABLE_HIDDEN_API_CHECKS unexpected");
static_assert(DEXOPT_GENERATE_COMPACT_DEX == 1 << 11, "DEXOPT_GENERATE_COMPACT_DEX unexpected");
+static_assert(DEXOPT_GENERATE_APP_IMAGE == 1 << 12, "DEXOPT_GENERATE_APP_IMAGE unexpected");
-static_assert(DEXOPT_MASK == (0xdfe | DEXOPT_IDLE_BACKGROUND_JOB),
+static_assert(DEXOPT_MASK == (0x1dfe | DEXOPT_IDLE_BACKGROUND_JOB),
"DEXOPT_MASK unexpected.");
diff --git a/cmds/installd/otapreopt_parameters.cpp b/cmds/installd/otapreopt_parameters.cpp
index d56aec9..cf3de01 100644
--- a/cmds/installd/otapreopt_parameters.cpp
+++ b/cmds/installd/otapreopt_parameters.cpp
@@ -246,6 +246,8 @@
case 7:
// Version 8 adds a new dexopt flag: DEXOPT_GENERATE_COMPACT_DEX
case 8: num_args_expected = 16; break;
+ // Version 9 adds a new dexopt flag: DEXOPT_GENERATE_APP_IMAGE
+ case 9: num_args_expected = 16; break;
default:
LOG(ERROR) << "Don't know how to read arguments for version " << version;
return false;
diff --git a/cmds/installd/tests/installd_dexopt_test.cpp b/cmds/installd/tests/installd_dexopt_test.cpp
index 668e604..279bce8 100644
--- a/cmds/installd/tests/installd_dexopt_test.cpp
+++ b/cmds/installd/tests/installd_dexopt_test.cpp
@@ -546,7 +546,7 @@
TEST_F(DexoptTest, DexoptPrimaryProfileNonPublic) {
LOG(INFO) << "DexoptPrimaryProfileNonPublic";
CompilePrimaryDexOk("speed-profile",
- DEXOPT_BOOTCOMPLETE | DEXOPT_PROFILE_GUIDED,
+ DEXOPT_BOOTCOMPLETE | DEXOPT_PROFILE_GUIDED | DEXOPT_GENERATE_APP_IMAGE,
app_oat_dir_.c_str(),
kTestAppGid,
DEX2OAT_FROM_SCRATCH);
@@ -555,7 +555,8 @@
TEST_F(DexoptTest, DexoptPrimaryProfilePublic) {
LOG(INFO) << "DexoptPrimaryProfilePublic";
CompilePrimaryDexOk("speed-profile",
- DEXOPT_BOOTCOMPLETE | DEXOPT_PROFILE_GUIDED | DEXOPT_PUBLIC,
+ DEXOPT_BOOTCOMPLETE | DEXOPT_PROFILE_GUIDED | DEXOPT_PUBLIC |
+ DEXOPT_GENERATE_APP_IMAGE,
app_oat_dir_.c_str(),
kTestAppGid,
DEX2OAT_FROM_SCRATCH);
@@ -564,7 +565,8 @@
TEST_F(DexoptTest, DexoptPrimaryBackgroundOk) {
LOG(INFO) << "DexoptPrimaryBackgroundOk";
CompilePrimaryDexOk("speed-profile",
- DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_PROFILE_GUIDED,
+ DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_PROFILE_GUIDED |
+ DEXOPT_GENERATE_APP_IMAGE,
app_oat_dir_.c_str(),
kTestAppGid,
DEX2OAT_FROM_SCRATCH);
diff --git a/cmds/installd/tests/installd_otapreopt_test.cpp b/cmds/installd/tests/installd_otapreopt_test.cpp
index 63426cb..b518507 100644
--- a/cmds/installd/tests/installd_otapreopt_test.cpp
+++ b/cmds/installd/tests/installd_otapreopt_test.cpp
@@ -113,6 +113,7 @@
case 6: return "6";
case 7: return "7";
case 8: return "8";
+ case 9: return "9";
}
return nullptr;
}
diff --git a/data/etc/android.software.device_id_attestation.xml b/data/etc/android.software.device_id_attestation.xml
new file mode 100644
index 0000000..4e637ca
--- /dev/null
+++ b/data/etc/android.software.device_id_attestation.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 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.
+-->
+
+<!-- Feature for devices with Keymaster that support Device ID attestation. -->
+<permissions>
+ <feature name="android.software.device_id_attestation" />
+</permissions>
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp
index f739f07..2d196c1 100644
--- a/libs/binder/Parcel.cpp
+++ b/libs/binder/Parcel.cpp
@@ -1276,7 +1276,7 @@
if (err) return err;
// payload
- void* const buf = this->writeInplace(pad_size(len));
+ void* const buf = this->writeInplace(len);
if (buf == NULL)
return BAD_VALUE;
diff --git a/libs/dumputils/dump_utils.cpp b/libs/dumputils/dump_utils.cpp
index 0fd2b81..835da20 100644
--- a/libs/dumputils/dump_utils.cpp
+++ b/libs/dumputils/dump_utils.cpp
@@ -44,6 +44,7 @@
"android.hardware.audio@2.0::IDevicesFactory",
"android.hardware.bluetooth@1.0::IBluetoothHci",
"android.hardware.camera.provider@2.4::ICameraProvider",
+ "android.hardware.drm@1.0::IDrmFactory",
"android.hardware.graphics.composer@2.1::IComposer",
"android.hardware.media.omx@1.0::IOmx",
"android.hardware.sensors@1.0::ISensors",
diff --git a/libs/gui/BufferHubProducer.cpp b/libs/gui/BufferHubProducer.cpp
index 70321ca..061710a 100644
--- a/libs/gui/BufferHubProducer.cpp
+++ b/libs/gui/BufferHubProducer.cpp
@@ -26,12 +26,6 @@
/* static */
sp<BufferHubProducer> BufferHubProducer::Create(const std::shared_ptr<ProducerQueue>& queue) {
- if (queue->metadata_size() != sizeof(DvrNativeBufferMetadata)) {
- ALOGE("BufferHubProducer::Create producer's metadata size is different "
- "than the size of DvrNativeBufferMetadata");
- return nullptr;
- }
-
sp<BufferHubProducer> producer = new BufferHubProducer;
producer->queue_ = queue;
return producer;
diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp
index 1988690..2917f45 100644
--- a/libs/gui/BufferQueue.cpp
+++ b/libs/gui/BufferQueue.cpp
@@ -113,8 +113,7 @@
dvr::ProducerQueueConfigBuilder configBuilder;
std::shared_ptr<dvr::ProducerQueue> producerQueue =
- dvr::ProducerQueue::Create(configBuilder.SetMetadata<DvrNativeBufferMetadata>().Build(),
- dvr::UsagePolicy{});
+ dvr::ProducerQueue::Create(configBuilder.Build(), dvr::UsagePolicy{});
LOG_ALWAYS_FATAL_IF(producerQueue == NULL, "BufferQueue: failed to create ProducerQueue.");
std::shared_ptr<dvr::ConsumerQueue> consumerQueue = producerQueue->CreateConsumerQueue();
diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp
index 788a6eb..885efec 100644
--- a/libs/gui/GLConsumer.cpp
+++ b/libs/gui/GLConsumer.cpp
@@ -984,7 +984,8 @@
}
if (mCurrentFence->isValid()) {
- if (SyncFeatures::getInstance().useWaitSync()) {
+ if (SyncFeatures::getInstance().useWaitSync() &&
+ SyncFeatures::getInstance().useNativeFenceSync()) {
// Create an EGLSyncKHR from the current fence.
int fenceFd = mCurrentFence->dup();
if (fenceFd == -1) {
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 6a1aebd..339bd0f 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -45,6 +45,7 @@
namespace android {
using ui::ColorMode;
+using ui::Dataspace;
Surface::Surface(const sp<IGraphicBufferProducer>& bufferProducer, bool controlledByApp)
: mGraphicBufferProducer(bufferProducer),
@@ -80,7 +81,7 @@
mReqFormat = 0;
mReqUsage = 0;
mTimestamp = NATIVE_WINDOW_TIMESTAMP_AUTO;
- mDataSpace = HAL_DATASPACE_UNKNOWN;
+ mDataSpace = Dataspace::UNKNOWN;
mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE;
mTransform = 0;
mStickyTransform = 0;
@@ -666,8 +667,9 @@
sp<Fence> fence(fenceFd >= 0 ? new Fence(fenceFd) : Fence::NO_FENCE);
IGraphicBufferProducer::QueueBufferOutput output;
IGraphicBufferProducer::QueueBufferInput input(timestamp, isAutoTimestamp,
- mDataSpace, crop, mScalingMode, mTransform ^ mStickyTransform,
- fence, mStickyTransform, mEnableFrameTimestamps);
+ static_cast<android_dataspace>(mDataSpace), crop, mScalingMode,
+ mTransform ^ mStickyTransform, fence, mStickyTransform,
+ mEnableFrameTimestamps);
// we should send HDR metadata as needed if this becomes a bottleneck
input.setHdrMetadata(mHdrMetadata);
@@ -1098,8 +1100,7 @@
}
int Surface::dispatchSetBuffersDataSpace(va_list args) {
- android_dataspace dataspace =
- static_cast<android_dataspace>(va_arg(args, int));
+ Dataspace dataspace = static_cast<Dataspace>(va_arg(args, int));
return setBuffersDataSpace(dataspace);
}
@@ -1531,7 +1532,7 @@
return NO_ERROR;
}
-int Surface::setBuffersDataSpace(android_dataspace dataSpace)
+int Surface::setBuffersDataSpace(Dataspace dataSpace)
{
ALOGV("Surface::setBuffersDataSpace");
Mutex::Autolock lock(mMutex);
@@ -1563,7 +1564,7 @@
return NO_ERROR;
}
-android_dataspace_t Surface::getBuffersDataSpace() {
+Dataspace Surface::getBuffersDataSpace() {
ALOGV("Surface::getBuffersDataSpace");
Mutex::Autolock lock(mMutex);
return mDataSpace;
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index bbf681e..63560c4 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -101,7 +101,8 @@
SurfaceComposerClient::Transaction::Transaction(const Transaction& other) :
mForceSynchronous(other.mForceSynchronous),
mTransactionNestCount(other.mTransactionNestCount),
- mAnimation(other.mAnimation) {
+ mAnimation(other.mAnimation),
+ mEarlyWakeup(other.mEarlyWakeup) {
mDisplayStates = other.mDisplayStates;
mComposerStates = other.mComposerStates;
}
@@ -157,9 +158,13 @@
if (mAnimation) {
flags |= ISurfaceComposer::eAnimation;
}
+ if (mEarlyWakeup) {
+ flags |= ISurfaceComposer::eEarlyWakeup;
+ }
mForceSynchronous = false;
mAnimation = false;
+ mEarlyWakeup = false;
sf->setTransactionState(composerStates, displayStates, flags);
mStatus = NO_ERROR;
@@ -185,6 +190,10 @@
mAnimation = true;
}
+void SurfaceComposerClient::Transaction::setEarlyWakeup() {
+ mEarlyWakeup = true;
+}
+
layer_state_t* SurfaceComposerClient::Transaction::getLayerState(const sp<SurfaceControl>& sc) {
if (mComposerStates.count(sc) == 0) {
// we don't have it, add an initialized layer_state to our list
diff --git a/libs/gui/include/gui/ISurfaceComposer.h b/libs/gui/include/gui/ISurfaceComposer.h
index 3591090..e401572 100644
--- a/libs/gui/include/gui/ISurfaceComposer.h
+++ b/libs/gui/include/gui/ISurfaceComposer.h
@@ -61,6 +61,11 @@
enum {
eSynchronous = 0x01,
eAnimation = 0x02,
+
+ // Indicates that this transaction will likely result in a lot of layers being composed, and
+ // thus, SurfaceFlinger should wake-up earlier to avoid missing frame deadlines. In this
+ // case SurfaceFlinger will wake up at (sf vsync offset - debug.sf.early_phase_offset_ns)
+ eEarlyWakeup = 0x04
};
enum {
diff --git a/libs/gui/include/gui/Surface.h b/libs/gui/include/gui/Surface.h
index 641d62c..9aeafae 100644
--- a/libs/gui/include/gui/Surface.h
+++ b/libs/gui/include/gui/Surface.h
@@ -22,6 +22,7 @@
#include <gui/IGraphicBufferProducer.h>
#include <ui/ANativeObjectBase.h>
+#include <ui/GraphicTypes.h>
#include <ui/Region.h>
#include <utils/Condition.h>
@@ -245,7 +246,7 @@
virtual int setBuffersTransform(uint32_t transform);
virtual int setBuffersStickyTransform(uint32_t transform);
virtual int setBuffersTimestamp(int64_t timestamp);
- virtual int setBuffersDataSpace(android_dataspace dataSpace);
+ virtual int setBuffersDataSpace(ui::Dataspace dataSpace);
virtual int setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metadata);
virtual int setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata);
virtual int setCrop(Rect const* rect);
@@ -286,7 +287,7 @@
// detachNextBuffer, or attachBuffer call.
status_t getAndFlushRemovedBuffers(std::vector<sp<GraphicBuffer>>* out);
- android_dataspace_t getBuffersDataSpace();
+ ui::Dataspace getBuffersDataSpace();
static status_t attachAndQueueBuffer(Surface* surface, sp<GraphicBuffer> buffer);
@@ -340,9 +341,9 @@
int64_t mTimestamp;
// mDataSpace is the buffer dataSpace that will be used for the next buffer
- // queue operation. It defaults to HAL_DATASPACE_UNKNOWN, which
+ // queue operation. It defaults to Dataspace::UNKNOWN, which
// means that the buffer contains some type of color data.
- android_dataspace mDataSpace;
+ ui::Dataspace mDataSpace;
// mHdrMetadata is the HDR metadata that will be used for the next buffer
// queue operation. There is no HDR metadata by default.
diff --git a/libs/gui/include/gui/SurfaceComposerClient.h b/libs/gui/include/gui/SurfaceComposerClient.h
index ffc22f6..377fe68 100644
--- a/libs/gui/include/gui/SurfaceComposerClient.h
+++ b/libs/gui/include/gui/SurfaceComposerClient.h
@@ -154,6 +154,7 @@
uint32_t mForceSynchronous = 0;
uint32_t mTransactionNestCount = 0;
bool mAnimation = false;
+ bool mEarlyWakeup = false;
int mStatus = NO_ERROR;
@@ -273,6 +274,7 @@
const Rect& displayRect);
void setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height);
void setAnimationTransaction();
+ void setEarlyWakeup();
};
status_t destroySurface(const sp<IBinder>& id);
diff --git a/libs/gui/tests/SurfaceParcelable_test.cpp b/libs/gui/tests/SurfaceParcelable_test.cpp
index 99a8a7a..686dc82 100644
--- a/libs/gui/tests/SurfaceParcelable_test.cpp
+++ b/libs/gui/tests/SurfaceParcelable_test.cpp
@@ -49,7 +49,6 @@
mProducerQueue = dvr::ProducerQueue::Create(configBuilder.SetDefaultWidth(kBufferWidth)
.SetDefaultHeight(kBufferHeight)
.SetDefaultFormat(kBufferFormat)
- .SetMetadata<DvrNativeBufferMetadata>()
.Build(),
dvr::UsagePolicy{});
mBufferHubProducer = BufferHubProducer::Create(mProducerQueue);
diff --git a/libs/nativewindow/AHardwareBuffer.cpp b/libs/nativewindow/AHardwareBuffer.cpp
index f37ef28..49ffc8f 100644
--- a/libs/nativewindow/AHardwareBuffer.cpp
+++ b/libs/nativewindow/AHardwareBuffer.cpp
@@ -60,6 +60,13 @@
return BAD_VALUE;
}
+ if ((desc->usage & (AHARDWAREBUFFER_USAGE_CPU_READ_MASK | AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK)) &&
+ (desc->usage & AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT)) {
+ ALOGE("AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT requires AHARDWAREBUFFER_USAGE_CPU_READ_NEVER "
+ "and AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER");
+ return BAD_VALUE;
+ }
+
uint64_t usage = AHardwareBuffer_convertToGrallocUsageBits(desc->usage);
sp<GraphicBuffer> gbuffer(new GraphicBuffer(
desc->width, desc->height, format, desc->layers, usage,
diff --git a/libs/ui/Android.bp b/libs/ui/Android.bp
index f71f814..1a9fb8b 100644
--- a/libs/ui/Android.bp
+++ b/libs/ui/Android.bp
@@ -73,6 +73,7 @@
shared_libs: [
"android.hardware.graphics.allocator@2.0",
+ "android.hardware.graphics.common@1.1",
"android.hardware.graphics.mapper@2.0",
"android.hardware.graphics.mapper@2.1",
"android.hardware.configstore@1.0",
@@ -83,12 +84,17 @@
"libhidlbase",
"libhidltransport",
"libhwbinder",
+ "libpdx_default_transport",
"libsync",
"libutils",
"libutilscallstack",
"liblog",
],
+ export_shared_lib_headers: [
+ "android.hardware.graphics.common@1.1",
+ ],
+
static_libs: [
"libarect",
"libgrallocusage",
@@ -99,10 +105,9 @@
"libbase_headers",
"libnativebase_headers",
"libhardware_headers",
+ "libui_headers",
],
- export_include_dirs: ["include"],
-
export_static_lib_headers: [
"libarect",
"libmath",
@@ -112,6 +117,7 @@
"libbase_headers",
"libnativebase_headers",
"libhardware_headers",
+ "libui_headers",
],
}
@@ -119,6 +125,11 @@
name: "libui_headers",
export_include_dirs: ["include"],
vendor_available: true,
+ target: {
+ vendor: {
+ override_export_include_dirs: ["include_vndk"],
+ },
+ },
}
subdirs = [
diff --git a/libs/ui/DebugUtils.cpp b/libs/ui/DebugUtils.cpp
index d7d8618..61df02d 100644
--- a/libs/ui/DebugUtils.cpp
+++ b/libs/ui/DebugUtils.cpp
@@ -23,6 +23,7 @@
using android::base::StringPrintf;
using android::ui::ColorMode;
+using android::ui::RenderIntent;
std::string decodeStandard(android_dataspace dataspace) {
const uint32_t dataspaceSelect = (dataspace & HAL_DATASPACE_STANDARD_MASK);
@@ -229,11 +230,47 @@
case ColorMode::DISPLAY_P3:
return std::string("ColorMode::DISPLAY_P3");
+
+ case ColorMode::BT2020:
+ return std::string("ColorMode::BT2020");
+
+ case ColorMode::BT2100_PQ:
+ return std::string("ColorMode::BT2100_PQ");
+
+ case ColorMode::BT2100_HLG:
+ return std::string("ColorMode::BT2100_HLG");
}
return android::base::StringPrintf("Unknown color mode %d", colorMode);
}
+std::string decodeColorTransform(android_color_transform colorTransform) {
+ switch (colorTransform) {
+ case HAL_COLOR_TRANSFORM_IDENTITY:
+ return std::string("Identity");
+
+ case HAL_COLOR_TRANSFORM_ARBITRARY_MATRIX:
+ return std::string("Arbitrary matrix");
+
+ case HAL_COLOR_TRANSFORM_VALUE_INVERSE:
+ return std::string("Inverse value");
+
+ case HAL_COLOR_TRANSFORM_GRAYSCALE:
+ return std::string("Grayscale");
+
+ case HAL_COLOR_TRANSFORM_CORRECT_PROTANOPIA:
+ return std::string("Correct protanopia");
+
+ case HAL_COLOR_TRANSFORM_CORRECT_DEUTERANOPIA:
+ return std::string("Correct deuteranopia");
+
+ case HAL_COLOR_TRANSFORM_CORRECT_TRITANOPIA:
+ return std::string("Correct tritanopia");
+ }
+
+ return android::base::StringPrintf("Unknown color transform %d", colorTransform);
+}
+
// Converts a PixelFormat to a human-readable string. Max 11 chars.
// (Could use a table of prefab String8 objects.)
std::string decodePixelFormat(android::PixelFormat format) {
@@ -267,6 +304,20 @@
}
}
+std::string decodeRenderIntent(RenderIntent renderIntent) {
+ switch(renderIntent) {
+ case RenderIntent::COLORIMETRIC:
+ return std::string("RenderIntent::COLORIMETRIC");
+ case RenderIntent::ENHANCE:
+ return std::string("RenderIntent::ENHANCE");
+ case RenderIntent::TONE_MAP_COLORIMETRIC:
+ return std::string("RenderIntent::TONE_MAP_COLORIMETRIC");
+ case RenderIntent::TONE_MAP_ENHANCE:
+ return std::string("RenderIntent::TONE_MAP_ENHANCE");
+ }
+ return std::string("Unknown RenderIntent");
+}
+
std::string to_string(const android::Rect& rect) {
return StringPrintf("(%4d,%4d,%4d,%4d)", rect.left, rect.top, rect.right, rect.bottom);
}
diff --git a/libs/ui/GraphicBuffer.cpp b/libs/ui/GraphicBuffer.cpp
index 4ed2aa4..254038b 100644
--- a/libs/ui/GraphicBuffer.cpp
+++ b/libs/ui/GraphicBuffer.cpp
@@ -22,6 +22,7 @@
#include <grallocusage/GrallocUsageConversion.h>
+#include <ui/DetachedBufferHandle.h>
#include <ui/Gralloc2.h>
#include <ui/GraphicBufferAllocator.h>
#include <ui/GraphicBufferMapper.h>
@@ -486,6 +487,24 @@
return NO_ERROR;
}
+bool GraphicBuffer::isDetachedBuffer() const {
+ return mDetachedBufferHandle && mDetachedBufferHandle->isValid();
+}
+
+status_t GraphicBuffer::setDetachedBufferHandle(std::unique_ptr<DetachedBufferHandle> channel) {
+ if (isDetachedBuffer()) {
+ ALOGW("setDetachedBuffer: there is already a BufferHub channel associated with this "
+ "GraphicBuffer. Replacing the old one.");
+ }
+
+ mDetachedBufferHandle = std::move(channel);
+ return NO_ERROR;
+}
+
+std::unique_ptr<DetachedBufferHandle> GraphicBuffer::takeDetachedBufferHandle() {
+ return std::move(mDetachedBufferHandle);
+}
+
// ---------------------------------------------------------------------------
}; // namespace android
diff --git a/libs/ui/include/ui/DebugUtils.h b/libs/ui/include/ui/DebugUtils.h
index 6350d0c..92b2bfb 100644
--- a/libs/ui/include/ui/DebugUtils.h
+++ b/libs/ui/include/ui/DebugUtils.h
@@ -30,5 +30,7 @@
std::string decodeRange(android_dataspace dataspace);
std::string dataspaceDetails(android_dataspace dataspace);
std::string decodeColorMode(android::ui::ColorMode colormode);
+std::string decodeColorTransform(android_color_transform colorTransform);
std::string decodePixelFormat(android::PixelFormat format);
+std::string decodeRenderIntent(android::ui::RenderIntent renderIntent);
std::string to_string(const android::Rect& rect);
diff --git a/libs/ui/include/ui/DetachedBufferHandle.h b/libs/ui/include/ui/DetachedBufferHandle.h
new file mode 100644
index 0000000..f3c328d
--- /dev/null
+++ b/libs/ui/include/ui/DetachedBufferHandle.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2018 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_DETACHED_BUFFER_HUB_HANDLE_H
+#define ANDROID_DETACHED_BUFFER_HUB_HANDLE_H
+
+#include <pdx/channel_handle.h>
+
+#include <memory>
+
+namespace android {
+
+// A wrapper that holds a pdx::LocalChannelHandle object. From the handle, a BufferHub buffer can be
+// created. Current implementation assumes that the underlying transport is using libpdx (thus
+// holding a pdx::LocalChannelHandle object), but future implementation can change it to a Binder
+// backend if ever needed.
+class DetachedBufferHandle {
+public:
+ static std::unique_ptr<DetachedBufferHandle> Create(pdx::LocalChannelHandle handle) {
+ return std::unique_ptr<DetachedBufferHandle>(new DetachedBufferHandle(std::move(handle)));
+ }
+
+ // Accessors to get or take the internal pdx::LocalChannelHandle.
+ pdx::LocalChannelHandle& handle() { return mHandle; }
+ const pdx::LocalChannelHandle& handle() const { return mHandle; }
+
+ // Returns whether the DetachedBufferHandle holds a BufferHub channel.
+ bool isValid() const { return mHandle.valid(); }
+
+private:
+ // Constructs a DetachedBufferHandle from a pdx::LocalChannelHandle.
+ explicit DetachedBufferHandle(pdx::LocalChannelHandle handle) : mHandle(std::move(handle)) {}
+
+ pdx::LocalChannelHandle mHandle;
+};
+
+} // namespace android
+
+#endif // ANDROID_DETACHED_BUFFER_HUB_HANDLE_H
diff --git a/libs/ui/include/ui/GraphicBuffer.h b/libs/ui/include/ui/GraphicBuffer.h
index e794462..cc38982 100644
--- a/libs/ui/include/ui/GraphicBuffer.h
+++ b/libs/ui/include/ui/GraphicBuffer.h
@@ -34,6 +34,7 @@
namespace android {
+class DetachedBufferHandle;
class GraphicBufferMapper;
// ===========================================================================
@@ -190,6 +191,11 @@
status_t flatten(void*& buffer, size_t& size, int*& fds, size_t& count) const;
status_t unflatten(void const*& buffer, size_t& size, int const*& fds, size_t& count);
+ // Sets and takes DetachedBuffer. Should only be called from BufferHub.
+ bool isDetachedBuffer() const;
+ status_t setDetachedBufferHandle(std::unique_ptr<DetachedBufferHandle> detachedBuffer);
+ std::unique_ptr<DetachedBufferHandle> takeDetachedBufferHandle();
+
private:
~GraphicBuffer();
@@ -240,6 +246,17 @@
// match the BufferQueue's internal generation number (set through
// IGBP::setGenerationNumber), attempts to attach the buffer will fail.
uint32_t mGenerationNumber;
+
+ // Stores a BufferHub handle that can be used to re-attach this GraphicBuffer back into a
+ // BufferHub producer/consumer set. In terms of GraphicBuffer's relationship with BufferHub,
+ // there are three different modes:
+ // 1. Legacy mode: GraphicBuffer is not backed by BufferHub and mDetachedBufferHandle must be
+ // invalid.
+ // 2. Detached mode: GraphicBuffer is backed by BufferHub, but not part of a producer/consumer
+ // set. In this mode, mDetachedBufferHandle must be valid.
+ // 3. Attached mode: GraphicBuffer is backed by BufferHub and it's part of a producer/consumer
+ // set. In this mode, mDetachedBufferHandle must be invalid.
+ std::unique_ptr<DetachedBufferHandle> mDetachedBufferHandle;
};
}; // namespace android
diff --git a/libs/ui/include/ui/GraphicTypes.h b/libs/ui/include/ui/GraphicTypes.h
index 39893b2..bd5722f 100644
--- a/libs/ui/include/ui/GraphicTypes.h
+++ b/libs/ui/include/ui/GraphicTypes.h
@@ -24,7 +24,10 @@
namespace android {
namespace ui {
-using android::hardware::graphics::common::V1_0::ColorMode;
+using android::hardware::graphics::common::V1_1::ColorMode;
+using android::hardware::graphics::common::V1_1::Dataspace;
+using android::hardware::graphics::common::V1_1::PixelFormat;
+using android::hardware::graphics::common::V1_1::RenderIntent;
} // namespace ui
} // namespace android
diff --git a/libs/ui/include_vndk/ui/ANativeObjectBase.h b/libs/ui/include_vndk/ui/ANativeObjectBase.h
new file mode 120000
index 0000000..4dab8d8
--- /dev/null
+++ b/libs/ui/include_vndk/ui/ANativeObjectBase.h
@@ -0,0 +1 @@
+../../include/ui/ANativeObjectBase.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/BufferQueueDefs.h b/libs/ui/include_vndk/ui/BufferQueueDefs.h
new file mode 120000
index 0000000..c886ed8
--- /dev/null
+++ b/libs/ui/include_vndk/ui/BufferQueueDefs.h
@@ -0,0 +1 @@
+../../include/ui/BufferQueueDefs.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/ColorSpace.h b/libs/ui/include_vndk/ui/ColorSpace.h
new file mode 120000
index 0000000..ddf70d5
--- /dev/null
+++ b/libs/ui/include_vndk/ui/ColorSpace.h
@@ -0,0 +1 @@
+../../include/ui/ColorSpace.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/DebugUtils.h b/libs/ui/include_vndk/ui/DebugUtils.h
new file mode 120000
index 0000000..8461bb3
--- /dev/null
+++ b/libs/ui/include_vndk/ui/DebugUtils.h
@@ -0,0 +1 @@
+../../include/ui/DebugUtils.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/DisplayInfo.h b/libs/ui/include_vndk/ui/DisplayInfo.h
new file mode 120000
index 0000000..75f14cf
--- /dev/null
+++ b/libs/ui/include_vndk/ui/DisplayInfo.h
@@ -0,0 +1 @@
+../../include/ui/DisplayInfo.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/DisplayStatInfo.h b/libs/ui/include_vndk/ui/DisplayStatInfo.h
new file mode 120000
index 0000000..6689ad3
--- /dev/null
+++ b/libs/ui/include_vndk/ui/DisplayStatInfo.h
@@ -0,0 +1 @@
+../../include/ui/DisplayStatInfo.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/Fence.h b/libs/ui/include_vndk/ui/Fence.h
new file mode 120000
index 0000000..b110201
--- /dev/null
+++ b/libs/ui/include_vndk/ui/Fence.h
@@ -0,0 +1 @@
+../../include/ui/Fence.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/FenceTime.h b/libs/ui/include_vndk/ui/FenceTime.h
new file mode 120000
index 0000000..01a6ff2
--- /dev/null
+++ b/libs/ui/include_vndk/ui/FenceTime.h
@@ -0,0 +1 @@
+../../include/ui/FenceTime.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/FloatRect.h b/libs/ui/include_vndk/ui/FloatRect.h
new file mode 120000
index 0000000..a526211
--- /dev/null
+++ b/libs/ui/include_vndk/ui/FloatRect.h
@@ -0,0 +1 @@
+../../include/ui/FloatRect.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/FrameStats.h b/libs/ui/include_vndk/ui/FrameStats.h
new file mode 120000
index 0000000..e68e5c8
--- /dev/null
+++ b/libs/ui/include_vndk/ui/FrameStats.h
@@ -0,0 +1 @@
+../../include/ui/FrameStats.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/Gralloc2.h b/libs/ui/include_vndk/ui/Gralloc2.h
new file mode 120000
index 0000000..66098c4
--- /dev/null
+++ b/libs/ui/include_vndk/ui/Gralloc2.h
@@ -0,0 +1 @@
+../../include/ui/Gralloc2.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/GraphicBuffer.h b/libs/ui/include_vndk/ui/GraphicBuffer.h
new file mode 120000
index 0000000..445eae5
--- /dev/null
+++ b/libs/ui/include_vndk/ui/GraphicBuffer.h
@@ -0,0 +1 @@
+../../include/ui/GraphicBuffer.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/GraphicBufferAllocator.h b/libs/ui/include_vndk/ui/GraphicBufferAllocator.h
new file mode 120000
index 0000000..9634533
--- /dev/null
+++ b/libs/ui/include_vndk/ui/GraphicBufferAllocator.h
@@ -0,0 +1 @@
+../../include/ui/GraphicBufferAllocator.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/GraphicBufferMapper.h b/libs/ui/include_vndk/ui/GraphicBufferMapper.h
new file mode 120000
index 0000000..c3b3a7c
--- /dev/null
+++ b/libs/ui/include_vndk/ui/GraphicBufferMapper.h
@@ -0,0 +1 @@
+../../include/ui/GraphicBufferMapper.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/GraphicTypes.h b/libs/ui/include_vndk/ui/GraphicTypes.h
new file mode 120000
index 0000000..b1859e0
--- /dev/null
+++ b/libs/ui/include_vndk/ui/GraphicTypes.h
@@ -0,0 +1 @@
+../../include/ui/GraphicTypes.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/HdrCapabilities.h b/libs/ui/include_vndk/ui/HdrCapabilities.h
new file mode 120000
index 0000000..a240828
--- /dev/null
+++ b/libs/ui/include_vndk/ui/HdrCapabilities.h
@@ -0,0 +1 @@
+../../include/ui/HdrCapabilities.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/PixelFormat.h b/libs/ui/include_vndk/ui/PixelFormat.h
new file mode 120000
index 0000000..0aba056
--- /dev/null
+++ b/libs/ui/include_vndk/ui/PixelFormat.h
@@ -0,0 +1 @@
+../../include/ui/PixelFormat.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/Point.h b/libs/ui/include_vndk/ui/Point.h
new file mode 120000
index 0000000..0aeda3e
--- /dev/null
+++ b/libs/ui/include_vndk/ui/Point.h
@@ -0,0 +1 @@
+../../include/ui/Point.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/Rect.h b/libs/ui/include_vndk/ui/Rect.h
new file mode 120000
index 0000000..01ed689
--- /dev/null
+++ b/libs/ui/include_vndk/ui/Rect.h
@@ -0,0 +1 @@
+../../include/ui/Rect.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/Region.h b/libs/ui/include_vndk/ui/Region.h
new file mode 120000
index 0000000..3f829bf
--- /dev/null
+++ b/libs/ui/include_vndk/ui/Region.h
@@ -0,0 +1 @@
+../../include/ui/Region.h
\ No newline at end of file
diff --git a/libs/ui/include_vndk/ui/UiConfig.h b/libs/ui/include_vndk/ui/UiConfig.h
new file mode 120000
index 0000000..f580ce1
--- /dev/null
+++ b/libs/ui/include_vndk/ui/UiConfig.h
@@ -0,0 +1 @@
+../../include/ui/UiConfig.h
\ No newline at end of file
diff --git a/libs/ui/tests/Android.bp b/libs/ui/tests/Android.bp
index 08067fc..aef6428 100644
--- a/libs/ui/tests/Android.bp
+++ b/libs/ui/tests/Android.bp
@@ -27,3 +27,10 @@
srcs: ["colorspace_test.cpp"],
cflags: ["-Wall", "-Werror"],
}
+
+cc_test {
+ name: "GraphicBuffer_test",
+ shared_libs: ["libpdx_default_transport", "libui", "libutils"],
+ srcs: ["GraphicBuffer_test.cpp"],
+ cflags: ["-Wall", "-Werror"],
+}
diff --git a/libs/ui/tests/GraphicBuffer_test.cpp b/libs/ui/tests/GraphicBuffer_test.cpp
new file mode 100644
index 0000000..eb679ac
--- /dev/null
+++ b/libs/ui/tests/GraphicBuffer_test.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2018 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.
+ */
+
+#define LOG_TAG "GraphicBufferTest"
+
+#include <ui/DetachedBufferHandle.h>
+#include <ui/GraphicBuffer.h>
+
+#include <gtest/gtest.h>
+
+namespace android {
+
+namespace {
+
+constexpr uint32_t kTestWidth = 1024;
+constexpr uint32_t kTestHeight = 1;
+constexpr uint32_t kTestFormat = HAL_PIXEL_FORMAT_BLOB;
+constexpr uint32_t kTestLayerCount = 1;
+constexpr uint64_t kTestUsage = GraphicBuffer::USAGE_SW_WRITE_OFTEN;
+
+} // namespace
+
+class GraphicBufferTest : public testing::Test {};
+
+TEST_F(GraphicBufferTest, DetachedBuffer) {
+ sp<GraphicBuffer> buffer(
+ new GraphicBuffer(kTestWidth, kTestHeight, kTestFormat, kTestLayerCount, kTestUsage));
+
+ // Currently a newly allocated GraphicBuffer is in legacy mode, i.e. not associated with
+ // BufferHub. But this may change in the future.
+ EXPECT_FALSE(buffer->isDetachedBuffer());
+
+ pdx::LocalChannelHandle channel{nullptr, 1234};
+ EXPECT_TRUE(channel.valid());
+
+ std::unique_ptr<DetachedBufferHandle> handle = DetachedBufferHandle::Create(std::move(channel));
+ EXPECT_FALSE(channel.valid());
+ EXPECT_TRUE(handle->isValid());
+ EXPECT_TRUE(handle->handle().valid());
+
+ buffer->setDetachedBufferHandle(std::move(handle));
+ EXPECT_TRUE(handle == nullptr);
+ EXPECT_TRUE(buffer->isDetachedBuffer());
+
+ handle = buffer->takeDetachedBufferHandle();
+ EXPECT_TRUE(handle != nullptr);
+ EXPECT_TRUE(handle->isValid());
+ EXPECT_FALSE(buffer->isDetachedBuffer());
+}
+
+} // namespace android
diff --git a/libs/vr/libbufferhub/Android.bp b/libs/vr/libbufferhub/Android.bp
index 39814cc..b38ecc7 100644
--- a/libs/vr/libbufferhub/Android.bp
+++ b/libs/vr/libbufferhub/Android.bp
@@ -15,6 +15,7 @@
sourceFiles = [
"buffer_hub_client.cpp",
"buffer_hub_rpc.cpp",
+ "detached_buffer.cpp",
"ion_buffer.cpp",
]
@@ -59,6 +60,11 @@
vndk: {
enabled: true,
},
+ target: {
+ vendor: {
+ exclude_srcs: ["detached_buffer.cpp"],
+ },
+ },
}
cc_test {
diff --git a/libs/vr/libbufferhub/buffer_hub-test.cpp b/libs/vr/libbufferhub/buffer_hub-test.cpp
index 660a200..2302828 100644
--- a/libs/vr/libbufferhub/buffer_hub-test.cpp
+++ b/libs/vr/libbufferhub/buffer_hub-test.cpp
@@ -2,8 +2,10 @@
#include <poll.h>
#include <private/dvr/buffer_hub_client.h>
#include <private/dvr/bufferhub_rpc.h>
+#include <private/dvr/detached_buffer.h>
#include <sys/epoll.h>
#include <sys/eventfd.h>
+#include <ui/DetachedBufferHandle.h>
#include <mutex>
#include <thread>
@@ -17,22 +19,28 @@
return result; \
})()
+using android::sp;
+using android::GraphicBuffer;
using android::dvr::BufferConsumer;
using android::dvr::BufferHubDefs::kConsumerStateMask;
+using android::dvr::BufferHubDefs::kMetadataHeaderSize;
using android::dvr::BufferHubDefs::kProducerStateBit;
using android::dvr::BufferHubDefs::IsBufferGained;
using android::dvr::BufferHubDefs::IsBufferPosted;
using android::dvr::BufferHubDefs::IsBufferAcquired;
using android::dvr::BufferHubDefs::IsBufferReleased;
using android::dvr::BufferProducer;
+using android::dvr::DetachedBuffer;
using android::pdx::LocalChannelHandle;
using android::pdx::LocalHandle;
using android::pdx::Status;
const int kWidth = 640;
const int kHeight = 480;
+const int kLayerCount = 1;
const int kFormat = HAL_PIXEL_FORMAT_RGBA_8888;
const int kUsage = 0;
+const size_t kUserMetadataSize = 0;
const uint64_t kContext = 42;
const size_t kMaxConsumerCount = 63;
const int kPollTimeoutMs = 100;
@@ -730,6 +738,7 @@
DvrNativeBufferMetadata metadata;
LocalHandle invalid_fence;
+ int p_id = p->id();
// Detach in posted state should fail.
EXPECT_EQ(0, p->PostAsync(&metadata, invalid_fence));
@@ -753,8 +762,8 @@
s1 = p->Detach();
EXPECT_TRUE(s1);
- LocalChannelHandle detached_buffer = s1.take();
- EXPECT_TRUE(detached_buffer.valid());
+ LocalChannelHandle handle = s1.take();
+ EXPECT_TRUE(handle.valid());
// Both producer and consumer should have hangup.
EXPECT_GT(RETRY_EINTR(p->Poll(kPollTimeoutMs)), 0);
@@ -779,4 +788,80 @@
// ConsumerChannel::HandleMessage as the socket is still open but the producer
// is gone.
EXPECT_EQ(s3.error(), EPIPE);
+
+ // Detached buffer handle can be use to construct a new DetachedBuffer object.
+ auto d = DetachedBuffer::Import(std::move(handle));
+ EXPECT_FALSE(handle.valid());
+ EXPECT_TRUE(d->IsValid());
+
+ ASSERT_TRUE(d->buffer() != nullptr);
+ EXPECT_EQ(d->buffer()->initCheck(), 0);
+ EXPECT_EQ(d->id(), p_id);
+}
+
+TEST_F(LibBufferHubTest, TestCreateDetachedBufferFails) {
+ // Buffer Creation will fail: BLOB format requires height to be 1.
+ auto b1 = DetachedBuffer::Create(kWidth, /*height=2*/2, kLayerCount,
+ /*format=*/HAL_PIXEL_FORMAT_BLOB, kUsage,
+ kUserMetadataSize);
+
+ EXPECT_FALSE(b1->IsValid());
+ EXPECT_TRUE(b1->buffer() == nullptr);
+
+ // Buffer Creation will fail: user metadata size too large.
+ auto b2 = DetachedBuffer::Create(
+ kWidth, kHeight, kLayerCount, kFormat, kUsage,
+ /*user_metadata_size=*/std::numeric_limits<size_t>::max());
+
+ EXPECT_FALSE(b2->IsValid());
+ EXPECT_TRUE(b2->buffer() == nullptr);
+
+ // Buffer Creation will fail: user metadata size too large.
+ auto b3 = DetachedBuffer::Create(
+ kWidth, kHeight, kLayerCount, kFormat, kUsage,
+ /*user_metadata_size=*/std::numeric_limits<size_t>::max() -
+ kMetadataHeaderSize);
+
+ EXPECT_FALSE(b3->IsValid());
+ EXPECT_TRUE(b3->buffer() == nullptr);
+}
+
+TEST_F(LibBufferHubTest, TestCreateDetachedBuffer) {
+ auto b1 = DetachedBuffer::Create(kWidth, kHeight, kLayerCount, kFormat,
+ kUsage, kUserMetadataSize);
+ int b1_id = b1->id();
+
+ EXPECT_TRUE(b1->IsValid());
+ ASSERT_TRUE(b1->buffer() != nullptr);
+ EXPECT_NE(b1->id(), 0);
+ EXPECT_EQ(b1->buffer()->initCheck(), 0);
+ EXPECT_FALSE(b1->buffer()->isDetachedBuffer());
+
+ // Takes a standalone GraphicBuffer which still holds on an
+ // PDX::LocalChannelHandle towards BufferHub.
+ sp<GraphicBuffer> g1 = b1->TakeGraphicBuffer();
+ ASSERT_TRUE(g1 != nullptr);
+ EXPECT_TRUE(g1->isDetachedBuffer());
+
+ EXPECT_FALSE(b1->IsValid());
+ EXPECT_TRUE(b1->buffer() == nullptr);
+
+ sp<GraphicBuffer> g2 = b1->TakeGraphicBuffer();
+ ASSERT_TRUE(g2 == nullptr);
+
+ auto h1 = g1->takeDetachedBufferHandle();
+ ASSERT_TRUE(h1 != nullptr);
+ ASSERT_TRUE(h1->isValid());
+ EXPECT_FALSE(g1->isDetachedBuffer());
+
+ auto b2 = DetachedBuffer::Import(std::move(h1->handle()));
+ ASSERT_FALSE(h1->isValid());
+ EXPECT_TRUE(b2->IsValid());
+
+ ASSERT_TRUE(b2->buffer() != nullptr);
+ EXPECT_EQ(b2->buffer()->initCheck(), 0);
+
+ // The newly created DetachedBuffer should share the original buffer_id.
+ EXPECT_EQ(b2->id(), b1_id);
+ EXPECT_FALSE(b2->buffer()->isDetachedBuffer());
}
diff --git a/libs/vr/libbufferhub/buffer_hub_client.cpp b/libs/vr/libbufferhub/buffer_hub_client.cpp
index 13971eb..159f2bd 100644
--- a/libs/vr/libbufferhub/buffer_hub_client.cpp
+++ b/libs/vr/libbufferhub/buffer_hub_client.cpp
@@ -15,10 +15,30 @@
using android::pdx::LocalChannelHandle;
using android::pdx::LocalHandle;
using android::pdx::Status;
+using android::pdx::default_transport::ClientChannel;
+using android::pdx::default_transport::ClientChannelFactory;
namespace android {
namespace dvr {
+BufferHubClient::BufferHubClient()
+ : Client(ClientChannelFactory::Create(BufferHubRPC::kClientPath)) {}
+
+BufferHubClient::BufferHubClient(LocalChannelHandle channel_handle)
+ : Client(ClientChannel::Create(std::move(channel_handle))) {}
+
+bool BufferHubClient::IsValid() const {
+ return IsConnected() && GetChannelHandle().valid();
+}
+
+LocalChannelHandle BufferHubClient::TakeChannelHandle() {
+ if (IsConnected()) {
+ return std::move(GetChannelHandle());
+ } else {
+ return {};
+ }
+}
+
BufferHubBuffer::BufferHubBuffer(LocalChannelHandle channel_handle)
: Client{pdx::default_transport::ClientChannel::Create(
std::move(channel_handle))},
diff --git a/libs/vr/libbufferhub/detached_buffer.cpp b/libs/vr/libbufferhub/detached_buffer.cpp
new file mode 100644
index 0000000..1d59cf3
--- /dev/null
+++ b/libs/vr/libbufferhub/detached_buffer.cpp
@@ -0,0 +1,104 @@
+#include <private/dvr/detached_buffer.h>
+
+#include <pdx/file_handle.h>
+#include <ui/DetachedBufferHandle.h>
+
+using android::pdx::LocalHandle;
+
+namespace android {
+namespace dvr {
+
+DetachedBuffer::DetachedBuffer(uint32_t width, uint32_t height,
+ uint32_t layer_count, uint32_t format,
+ uint64_t usage, size_t user_metadata_size) {
+ ATRACE_NAME("DetachedBuffer::DetachedBuffer");
+ ALOGD_IF(TRACE,
+ "DetachedBuffer::DetachedBuffer: width=%u height=%u layer_count=%u, "
+ "format=%u usage=%" PRIx64 " user_metadata_size=%zu",
+ width, height, layer_count, format, usage, user_metadata_size);
+
+ auto status = client_.InvokeRemoteMethod<DetachedBufferRPC::Create>(
+ width, height, layer_count, format, usage, user_metadata_size);
+ if (!status) {
+ ALOGE(
+ "DetachedBuffer::DetachedBuffer: Failed to create detached buffer: %s",
+ status.GetErrorMessage().c_str());
+ client_.Close(-status.error());
+ }
+
+ const int ret = ImportGraphicBuffer();
+ if (ret < 0) {
+ ALOGE("DetachedBuffer::DetachedBuffer: Failed to import buffer: %s",
+ strerror(-ret));
+ client_.Close(ret);
+ }
+}
+
+DetachedBuffer::DetachedBuffer(LocalChannelHandle channel_handle)
+ : client_(std::move(channel_handle)) {
+ const int ret = ImportGraphicBuffer();
+ if (ret < 0) {
+ ALOGE("DetachedBuffer::DetachedBuffer: Failed to import buffer: %s",
+ strerror(-ret));
+ client_.Close(ret);
+ }
+}
+
+int DetachedBuffer::ImportGraphicBuffer() {
+ ATRACE_NAME("DetachedBuffer::DetachedBuffer");
+
+ auto status = client_.InvokeRemoteMethod<DetachedBufferRPC::Import>();
+ if (!status) {
+ ALOGE("DetachedBuffer::DetachedBuffer: Failed to import GraphicBuffer: %s",
+ status.GetErrorMessage().c_str());
+ return -status.error();
+ }
+
+ BufferDescription<LocalHandle> buffer_desc = status.take();
+ if (buffer_desc.id() < 0) {
+ ALOGE("DetachedBuffer::DetachedBuffer: Received an invalid id!");
+ return -EIO;
+ }
+
+ // Stash the buffer id to replace the value in id_.
+ const int buffer_id = buffer_desc.id();
+
+ // Import the buffer.
+ IonBuffer ion_buffer;
+ ALOGD_IF(TRACE, "DetachedBuffer::DetachedBuffer: id=%d.", buffer_id);
+
+ if (const int ret = buffer_desc.ImportBuffer(&ion_buffer)) {
+ ALOGE("Failed to import GraphicBuffer, error=%d", ret);
+ return ret;
+ }
+
+ // If all imports succeed, replace the previous buffer and id.
+ id_ = buffer_id;
+ buffer_ = std::move(ion_buffer);
+ return 0;
+}
+
+std::unique_ptr<BufferProducer> DetachedBuffer::Promote() {
+ ALOGE("DetachedBuffer::Promote: Not implemented.");
+ return nullptr;
+}
+
+sp<GraphicBuffer> DetachedBuffer::TakeGraphicBuffer() {
+ if (!client_.IsValid() || !buffer_.buffer()) {
+ ALOGE("DetachedBuffer::TakeGraphicBuffer: Invalid buffer.");
+ return nullptr;
+ }
+
+ // Technically this should never happen.
+ LOG_FATAL_IF(
+ buffer_.buffer()->isDetachedBuffer(),
+ "DetachedBuffer::TakeGraphicBuffer: GraphicBuffer is already detached.");
+
+ sp<GraphicBuffer> buffer = std::move(buffer_.buffer());
+ buffer->setDetachedBufferHandle(
+ DetachedBufferHandle::Create(client_.TakeChannelHandle()));
+ return buffer;
+}
+
+} // namespace dvr
+} // namespace android
diff --git a/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h b/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
index 32448a1..c1cc7f3 100644
--- a/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
+++ b/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
@@ -16,6 +16,21 @@
namespace android {
namespace dvr {
+class BufferHubClient : public pdx::Client {
+ public:
+ using LocalChannelHandle = pdx::LocalChannelHandle;
+
+ BufferHubClient();
+ explicit BufferHubClient(LocalChannelHandle channel_handle);
+
+ bool IsValid() const;
+ LocalChannelHandle TakeChannelHandle();
+
+ using pdx::Client::Close;
+ using pdx::Client::InvokeRemoteMethod;
+ using pdx::Client::IsConnected;
+};
+
class BufferHubBuffer : public pdx::Client {
public:
using LocalHandle = pdx::LocalHandle;
diff --git a/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h b/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
index fabefd5..f4918c4 100644
--- a/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
+++ b/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
@@ -375,7 +375,7 @@
kOpConsumerSetIgnore,
kOpProducerBufferDetach,
kOpConsumerBufferDetach,
- kOpCreateDetachedBuffer,
+ kOpDetachedBufferCreate,
kOpDetachedBufferPromote,
kOpCreateProducerQueue,
kOpCreateConsumerQueue,
@@ -383,6 +383,8 @@
kOpProducerQueueAllocateBuffers,
kOpProducerQueueRemoveBuffer,
kOpConsumerQueueImportBuffers,
+ // TODO(b/77153033): Separate all those RPC operations into subclasses.
+ kOpDetachedBufferBase = 1000,
};
// Aliases.
@@ -416,17 +418,6 @@
PDX_REMOTE_METHOD(ConsumerBufferDetach, kOpConsumerBufferDetach,
LocalChannelHandle(Void));
- // Creates a standalone DetachedBuffer not associated with any
- // producer/consumer set.
- PDX_REMOTE_METHOD(CreateDetachedBuffer, kOpCreateDetachedBuffer,
- LocalChannelHandle(Void));
-
- // Promotes a DetachedBuffer to become a ProducerBuffer. Once promoted the
- // DetachedBuffer channel will be closed automatically on successful IPC
- // return. Further IPCs towards this channel will return error.
- PDX_REMOTE_METHOD(DetachedBufferPromote, kOpDetachedBufferPromote,
- LocalChannelHandle(Void));
-
// Buffer Queue Methods.
PDX_REMOTE_METHOD(CreateProducerQueue, kOpCreateProducerQueue,
QueueInfo(const ProducerQueueConfig& producer_config,
@@ -445,6 +436,25 @@
std::vector<std::pair<LocalChannelHandle, size_t>>(Void));
};
+struct DetachedBufferRPC final : public BufferHubRPC {
+ private:
+ enum {
+ kOpCreate = kOpDetachedBufferBase,
+ kOpImport,
+ kOpPromote,
+ };
+
+ public:
+ PDX_REMOTE_METHOD(Create, kOpCreate,
+ void(uint32_t width, uint32_t height, uint32_t layer_count,
+ uint32_t format, uint64_t usage,
+ size_t user_metadata_size));
+ PDX_REMOTE_METHOD(Import, kOpImport, BufferDescription<LocalHandle>(Void));
+ PDX_REMOTE_METHOD(Promote, kOpPromote, LocalChannelHandle(Void));
+
+ PDX_REMOTE_API(API, Create, Promote);
+};
+
} // namespace dvr
} // namespace android
diff --git a/libs/vr/libbufferhub/include/private/dvr/detached_buffer.h b/libs/vr/libbufferhub/include/private/dvr/detached_buffer.h
new file mode 100644
index 0000000..73e895d
--- /dev/null
+++ b/libs/vr/libbufferhub/include/private/dvr/detached_buffer.h
@@ -0,0 +1,65 @@
+#ifndef ANDROID_DVR_DETACHED_BUFFER_H_
+#define ANDROID_DVR_DETACHED_BUFFER_H_
+
+#include <private/dvr/buffer_hub_client.h>
+
+namespace android {
+namespace dvr {
+
+class DetachedBuffer {
+ public:
+ using LocalChannelHandle = pdx::LocalChannelHandle;
+
+ // Allocates a standalone DetachedBuffer not associated with any producer
+ // consumer set.
+ static std::unique_ptr<DetachedBuffer> Create(uint32_t width, uint32_t height,
+ uint32_t layer_count,
+ uint32_t format, uint64_t usage,
+ size_t user_metadata_size) {
+ return std::unique_ptr<DetachedBuffer>(new DetachedBuffer(
+ width, height, layer_count, format, usage, user_metadata_size));
+ }
+
+ // Imports the given channel handle to a DetachedBuffer, taking ownership.
+ static std::unique_ptr<DetachedBuffer> Import(
+ LocalChannelHandle channel_handle) {
+ return std::unique_ptr<DetachedBuffer>(
+ new DetachedBuffer(std::move(channel_handle)));
+ }
+
+ DetachedBuffer(const DetachedBuffer&) = delete;
+ void operator=(const DetachedBuffer&) = delete;
+
+ const sp<GraphicBuffer>& buffer() const { return buffer_.buffer(); }
+
+ int id() const { return id_; }
+ bool IsValid() const { return client_.IsValid(); }
+
+ // Promotes a DetachedBuffer to become a ProducerBuffer. Once promoted the
+ // DetachedBuffer channel will be closed automatically on successful IPC
+ // return. Further IPCs towards this channel will return error.
+ std::unique_ptr<BufferProducer> Promote();
+
+ // Takes the underlying graphic buffer out of this DetachedBuffer. This call
+ // immediately invalidates this DetachedBuffer object and transfers the
+ // underlying pdx::LocalChannelHandle into the GraphicBuffer.
+ sp<GraphicBuffer> TakeGraphicBuffer();
+
+ private:
+ DetachedBuffer(uint32_t width, uint32_t height, uint32_t layer_count,
+ uint32_t format, uint64_t usage, size_t user_metadata_size);
+
+ DetachedBuffer(LocalChannelHandle channel_handle);
+
+ int ImportGraphicBuffer();
+
+ // Global id for the buffer that is consistent across processes.
+ int id_;
+ IonBuffer buffer_;
+ BufferHubClient client_;
+};
+
+} // namespace dvr
+} // namespace android
+
+#endif // ANDROID_DVR_DETACHED_BUFFER_H_
diff --git a/libs/vr/libbufferhub/include/private/dvr/ion_buffer.h b/libs/vr/libbufferhub/include/private/dvr/ion_buffer.h
index 0d337f7..f6bc547 100644
--- a/libs/vr/libbufferhub/include/private/dvr/ion_buffer.h
+++ b/libs/vr/libbufferhub/include/private/dvr/ion_buffer.h
@@ -23,6 +23,9 @@
IonBuffer(IonBuffer&& other);
IonBuffer& operator=(IonBuffer&& other);
+ // Returns check this IonBuffer holds a valid Gralloc buffer.
+ bool IsValid() const { return buffer_ && buffer_->initCheck() == NO_ERROR; }
+
// Frees the underlying native handle and leaves the instance initialized to
// empty.
void FreeHandle();
@@ -66,6 +69,7 @@
struct android_ycbcr* yuv);
int Unlock();
+ sp<GraphicBuffer>& buffer() { return buffer_; }
const sp<GraphicBuffer>& buffer() const { return buffer_; }
buffer_handle_t handle() const {
return buffer_.get() ? buffer_->handle : nullptr;
diff --git a/libs/vr/libbufferhubqueue/tests/buffer_hub_queue_producer-test.cpp b/libs/vr/libbufferhubqueue/tests/buffer_hub_queue_producer-test.cpp
index 3e96989..4f10f83 100644
--- a/libs/vr/libbufferhubqueue/tests/buffer_hub_queue_producer-test.cpp
+++ b/libs/vr/libbufferhubqueue/tests/buffer_hub_queue_producer-test.cpp
@@ -94,9 +94,7 @@
ALOGD_IF(TRACE, "Begin test: %s.%s", testInfo->test_case_name(),
testInfo->name());
- auto config = ProducerQueueConfigBuilder()
- .SetMetadata<DvrNativeBufferMetadata>()
- .Build();
+ auto config = ProducerQueueConfigBuilder().Build();
auto queue = ProducerQueue::Create(config, UsagePolicy{});
ASSERT_TRUE(queue != nullptr);
diff --git a/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp b/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp
index 301458a..5d9d8b5 100644
--- a/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp
+++ b/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp
@@ -221,7 +221,7 @@
TEST_F(DvrBufferQueueTest, GetANativeWindow) {
int ret = api_.WriteBufferQueueCreate(
kBufferWidth, kBufferHeight, kBufferFormat, kLayerCount, kBufferUsage,
- /*capacity=*/0, sizeof(DvrNativeBufferMetadata), &write_queue_);
+ /*capacity=*/0, /*user_metadata_size=*/0, &write_queue_);
ASSERT_EQ(0, ret);
ASSERT_NE(nullptr, write_queue_);
diff --git a/libs/vr/libpdx/client.cpp b/libs/vr/libpdx/client.cpp
index a01c4d6..3c66a40 100644
--- a/libs/vr/libpdx/client.cpp
+++ b/libs/vr/libpdx/client.cpp
@@ -119,6 +119,10 @@
return channel_->GetChannelHandle();
}
+const LocalChannelHandle& Client::GetChannelHandle() const {
+ return channel_->GetChannelHandle();
+}
+
///////////////////////////// Transaction implementation //////////////////////
Transaction::Transaction(Client& client) : client_{client} {}
diff --git a/libs/vr/libpdx/private/pdx/client.h b/libs/vr/libpdx/private/pdx/client.h
index 656de7e..c35dabd 100644
--- a/libs/vr/libpdx/private/pdx/client.h
+++ b/libs/vr/libpdx/private/pdx/client.h
@@ -49,6 +49,7 @@
// Returns a reference to IPC channel handle.
LocalChannelHandle& GetChannelHandle();
+ const LocalChannelHandle& GetChannelHandle() const;
protected:
friend Transaction;
diff --git a/libs/vr/libpdx/private/pdx/client_channel.h b/libs/vr/libpdx/private/pdx/client_channel.h
index 8f5fdfe..f33a60e 100644
--- a/libs/vr/libpdx/private/pdx/client_channel.h
+++ b/libs/vr/libpdx/private/pdx/client_channel.h
@@ -33,6 +33,7 @@
virtual std::vector<EventSource> GetEventSources() const = 0;
virtual LocalChannelHandle& GetChannelHandle() = 0;
+ virtual const LocalChannelHandle& GetChannelHandle() const = 0;
virtual void* AllocateTransactionState() = 0;
virtual void FreeTransactionState(void* state) = 0;
diff --git a/libs/vr/libpdx/private/pdx/mock_client_channel.h b/libs/vr/libpdx/private/pdx/mock_client_channel.h
index ecc20b3..b1a1299 100644
--- a/libs/vr/libpdx/private/pdx/mock_client_channel.h
+++ b/libs/vr/libpdx/private/pdx/mock_client_channel.h
@@ -14,6 +14,7 @@
MOCK_CONST_METHOD0(GetEventSources, std::vector<EventSource>());
MOCK_METHOD1(GetEventMask, Status<int>(int));
MOCK_METHOD0(GetChannelHandle, LocalChannelHandle&());
+ MOCK_CONST_METHOD0(GetChannelHandle, const LocalChannelHandle&());
MOCK_METHOD0(AllocateTransactionState, void*());
MOCK_METHOD1(FreeTransactionState, void(void* state));
MOCK_METHOD3(SendImpulse,
diff --git a/libs/vr/libpdx_uds/private/uds/client_channel.h b/libs/vr/libpdx_uds/private/uds/client_channel.h
index b5524d8..3561c6f 100644
--- a/libs/vr/libpdx_uds/private/uds/client_channel.h
+++ b/libs/vr/libpdx_uds/private/uds/client_channel.h
@@ -41,6 +41,9 @@
}
LocalChannelHandle& GetChannelHandle() override { return channel_handle_; }
+ const LocalChannelHandle& GetChannelHandle() const override {
+ return channel_handle_;
+ }
void* AllocateTransactionState() override;
void FreeTransactionState(void* state) override;
diff --git a/opengl/include/EGL/eglext.h b/opengl/include/EGL/eglext.h
index 466768a..44f4dbc 100644
--- a/opengl/include/EGL/eglext.h
+++ b/opengl/include/EGL/eglext.h
@@ -33,12 +33,12 @@
** 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 <EGL/eglplatform.h>
-#define EGL_EGLEXT_VERSION 20170627
+#define EGL_EGLEXT_VERSION 20180228
/* Generated C header for:
* API: egl
@@ -495,24 +495,52 @@
#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 @@
#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 @@
#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 @@
#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 @@
#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 @@
#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 @@
#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 @@
#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 b5eb723..3ad39d9 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 @@
#define GL_APIENTRYP GL_APIENTRY*
#endif
-/* Generated on date 20170613 */
+/* Generated on date 20180316 */
/* Generated C header for:
* API: gles2
@@ -159,6 +159,16 @@
#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 @@
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 @@
#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 @@
#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 @@
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 @@
#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 @@
#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 @@
#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 @@
#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 @@
#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 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 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 @@
#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 @@
#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 @@
#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 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 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 @@
#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 @@
#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 @@
#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 @@
#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/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp
index b453d19..f3a9ad8 100644
--- a/opengl/libs/EGL/eglApi.cpp
+++ b/opengl/libs/EGL/eglApi.cpp
@@ -94,6 +94,7 @@
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 "
diff --git a/opengl/libs/EGL/getProcAddress.cpp b/opengl/libs/EGL/getProcAddress.cpp
index c05e840..0183621 100644
--- a/opengl/libs/EGL/getProcAddress.cpp
+++ b/opengl/libs/EGL/getProcAddress.cpp
@@ -54,7 +54,7 @@
: [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" \
);
diff --git a/opengl/libs/GLES2/gl2ext_api.in b/opengl/libs/GLES2/gl2ext_api.in
index fc368f2..4a0d4b9 100644
--- a/opengl/libs/GLES2/gl2ext_api.in
+++ b/opengl/libs/GLES2/gl2ext_api.in
@@ -34,6 +34,9 @@
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(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 @@
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(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 @@
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(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(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(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(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(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(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(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(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(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(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(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(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(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 @@
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 @@
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 fbf761a..42ac563 100644
--- a/opengl/libs/GLES_CM/glext_api.in
+++ b/opengl/libs/GLES_CM/glext_api.in
@@ -313,6 +313,15 @@
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 e3b7cf3..a306510 100644
--- a/opengl/libs/entries.in
+++ b/opengl/libs/entries.in
@@ -61,6 +61,8 @@
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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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(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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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 e052816..d09004f 100644
--- a/opengl/libs/enums.in
+++ b/opengl/libs/enums.in
@@ -1223,6 +1223,8 @@
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(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(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(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(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(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(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(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(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(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(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(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(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(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/libs/libGLESv2.map.txt b/opengl/libs/libGLESv2.map.txt
index 1b0042a..787c835 100644
--- a/opengl/libs/libGLESv2.map.txt
+++ b/opengl/libs/libGLESv2.map.txt
@@ -79,6 +79,7 @@
glFramebufferRenderbuffer;
glFramebufferTexture2D;
glFramebufferTexture2DMultisampleIMG; # introduced-mips=9 introduced-x86=9
+ glFramebufferTexture2DMultisampleEXT; # introduced=28
glFramebufferTexture3DOES;
glFrontFace;
glGenBuffers;
@@ -147,6 +148,7 @@
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 21f6cb6..a7b17f4 100644
--- a/opengl/libs/libGLESv3.map.txt
+++ b/opengl/libs/libGLESv3.map.txt
@@ -36,6 +36,8 @@
glBlendFunciEXT; # introduced=21
glBlitFramebuffer;
glBufferData;
+ glBufferStorageEXT; # introduced=28
+ glBufferStorageExternalEXT; # introduced=28
glBufferSubData;
glCheckFramebufferStatus;
glClear;
@@ -110,6 +112,7 @@
glDrawRangeElementsBaseVertex; # introduced=24
glEGLImageTargetRenderbufferStorageOES;
glEGLImageTargetTexture2DOES;
+ glEGLImageTargetTexStorageEXT; # introduced=28
glEnable;
glEnableVertexAttribArray;
glEnablei; # introduced=24
@@ -124,9 +127,12 @@
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 @@
glReleaseShaderCompiler;
glRenderbufferStorage;
glRenderbufferStorageMultisample;
+ glRenderbufferStorageMultisampleEXT; # introduced=28
glResumeTransformFeedback;
glSampleCoverage;
glSampleMaski; # introduced=21
diff --git a/opengl/tools/glgen2/glgen.py b/opengl/tools/glgen2/glgen.py
index a140091..fa981a8 100755
--- a/opengl/tools/glgen2/glgen.py
+++ b/opengl/tools/glgen2/glgen.py
@@ -117,6 +117,8 @@
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 @@
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 @@
# 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 c2d3494..e422e96
--- a/opengl/tools/glgen2/registry/egl.xml
+++ b/opengl/tools/glgen2/registry/egl.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<!--
- Copyright (c) 2013-2014 The Khronos Group Inc.
+ Copyright (c) 2013-2017 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
@@ -29,7 +29,7 @@
together with documentation, schema, and Python generator scripts used
to generate C header files for EGL, can be found in the Khronos Registry
at
- http://www.opengl.org/registry/
+ https://www.github.com/KhronosGroup/EGL-Registry
-->
<!-- SECTION: EGL type definitions. Does not include GL types. -->
@@ -38,6 +38,7 @@
<type name="khrplatform">#include <KHR/khrplatform.h></type>
<type name="eglplatform" requires="khrplatform">#include <EGL/eglplatform.h></type>
<type name="khronos_utime_nanoseconds_t" requires="khrplatform"/>
+ <type name="khronos_stime_nanoseconds_t" requires="khrplatform"/>
<type name="khronos_uint64_t" requires="khrplatform"/>
<type name="khronos_ssize_t" requires="khrplatform"/>
<type name="EGLNativeDisplayType" requires="eglplatform"/>
@@ -47,6 +48,7 @@
<type name="NativeDisplayType" requires="eglplatform"/>
<type name="NativePixmapType" requires="eglplatform"/>
<type name="NativeWindowType" requires="eglplatform"/>
+ <type>struct <name>AHardwareBuffer</name>;</type>
<!-- Dummy placeholders for non-EGL types -->
<type name="Bool"/>
<!-- These are actual EGL types. -->
@@ -76,6 +78,7 @@
<type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeNV</name>;</type>
<type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLuint64NV</name>;</type>
<type requires="khrplatform">typedef khronos_uint64_t <name>EGLuint64KHR</name>;</type>
+ <type requires="khrplatform">typedef khronos_stime_nanoseconds_t <name>EGLnsecsANDROID</name>;</type>
<type>typedef int <name>EGLNativeFileDescriptorKHR</name>;</type>
<type requires="khrplatform">typedef khronos_ssize_t <name>EGLsizeiANDROID</name>;</type>
<type requires="EGLsizeiANDROID">typedef void (*<name>EGLSetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);</type>
@@ -112,6 +115,7 @@
<!--
<enum value="0x0800" name="EGL_STREAM_BIT_NV" comment="Draft EGL_NV_stream_producer_eglsurface extension (bug 8064)"/>
-->
+ <enum value="0x1000" name="EGL_MUTABLE_RENDER_BUFFER_BIT_KHR"/>
</enums>
<enums namespace="EGLRenderableTypeMask" type="bitmask" comment="EGL_RENDERABLE_TYPE bits">
@@ -130,6 +134,12 @@
<enum value="0x0002" name="EGL_WRITE_SURFACE_BIT_KHR"/>
</enums>
+ <enums namespace="EGLNativeBufferUsageFlags" type="bitmask" comment="EGL_NATIVE_BUFFER_USAGE_ANDROID bits">
+ <enum value="0x00000001" name="EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID"/>
+ <enum value="0x00000002" name="EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID"/>
+ <enum value="0x00000004" name="EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID"/>
+ </enums>
+
<enums namespace="EGLSyncFlagsKHR" type="bitmask" comment="Fence/reusable sync wait bits">
<enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
<enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
@@ -139,6 +149,7 @@
<enums namespace="EGLDRMBufferUseMESAMask" type="bitmask" comment="EGL_DRM_BUFFER_USE_MESA bits">
<enum value="0x00000001" name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
<enum value="0x00000002" name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
+ <enum value="0x00000004" name="EGL_DRM_BUFFER_USE_CURSOR_MESA"/>
</enums>
<!-- Should be shared with GL, but aren't aren't since the
@@ -165,7 +176,11 @@
tokens are reused for different purposes in different
extensions and API versions). -->
- <enums namespace="EGL" start="0x0000" end="0x2FFF" vendor="ARB"/>
+ <enums namespace="EGL" start="0x0000" end="0x2FFF" vendor="KHR" comment="Reserved for enumerants shared with WGL, GLX, and GL">
+ <enum value="0" name="EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR"/>
+ <enum value="0x2097" name="EGL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
+ <enum value="0x2098" name="EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
+ </enums>
<enums namespace="EGL" group="Boolean" vendor="ARB">
<enum value="0" name="EGL_FALSE"/>
@@ -173,24 +188,24 @@
</enums>
<enums namespace="EGL" group="SpecialNumbers" vendor="ARB" comment="Tokens whose numeric value is intrinsically meaningful">
- <enum value="((EGLint)-1)" name="EGL_DONT_CARE"/>
- <enum value="((EGLint)-1)" name="EGL_UNKNOWN"/>
+ <enum value="EGL_CAST(EGLint,-1)" name="EGL_DONT_CARE"/>
+ <enum value="EGL_CAST(EGLint,-1)" name="EGL_UNKNOWN"/>
<enum value="-1" name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
<enum value="0" name="EGL_DEPTH_ENCODING_NONE_NV"/>
- <enum value="((EGLContext)0)" name="EGL_NO_CONTEXT"/>
- <enum value="((EGLDeviceEXT)(0))" name="EGL_NO_DEVICE_EXT"/>
- <enum value="((EGLDisplay)0)" name="EGL_NO_DISPLAY"/>
- <enum value="((EGLImage)0)" name="EGL_NO_IMAGE"/>
- <enum value="((EGLImageKHR)0)" name="EGL_NO_IMAGE_KHR"/>
- <enum value="((EGLNativeDisplayType)0)" name="EGL_DEFAULT_DISPLAY"/>
- <enum value="((EGLNativeFileDescriptorKHR)(-1))" name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
- <enum value="((EGLOutputLayerEXT)0)" name="EGL_NO_OUTPUT_LAYER_EXT"/>
- <enum value="((EGLOutputPortEXT)0)" name="EGL_NO_OUTPUT_PORT_EXT"/>
- <enum value="((EGLStreamKHR)0)" name="EGL_NO_STREAM_KHR"/>
- <enum value="((EGLSurface)0)" name="EGL_NO_SURFACE"/>
- <enum value="((EGLSync)0)" name="EGL_NO_SYNC"/>
- <enum value="((EGLSyncKHR)0)" name="EGL_NO_SYNC_KHR" alias="EGL_NO_SYNC"/>
- <enum value="((EGLSyncNV)0)" name="EGL_NO_SYNC_NV" alias="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLContext,0)" name="EGL_NO_CONTEXT"/>
+ <enum value="EGL_CAST(EGLDeviceEXT,0)" name="EGL_NO_DEVICE_EXT"/>
+ <enum value="EGL_CAST(EGLDisplay,0)" name="EGL_NO_DISPLAY"/>
+ <enum value="EGL_CAST(EGLImage,0)" name="EGL_NO_IMAGE"/>
+ <enum value="EGL_CAST(EGLImageKHR,0)" name="EGL_NO_IMAGE_KHR"/>
+ <enum value="EGL_CAST(EGLNativeDisplayType,0)" name="EGL_DEFAULT_DISPLAY"/>
+ <enum value="EGL_CAST(EGLNativeFileDescriptorKHR,-1)" name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
+ <enum value="EGL_CAST(EGLOutputLayerEXT,0)" name="EGL_NO_OUTPUT_LAYER_EXT"/>
+ <enum value="EGL_CAST(EGLOutputPortEXT,0)" name="EGL_NO_OUTPUT_PORT_EXT"/>
+ <enum value="EGL_CAST(EGLStreamKHR,0)" name="EGL_NO_STREAM_KHR"/>
+ <enum value="EGL_CAST(EGLSurface,0)" name="EGL_NO_SURFACE"/>
+ <enum value="EGL_CAST(EGLSync,0)" name="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLSyncKHR,0)" name="EGL_NO_SYNC_KHR" alias="EGL_NO_SYNC"/>
+ <enum value="EGL_CAST(EGLSyncNV,0)" name="EGL_NO_SYNC_NV" alias="EGL_NO_SYNC"/>
<enum value="EGL_CAST(EGLConfig,0)" name="EGL_NO_CONFIG_KHR"/>
<enum value="10000" name="EGL_DISPLAY_SCALING"/>
<enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER" type="ull"/>
@@ -357,7 +372,7 @@
<enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET"/>
<enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET_KHR" alias="EGL_GL_TEXTURE_ZOFFSET"/>
<enum value="0x30BE" name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
- <enum value="0x30BF" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT" alias="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
+ <enum value="0x30BF" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
</enums>
<enums namespace="EGL" start="0x30C0-0x30CF" vendor="KHR">
@@ -442,7 +457,10 @@
<enum value="0x3101" name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
<enum value="0x3102" name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
<enum value="0x3103" name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
- <unused start="0x3104" end="0x310F"/>
+ <unused start="0x3104"/>
+ <enum value="0x3105" name="EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG"/>
+ <enum value="0x3106" name="EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG"/>
+ <unused start="0x3107" end="0x310F"/>
</enums>
<enums namespace="EGL" start="0x3110" end="0x311F" vendor="ATX" comment="Reserved for Tim Renouf, Antix (Khronos bug 4949)">
@@ -475,12 +493,15 @@
<enum value="0x3140" name="EGL_NATIVE_BUFFER_ANDROID"/>
<enum value="0x3141" name="EGL_PLATFORM_ANDROID_KHR"/>
<enum value="0x3142" name="EGL_RECORDABLE_ANDROID"/>
- <unused start="0x3143"/>
+ <enum value="0x3143" name="EGL_NATIVE_BUFFER_USAGE_ANDROID"/>
<enum value="0x3144" name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
<enum value="0x3145" name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
<enum value="0x3146" name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
<enum value="0x3147" name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
- <unused start="0x3148" end="0x314F"/>
+ <unused start="0x3148" end="0x314B"/>
+ <enum value="0x314C" name="EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID"/>
+ <enum value="0x314D" name="EGL_GL_COLORSPACE_DEFAULT_EXT"/>
+ <unused start="0x314E" end="0x314F"/>
</enums>
<enums namespace="EGL" start="0x3150" end="0x315F" vendor="NOK" comment="Reserved for Robert Palmer (Khronos bug 5368)">
@@ -533,7 +554,9 @@
<enum value="0x31D7" name="EGL_PLATFORM_GBM_MESA" alias="EGL_PLATFORM_GBM_KHR"/>
<enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_KHR"/>
<enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_EXT" alias="EGL_PLATFORM_WAYLAND_KHR"/>
- <unused start="0x31D9" end="0x31DF"/>
+ <unused start="0x31D9" end="0x31DC"/>
+ <enum value="0x31DD" name="EGL_PLATFORM_SURFACELESS_MESA"/>
+ <unused start="0x31DE" end="0x31DF"/>
</enums>
<enums namespace="EGL" start="0x31E0" end="0x31EF" vendor="HI" comment="Reserved for Mark Callow (Khronos bug 6799)">
@@ -606,7 +629,23 @@
<enum value="0x323B" name="EGL_CUDA_EVENT_HANDLE_NV"/>
<enum value="0x323C" name="EGL_SYNC_CUDA_EVENT_NV"/>
<enum value="0x323D" name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
- <unused start="0x323E" end="0x324F"/>
+ <unused start="0x323E"/>
+ <enum value="0x323F" name="EGL_STREAM_CROSS_PARTITION_NV"/>
+ <enum value="0x3240" name="EGL_STREAM_STATE_INITIALIZING_NV"/>
+ <enum value="0x3241" name="EGL_STREAM_TYPE_NV"/>
+ <enum value="0x3242" name="EGL_STREAM_PROTOCOL_NV"/>
+ <enum value="0x3243" name="EGL_STREAM_ENDPOINT_NV"/>
+ <enum value="0x3244" name="EGL_STREAM_LOCAL_NV"/>
+ <enum value="0x3245" name="EGL_STREAM_CROSS_PROCESS_NV"/>
+ <enum value="0x3246" name="EGL_STREAM_PROTOCOL_FD_NV"/>
+ <enum value="0x3247" name="EGL_STREAM_PRODUCER_NV"/>
+ <enum value="0x3248" name="EGL_STREAM_CONSUMER_NV"/>
+ <unused start="0x3239" end="0x324A"/>
+ <enum value="0x324B" name="EGL_STREAM_PROTOCOL_SOCKET_NV"/>
+ <enum value="0x324C" name="EGL_SOCKET_HANDLE_NV"/>
+ <enum value="0x324D" name="EGL_SOCKET_TYPE_NV"/>
+ <enum value="0x324E" name="EGL_SOCKET_TYPE_UNIX_NV"/>
+ <enum value="0x324F" name="EGL_SOCKET_TYPE_INET_NV"/>
<enum value="0x3250" name="EGL_MAX_STREAM_METADATA_BLOCKS_NV"/>
<enum value="0x3251" name="EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV"/>
<enum value="0x3252" name="EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV"/>
@@ -651,7 +690,9 @@
<enum value="0x3284" name="EGL_YUV_CHROMA_SITING_0_EXT"/>
<enum value="0x3285" name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
<enum value="0x3286" name="EGL_DISCARD_SAMPLES_ARM"/>
- <unused start="0x3287" end="0x328F"/>
+ <unused start="0x3287" end="0x3289"/>
+ <enum value="0x328A" name="EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM"/>
+ <unused start="0x328B" end="0x328F"/>
</enums>
<enums namespace="EGL" start="0x3290" end="0x329F" vendor="MESA" comment="Reserved for John Kåre Alsaker (Public bug 757)">
@@ -716,11 +757,18 @@
<enums namespace="EGL" start="0x3320" end="0x339F" vendor="NV" comment="Reserved for James Jones (Bug 13209)">
<unused start="0x3320" end="0x3327"/>
<enum value="0x3328" name="EGL_PENDING_METADATA_NV"/>
- <unused start="0x3329" end="0x332B"/>
+ <enum value="0x3329" name="EGL_PENDING_FRAME_NV"/>
+ <enum value="0x332A" name="EGL_STREAM_TIME_PENDING_NV"/>
+ <unused start="0x332B"/>
<enum value="0x332C" name="EGL_YUV_PLANE0_TEXTURE_UNIT_NV"/>
<enum value="0x332D" name="EGL_YUV_PLANE1_TEXTURE_UNIT_NV"/>
<enum value="0x332E" name="EGL_YUV_PLANE2_TEXTURE_UNIT_NV"/>
- <unused start="0x332F" end="0x339F"/>
+ <unused start="0x332F" end="0x3333"/>
+ <enum value="0x3334" name="EGL_SUPPORT_RESET_NV"/>
+ <enum value="0x3335" name="EGL_SUPPORT_REUSE_NV"/>
+ <enum value="0x3336" name="EGL_STREAM_FIFO_SYNCHRONOUS_NV"/>
+ <enum value="0x3337" name="EGL_PRODUCER_MAX_FRAME_HINT_NV"/>
+ <enum value="0x3338" name="EGL_CONSUMER_MAX_FRAME_HINT_NV"/>
<enum value="0x3339" name="EGL_COLOR_COMPONENT_TYPE_EXT"/>
<enum value="0x333A" name="EGL_COLOR_COMPONENT_TYPE_FIXED_EXT"/>
<enum value="0x333B" name="EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT"/>
@@ -738,9 +786,19 @@
<enum value="0x3349" name="EGL_SMPTE2086_MAX_LUMINANCE_EXT"/>
<enum value="0x334A" name="EGL_SMPTE2086_MIN_LUMINANCE_EXT"/>
<enum value="50000" name="EGL_METADATA_SCALING_EXT"/>
- <unused start="0x334B" end="0x334F"/>
+ <unused start="0x334B"/>
+ <enum value="0x334C" name="EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV"/>
+ <enum value="0x334D" name="EGL_STREAM_CROSS_OBJECT_NV"/>
+ <enum value="0x334E" name="EGL_STREAM_CROSS_DISPLAY_NV"/>
+ <enum value="0x334F" name="EGL_STREAM_CROSS_SYSTEM_NV"/>
<enum value="0x3350" name="EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT"/>
- <unused start="0x3351" end="0x3361"/>
+ <enum value="0x3351" name="EGL_GL_COLORSPACE_SCRGB_EXT"/>
+ <enum value="0x3352" name="EGL_TRACK_REFERENCES_KHR"/>
+ <unused start="0x3353" end="0x3356"/>
+ <enum value="0x3357" name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
+ <unused start="0x3358" end="0x335F"/>
+ <enum value="0x3360" name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
+ <enum value="0x3361" name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
<enum value="0x3362" name="EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT"/>
<enum value="0x3363" name="EGL_GL_COLORSPACE_DISPLAY_P3_EXT"/>
<unused start="0x3364" end="0x339F"/>
@@ -777,6 +835,59 @@
<unused start="0x33E0" end="0x342F"/>
</enums>
+ <enums namespace="EGL" start="0x3430" end="0x343F" vendor="ANDROID" comment="Reserved for Pablo Ceballos (Bug 15874)">
+ <enum value="EGL_CAST(EGLnsecsANDROID,-2)" name="EGL_TIMESTAMP_PENDING_ANDROID"/>
+ <enum value="EGL_CAST(EGLnsecsANDROID,-1)" name="EGL_TIMESTAMP_INVALID_ANDROID"/>
+ <enum value="0x3430" name="EGL_TIMESTAMPS_ANDROID"/>
+ <enum value="0x3431" name="EGL_COMPOSITE_DEADLINE_ANDROID"/>
+ <enum value="0x3432" name="EGL_COMPOSITE_INTERVAL_ANDROID"/>
+ <enum value="0x3433" name="EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID"/>
+ <enum value="0x3434" name="EGL_REQUESTED_PRESENT_TIME_ANDROID"/>
+ <enum value="0x3435" name="EGL_RENDERING_COMPLETE_TIME_ANDROID"/>
+ <enum value="0x3436" name="EGL_COMPOSITION_LATCH_TIME_ANDROID"/>
+ <enum value="0x3437" name="EGL_FIRST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum value="0x3438" name="EGL_LAST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum value="0x3439" name="EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID"/>
+ <enum value="0x343A" name="EGL_DISPLAY_PRESENT_TIME_ANDROID"/>
+ <enum value="0x343B" name="EGL_DEQUEUE_READY_TIME_ANDROID"/>
+ <enum value="0x343C" name="EGL_READS_DONE_TIME_ANDROID"/>
+ <unused start="0x343D" end="0x343F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3440" end="0x344F" vendor="ANDROID" comment="Reserved for Kristian Kristensen (Bug 16033)">
+ <enum value="0x3440" name="EGL_DMA_BUF_PLANE3_FD_EXT"/>
+ <enum value="0x3441" name="EGL_DMA_BUF_PLANE3_OFFSET_EXT"/>
+ <enum value="0x3442" name="EGL_DMA_BUF_PLANE3_PITCH_EXT"/>
+ <enum value="0x3443" name="EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT"/>
+ <enum value="0x3444" name="EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT"/>
+ <enum value="0x3445" name="EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT"/>
+ <enum value="0x3446" name="EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT"/>
+ <enum value="0x3447" name="EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT"/>
+ <enum value="0x3448" name="EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT"/>
+ <enum value="0x3449" name="EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT"/>
+ <enum value="0x344A" name="EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT"/>
+ <unused start="0x344B" end="0x344F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3450" end="0x345F" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 16106)">
+ <unused start="0x3450" end="0x345F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3460" end="0x346F" vendor="COREAVI" comment="Reserved for Daniel Herring (Bug 16162)">
+ <enum value="0x3460" name="EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT"/>
+ <enum value="0x3461" name="EGL_EXTERNAL_REF_ID_EXT"/>
+ <enum value="0x3462" name="EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT"/>
+ <enum value="0x3463" name="EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT"/>
+ <enum value="0x3464" name="EGL_FRONT_BUFFER_EXT"/>
+ <unused start="0x3465" end="0x346F"/>
+ </enums>
+
+ <enums namespace="EGL" start="0x3470" end="0x347F" vendor="EXT" comment="Reserved for Daniel Stone (PR 14)">
+ <enum value="0x3470" name="EGL_IMPORT_SYNC_TYPE_EXT"/>
+ <enum value="0x3471" name="EGL_IMPORT_IMPLICIT_SYNC_EXT"/>
+ <enum value="0x3472" name="EGL_IMPORT_EXPLICIT_SYNC_EXT"/>
+ </enums>
+
<!-- Please remember that new enumerant allocations must be obtained by
request to the Khronos API registrar (see comments at the top of this
file) File requests in the Khronos Bugzilla, EGL project, Registry
@@ -786,8 +897,8 @@
<!-- Reservable for future use. To generate a new range, allocate multiples
of 16 starting at the lowest available point in this block. -->
- <enums namespace="EGL" start="0x3470" end="0x3FFF" vendor="KHR">
- <unused start="0x3470" end="0x3FFF" comment="Reserved for future use"/>
+ <enums namespace="EGL" start="0x3480" end="0x3FFF" vendor="KHR" comment="Reserved for future use">
+ <unused start="0x3480" end="0x3FFF"/>
</enums>
<enums namespace="EGL" start="0x8F70" end="0x8F7F" vendor="HI" comment="For Mark Callow, Khronos bug 4055. Shared with GL.">
@@ -880,6 +991,10 @@
<param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
</command>
<command>
+ <proto><ptype>EGLClientBuffer</ptype> <name>eglCreateNativeClientBufferANDROID</name></proto>
+ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
<proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferFromClientBuffer</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLenum</ptype> <name>buftype</name></param>
@@ -945,6 +1060,11 @@
<param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
</command>
<command>
+ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
<proto><ptype>EGLSurface</ptype> <name>eglCreateStreamProducerSurfaceKHR</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLConfig</ptype> <name>config</name></param>
@@ -1095,6 +1215,10 @@
<proto><ptype>EGLint</ptype> <name>eglGetError</name></proto>
</command>
<command>
+ <proto><ptype>EGLClientBuffer</ptype> <name>eglGetNativeClientBufferANDROID</name></proto>
+ <param>const struct <ptype>AHardwareBuffer</ptype> *<name>buffer</name></param>
+ </command>
+ <command>
<proto><ptype>EGLBoolean</ptype> <name>eglGetOutputLayersEXT</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
@@ -1207,6 +1331,47 @@
<param><ptype>EGLint</ptype> <name>height</name></param>
</command>
<command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglPresentationTimeANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> <name>time</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetCompositorTimingSupportedANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetCompositorTimingANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>numTimestamps</name></param>
+ <param> const <ptype>EGLint</ptype> *<name>names</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> *<name>values</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetNextFrameIdANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>frameId</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetFrameTimestampSupportedANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLint</ptype> <name>timestamp</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglGetFrameTimestampsANDROID</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
+ <param><ptype>EGLuint64KHR</ptype> <name>frameId</name></param>
+ <param><ptype>EGLint</ptype> <name>numTimestamps</name></param>
+ <param> const <ptype>EGLint</ptype> *<name>timestamps</name></param>
+ <param><ptype>EGLnsecsANDROID</ptype> *<name>values</name></param>
+ </command>
+ <command>
<proto><ptype>EGLenum</ptype> <name>eglQueryAPI</name></proto>
</command>
<command>
@@ -1243,13 +1408,36 @@
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLint</ptype> <name>attribute</name></param>
<param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ <alias name="eglQueryDisplayAttribKHR"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>name</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLint</ptype> <name>attribute</name></param>
<param><ptype>EGLAttrib</ptype> *<name>value</name></param>
- <alias name="eglQueryDisplayAttribEXT"/>
+ <alias name="eglQueryDisplayAttribKHR"/>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDmaBufFormatsEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>max_formats</name></param>
+ <param><ptype>EGLint</ptype> *<name>formats</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_formats</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDmaBufModifiersEXT</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLint</ptype> <name>format</name></param>
+ <param><ptype>EGLint</ptype> <name>max_modifiers</name></param>
+ <param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
+ <param><ptype>EGLBoolean</ptype> *<name>external_only</name></param>
+ <param><ptype>EGLint</ptype> *<name>num_modifiers</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeDisplayNV</name></proto>
@@ -1302,6 +1490,13 @@
<param><ptype>EGLint</ptype> *<name>value</name></param>
</command>
<command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
+ </command>
+ <command>
<proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamMetadataNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
@@ -1361,6 +1556,11 @@
<proto><ptype>EGLBoolean</ptype> <name>eglReleaseThread</name></proto>
</command>
<command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglResetStreamNV</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ </command>
+ <command>
<proto>void <name>eglSetBlobCacheFuncsANDROID</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLSetBlobFuncANDROID</ptype> <name>set</name></param>
@@ -1374,6 +1574,13 @@
<param><ptype>EGLint</ptype> <name>n_rects</name></param>
</command>
<command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglSetStreamAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
+ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
+ </command>
+ <command>
<proto><ptype>EGLBoolean</ptype> <name>eglSetStreamMetadataNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
@@ -1406,6 +1613,12 @@
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
</command>
<command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerAcquireAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
<proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalKHR</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
@@ -1414,7 +1627,7 @@
<proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalAttribsNV</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
- <param><ptype>EGLAttrib</ptype> <name>*attrib_list</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerOutputEXT</name></proto>
@@ -1428,6 +1641,12 @@
<param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
</command>
<command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerReleaseAttribKHR</name></proto>
+ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
+ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
+ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
+ </command>
+ <command>
<proto><ptype>EGLBoolean</ptype> <name>eglSurfaceAttrib</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLSurface</ptype> <name>surface</name></param>
@@ -1503,6 +1722,44 @@
<param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
<param><ptype>EGLint</ptype> <name>flags</name></param>
</command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetContextListEXT</name></proto>
+ <param>const <ptype>EGLint</ptype> *<name>external_ref_ids</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetContextAttributesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_ref_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>context_attributes</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetWindowListEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_ref_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>external_win_ids</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetWindowAttributesEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param>const <ptype>EGLint</ptype> *<name>window_attributes</name></param>
+ <param><ptype>EGLint</ptype> <name>num_entries</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorBindTexWindowEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSetSizeEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param><ptype>EGLint</ptype> <name>width</name></param>
+ <param><ptype>EGLint</ptype> <name>height</name></param>
+ </command>
+ <command>
+ <proto><ptype>EGLBoolean</ptype> <name>eglCompositorSwapPolicyEXT</name></proto>
+ <param><ptype>EGLint</ptype> <name>external_win_id</name></param>
+ <param><ptype>EGLint</ptype> <name>policy</name></param>
+ </command>
</commands>
<!-- SECTION: EGL API interface definitions. -->
@@ -1775,11 +2032,30 @@
<command name="eglSetBlobCacheFuncsANDROID"/>
</require>
</extension>
+ <extension name="EGL_ANDROID_create_native_client_buffer" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID"/>
+ <enum name="EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID"/>
+ <command name="eglCreateNativeClientBufferANDROID"/>
+ </require>
+ </extension>
<extension name="EGL_ANDROID_framebuffer_target" supported="egl">
<require>
<enum name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
</require>
</extension>
+ <extension name="EGL_ANDROID_get_native_client_buffer" supported="egl">
+ <require>
+ <command name="eglGetNativeClientBufferANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_front_buffer_auto_refresh" supported="egl">
+ <require>
+ <enum name="EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID"/>
+ </require>
+ </extension>
<extension name="EGL_ANDROID_image_native_buffer" supported="egl">
<require>
<enum name="EGL_NATIVE_BUFFER_ANDROID"/>
@@ -1794,6 +2070,35 @@
<command name="eglDupNativeFenceFDANDROID"/>
</require>
</extension>
+ <extension name="EGL_ANDROID_presentation_time" supported="egl">
+ <require>
+ <command name="eglPresentationTimeANDROID"/>
+ </require>
+ </extension>
+ <extension name="EGL_ANDROID_get_frame_timestamps" supported="egl">
+ <require>
+ <enum name="EGL_TIMESTAMP_PENDING_ANDROID"/>
+ <enum name="EGL_TIMESTAMP_INVALID_ANDROID"/>
+ <enum name="EGL_TIMESTAMPS_ANDROID"/>
+ <enum name="EGL_COMPOSITE_DEADLINE_ANDROID"/>
+ <enum name="EGL_COMPOSITE_INTERVAL_ANDROID"/>
+ <enum name="EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID"/>
+ <enum name="EGL_REQUESTED_PRESENT_TIME_ANDROID"/>
+ <enum name="EGL_RENDERING_COMPLETE_TIME_ANDROID"/>
+ <enum name="EGL_COMPOSITION_LATCH_TIME_ANDROID"/>
+ <enum name="EGL_FIRST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum name="EGL_LAST_COMPOSITION_START_TIME_ANDROID"/>
+ <enum name="EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID"/>
+ <enum name="EGL_DISPLAY_PRESENT_TIME_ANDROID"/>
+ <enum name="EGL_DEQUEUE_READY_TIME_ANDROID"/>
+ <enum name="EGL_READS_DONE_TIME_ANDROID"/>
+ <command name="eglGetCompositorTimingSupportedANDROID"/>
+ <command name="eglGetCompositorTimingANDROID"/>
+ <command name="eglGetNextFrameIdANDROID"/>
+ <command name="eglGetFrameTimestampSupportedANDROID"/>
+ <command name="eglGetFrameTimestampsANDROID"/>
+ </require>
+ </extension>
<extension name="EGL_ANDROID_recordable" supported="egl">
<require>
<enum name="EGL_RECORDABLE_ANDROID"/>
@@ -1825,6 +2130,11 @@
<enum name="EGL_FIXED_SIZE_ANGLE"/>
</require>
</extension>
+ <extension name="EGL_ARM_implicit_external_sync" supported="egl">
+ <require>
+ <enum name="EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM"/>
+ </require>
+ </extension>
<extension name="EGL_ARM_pixmap_multisample_discard" supported="egl">
<require>
<enum name="EGL_DISCARD_SAMPLES_ARM"/>
@@ -1890,6 +2200,11 @@
<enum name="EGL_GL_COLORSPACE_BT2020_PQ_EXT"/>
</require>
</extension>
+ <extension name="EGL_EXT_gl_colorspace_scrgb" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE_SCRGB_EXT"/>
+ </require>
+ </extension>
<extension name="EGL_EXT_gl_colorspace_scrgb_linear" supported="egl">
<require>
<enum name="EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT"/>
@@ -1931,6 +2246,29 @@
<enum name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
</require>
</extension>
+ <extension name="EGL_EXT_image_dma_buf_import_modifiers" supported="egl">
+ <require>
+ <enum name="EGL_DMA_BUF_PLANE3_FD_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_OFFSET_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_PITCH_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT"/>
+ <enum name="EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT"/>
+ <command name="eglQueryDmaBufFormatsEXT"/>
+ <command name="eglQueryDmaBufModifiersEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_gl_colorspace" supported="egl">
+ <require>
+ <enum name="EGL_GL_COLORSPACE"/>
+ <enum name="EGL_GL_COLORSPACE_DEFAULT_EXT"/>
+ </require>
+ </extension>
<extension name="EGL_EXT_multiview_window" supported="egl">
<require>
<enum name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
@@ -1968,6 +2306,13 @@
<enum name="EGL_OPENWF_PORT_ID_EXT"/>
</require>
</extension>
+ <extension name="EGL_EXT_pixel_format_float" supported="egl">
+ <require>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_EXT"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_FIXED_EXT"/>
+ <enum name="EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT"/>
+ </require>
+ </extension>
<extension name="EGL_EXT_platform_base" supported="egl">
<require>
<command name="eglGetPlatformDisplayEXT"/>
@@ -1991,6 +2336,11 @@
<enum name="EGL_PLATFORM_X11_SCREEN_EXT"/>
</require>
</extension>
+ <extension name="EGL_EXT_protected_content" supported="egl">
+ <require>
+ <enum name="EGL_PROTECTED_CONTENT_EXT"/>
+ </require>
+ </extension>
<extension name="EGL_EXT_protected_surface" supported="egl">
<require>
<enum name="EGL_PROTECTED_CONTENT_EXT"/>
@@ -2016,7 +2366,6 @@
<enum name="EGL_METADATA_SCALING_EXT"/>
</require>
</extension>
-
<extension name="EGL_EXT_swap_buffers_with_damage" supported="egl">
<require>
<command name="eglSwapBuffersWithDamageEXT"/>
@@ -2073,6 +2422,12 @@
<enum name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
</require>
</extension>
+ <extension name="EGL_IMG_image_plane_attribs" supported="egl">
+ <require>
+ <enum name="EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG"/>
+ <enum name="EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG"/>
+ </require>
+ </extension>
<extension name="EGL_KHR_cl_event" supported="egl">
<require>
<enum name="EGL_CL_EVENT_HANDLE_KHR"/>
@@ -2096,6 +2451,13 @@
</require>
</extension>
<extension name="EGL_KHR_client_get_all_proc_addresses" supported="egl" comment="Alias of EGL_KHR_get_all_proc_addresses"/>
+ <extension name="EGL_KHR_context_flush_control" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR"/>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
+ <enum name="EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
+ </require>
+ </extension>
<extension name="EGL_KHR_create_context" supported="egl">
<require>
<enum name="EGL_CONTEXT_MAJOR_VERSION_KHR"/>
@@ -2141,6 +2503,12 @@
<command name="eglLabelObjectKHR"/>
</require>
</extension>
+ <extension name="EGL_KHR_display_reference" supported="egl">
+ <require>
+ <enum name="EGL_TRACK_REFERENCES_KHR"/>
+ <command name="eglQueryDisplayAttribKHR"/>
+ </require>
+ </extension>
<extension name="EGL_KHR_fence_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
<require>
<!-- Most interfaces also defined by EGL_KHR_reusable sync -->
@@ -2270,6 +2638,16 @@
<command name="eglQuerySurface64KHR"/>
</require>
</extension>
+ <extension name="EGL_KHR_mutable_render_buffer" supported="egl">
+ <require>
+ <enum name="EGL_MUTABLE_RENDER_BUFFER_BIT_KHR"/>
+ </require>
+ </extension>
+ <extension name="EGL_KHR_no_config_context" supported="egl">
+ <require>
+ <enum name="EGL_NO_CONFIG_KHR"/>
+ </require>
+ </extension>
<extension name="EGL_KHR_partial_update" supported="egl">
<require>
<enum name="EGL_BUFFER_AGE_KHR"/>
@@ -2338,6 +2716,19 @@
<command name="eglQueryStreamu64KHR"/>
</require>
</extension>
+ <extension name="EGL_KHR_stream_attrib" protect="KHRONOS_SUPPORT_INT64" supported="egl">
+ <require>
+ <enum name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
+ <enum name="EGL_STREAM_STATE_KHR"/>
+ <enum name="EGL_STREAM_STATE_CREATED_KHR"/>
+ <enum name="EGL_STREAM_STATE_CONNECTING_KHR"/>
+ <command name="eglCreateStreamAttribKHR"/>
+ <command name="eglSetStreamAttribKHR"/>
+ <command name="eglQueryStreamAttribKHR"/>
+ <command name="eglStreamConsumerAcquireAttribKHR"/>
+ <command name="eglStreamConsumerReleaseAttribKHR"/>
+ </require>
+ </extension>
<extension name="EGL_KHR_stream_consumer_gltexture" protect="EGL_KHR_stream" supported="egl">
<require>
<enum name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
@@ -2394,6 +2785,7 @@
<enum name="EGL_DRM_BUFFER_STRIDE_MESA"/>
<enum name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
<enum name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
+ <enum name="EGL_DRM_BUFFER_USE_CURSOR_MESA"/>
<command name="eglCreateDRMImageMESA"/>
<command name="eglExportDRMImageMESA"/>
</require>
@@ -2410,6 +2802,11 @@
<enum name="EGL_PLATFORM_GBM_MESA"/>
</require>
</extension>
+ <extension name="EGL_MESA_platform_surfaceless" supported="egl">
+ <require>
+ <enum name="EGL_PLATFORM_SURFACELESS_MESA"/>
+ </require>
+ </extension>
<extension name="EGL_NOK_swap_region" supported="egl">
<require>
<command name="eglSwapBuffersRegionNOK"/>
@@ -2436,6 +2833,11 @@
<enum name="EGL_COVERAGE_SAMPLES_NV"/>
</require>
</extension>
+ <extension name="EGL_NV_context_priority_realtime" supported="egl">
+ <require>
+ <enum name="EGL_CONTEXT_PRIORITY_REALTIME_NV"/>
+ </require>
+ </extension>
<extension name="EGL_NV_coverage_sample_resolve" supported="egl">
<require>
<enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
@@ -2479,6 +2881,11 @@
<command name="eglPostSubBufferNV"/>
</require>
</extension>
+ <extension name="EGL_NV_robustness_video_memory_purge" supported="egl">
+ <require>
+ <enum name="EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV"/>
+ </require>
+ </extension>
<extension name="EGL_NV_stream_consumer_gltexture_yuv" supported="egl">
<require>
<enum name="EGL_YUV_PLANE0_TEXTURE_UNIT_NV"/>
@@ -2489,6 +2896,48 @@
<command name="eglStreamConsumerGLTextureExternalAttribsNV"/>
</require>
</extension>
+ <extension name="EGL_NV_stream_cross_object" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_OBJECT_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_display" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_DISPLAY_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_partition" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_PARTITION_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_process" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_PROCESS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_cross_system" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_CROSS_SYSTEM_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_fifo_next" supported="egl">
+ <require>
+ <enum name="EGL_PENDING_FRAME_NV"/>
+ <enum name="EGL_STREAM_TIME_PENDING_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_fifo_synchronous" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_FIFO_SYNCHRONOUS_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_frame_limits" supported="egl">
+ <require>
+ <enum name="EGL_PRODUCER_MAX_FRAME_HINT_NV"/>
+ <enum name="EGL_CONSUMER_MAX_FRAME_HINT_NV"/>
+ </require>
+ </extension>
<extension name="EGL_NV_stream_metadata" supported="egl">
<require>
<enum name="EGL_MAX_STREAM_METADATA_BLOCKS_NV"/>
@@ -2510,6 +2959,44 @@
<command name="eglQueryStreamMetadataNV"/>
</require>
</extension>
+ <extension name="EGL_NV_stream_reset" supported="egl">
+ <require>
+ <enum name="EGL_SUPPORT_RESET_NV"/>
+ <enum name="EGL_SUPPORT_REUSE_NV"/>
+ <command name="eglResetStreamNV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_remote" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_STATE_INITIALIZING_NV"/>
+ <enum name="EGL_STREAM_TYPE_NV"/>
+ <enum name="EGL_STREAM_PROTOCOL_NV"/>
+ <enum name="EGL_STREAM_ENDPOINT_NV"/>
+ <enum name="EGL_STREAM_LOCAL_NV"/>
+ <enum name="EGL_STREAM_PRODUCER_NV"/>
+ <enum name="EGL_STREAM_CONSUMER_NV"/>
+ </require>
+ <require comment="Supported only if EGL_KHR_stream_cross_process_fd is supported">
+ <enum name="EGL_STREAM_PROTOCOL_FD_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket" supported="egl">
+ <require>
+ <enum name="EGL_STREAM_PROTOCOL_SOCKET_NV"/>
+ <enum name="EGL_SOCKET_HANDLE_NV"/>
+ <enum name="EGL_SOCKET_TYPE_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket_inet" supported="egl">
+ <require>
+ <enum name="EGL_SOCKET_TYPE_INET_NV"/>
+ </require>
+ </extension>
+ <extension name="EGL_NV_stream_socket_unix" supported="egl">
+ <require>
+ <enum name="EGL_SOCKET_TYPE_UNIX_NV"/>
+ </require>
+ </extension>
<extension name="EGL_NV_stream_sync" supported="egl">
<require>
<enum name="EGL_SYNC_TYPE_KHR"/>
@@ -2556,5 +3043,39 @@
<enum name="EGL_NATIVE_SURFACE_TIZEN"/>
</require>
</extension>
+ <extension name="EGL_EXT_compositor" supported="egl">
+ <require>
+ <enum name="EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT"/>
+ <enum name="EGL_EXTERNAL_REF_ID_EXT"/>
+ <enum name="EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT"/>
+ <enum name="EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT"/>
+
+ <command name="eglCompositorSetContextListEXT"/>
+ <command name="eglCompositorSetContextAttributesEXT"/>
+ <command name="eglCompositorSetWindowListEXT"/>
+ <command name="eglCompositorSetWindowAttributesEXT"/>
+ <command name="eglCompositorBindTexWindowEXT"/>
+ <command name="eglCompositorSetSizeEXT"/>
+ <command name="eglCompositorSwapPolicyEXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_surface_CTA861_3_metadata" supported="egl">
+ <require>
+ <enum name="EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT"/>
+ <enum name="EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_image_implicit_sync_control" supported="egl">
+ <require>
+ <enum name="EGL_IMPORT_SYNC_TYPE_EXT"/>
+ <enum name="EGL_IMPORT_IMPLICIT_SYNC_EXT"/>
+ <enum name="EGL_IMPORT_EXPLICIT_SYNC_EXT"/>
+ </require>
+ </extension>
+ <extension name="EGL_EXT_bind_to_front" supported="egl">
+ <require>
+ <enum name="EGL_FRONT_BUFFER_EXT"/>
+ </require>
+ </extension>
</extensions>
</registry>
diff --git a/opengl/tools/glgen2/registry/gl.xml b/opengl/tools/glgen2/registry/gl.xml
old mode 100755
new mode 100644
index be231c7..9b27342
--- a/opengl/tools/glgen2/registry/gl.xml
+++ b/opengl/tools/glgen2/registry/gl.xml
@@ -1,36 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<comment>
-Copyright (c) 2013-2015 The Khronos Group Inc.
+Copyright (c) 2013-2017 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:
+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
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Materials.
+ http://www.apache.org/licenses/LICENSE-2.0
-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.
+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
</comment>
<!-- SECTION: GL type definitions. -->
@@ -92,6 +83,7 @@
<type>typedef float <name>GLclampf</name>;</type>
<type>typedef double <name>GLdouble</name>;</type>
<type>typedef double <name>GLclampd</name>;</type>
+ <type>typedef void *<name>GLeglClientBufferEXT</name>;</type>
<type>typedef void *<name>GLeglImageOES</name>;</type>
<type>typedef char <name>GLchar</name>;</type>
<type>typedef char <name>GLcharARB</name>;</type>
@@ -142,10 +134,16 @@
<type api="gles2" requires="khrplatform">typedef khronos_intptr_t <name>GLintptr</name>;</type>
<type api="gles2" requires="khrplatform">typedef khronos_ssize_t <name>GLsizeiptr</name>;</type>
<!-- GLES 2 types (none currently) -->
+ <!-- GLSC 2 types -->
+ <type api="glsc2" requires="khrplatform">typedef khronos_uint8_t <name>GLubyte</name>;</type>
+ <type api="glsc2" requires="khrplatform">typedef khronos_float_t <name>GLfloat</name>;</type>
+ <type api="glsc2" requires="khrplatform">typedef khronos_intptr_t <name>GLintptr</name>;</type>
+ <type api="glsc2" requires="khrplatform">typedef khronos_ssize_t <name>GLsizeiptr</name>;</type>
<!-- Vendor extension types -->
<type>typedef void (<apientry/> *<name>GLDEBUGPROCAMD</name>)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);</type>
<type>typedef unsigned short <name>GLhalfNV</name>;</type>
<type requires="GLintptr">typedef GLintptr <name>GLvdpauSurfaceNV</name>;</type>
+ <type>typedef void (<apientry/> *<name>GLVULKANPROCNV</name>)(void);</type>
</types>
<!-- SECTION: GL parameter class type definitions. -->
@@ -207,37 +205,9 @@
<enum name="GL_LOGIC_OP"/>
<enum name="GL_MAX_EXT"/>
<enum name="GL_MIN_EXT"/>
- </group>
-
- <group name="BlendingFactorDest">
- <enum name="GL_CONSTANT_ALPHA_EXT"/>
- <enum name="GL_CONSTANT_COLOR_EXT"/>
- <enum name="GL_DST_ALPHA"/>
- <enum name="GL_ONE"/>
- <enum name="GL_ONE_MINUS_CONSTANT_ALPHA_EXT"/>
- <enum name="GL_ONE_MINUS_CONSTANT_COLOR_EXT"/>
- <enum name="GL_ONE_MINUS_DST_ALPHA"/>
- <enum name="GL_ONE_MINUS_SRC_ALPHA"/>
- <enum name="GL_ONE_MINUS_SRC_COLOR"/>
- <enum name="GL_SRC_ALPHA"/>
- <enum name="GL_SRC_COLOR"/>
- <enum name="GL_ZERO"/>
- </group>
-
- <group name="BlendingFactorSrc">
- <enum name="GL_CONSTANT_ALPHA_EXT"/>
- <enum name="GL_CONSTANT_COLOR_EXT"/>
- <enum name="GL_DST_ALPHA"/>
- <enum name="GL_DST_COLOR"/>
- <enum name="GL_ONE"/>
- <enum name="GL_ONE_MINUS_CONSTANT_ALPHA_EXT"/>
- <enum name="GL_ONE_MINUS_CONSTANT_COLOR_EXT"/>
- <enum name="GL_ONE_MINUS_DST_ALPHA"/>
- <enum name="GL_ONE_MINUS_DST_COLOR"/>
- <enum name="GL_ONE_MINUS_SRC_ALPHA"/>
- <enum name="GL_SRC_ALPHA"/>
- <enum name="GL_SRC_ALPHA_SATURATE"/>
- <enum name="GL_ZERO"/>
+ <enum name="GL_FUNC_ADD"/>
+ <enum name="GL_FUNC_REVERSE_SUBTRACT"/>
+ <enum name="GL_FUNC_SUBTRACT"/>
</group>
<group name="Boolean">
@@ -245,6 +215,95 @@
<enum name="GL_TRUE"/>
</group>
+ <group name="BufferBitQCOM">
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT7_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT6_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT5_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT4_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT3_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT2_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT1_QCOM"/>
+ <enum name="GL_MULTISAMPLE_BUFFER_BIT0_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT7_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT6_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT5_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT4_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT3_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT2_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT1_QCOM"/>
+ <enum name="GL_STENCIL_BUFFER_BIT0_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT7_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT6_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT5_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT4_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT3_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT2_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT1_QCOM"/>
+ <enum name="GL_DEPTH_BUFFER_BIT0_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT7_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT6_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT5_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT4_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT3_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT2_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT1_QCOM"/>
+ <enum name="GL_COLOR_BUFFER_BIT0_QCOM"/>
+ </group>
+
+ <group name="BufferTargetARB">
+ <enum name="GL_ARRAY_BUFFER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER" />
+ <enum name="GL_COPY_READ_BUFFER" />
+ <enum name="GL_COPY_WRITE_BUFFER" />
+ <enum name="GL_DISPATCH_INDIRECT_BUFFER" />
+ <enum name="GL_DRAW_INDIRECT_BUFFER" />
+ <enum name="GL_ELEMENT_ARRAY_BUFFER" />
+ <enum name="GL_PIXEL_PACK_BUFFER" />
+ <enum name="GL_PIXEL_UNPACK_BUFFER" />
+ <enum name="GL_QUERY_BUFFER" />
+ <enum name="GL_SHADER_STORAGE_BUFFER" />
+ <enum name="GL_TEXTURE_BUFFER" />
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER" />
+ <enum name="GL_UNIFORM_BUFFER" />
+ </group>
+
+ <group name="BufferUsageARB">
+ <enum name="GL_STREAM_DRAW"/>
+ <enum name="GL_STREAM_READ"/>
+ <enum name="GL_STREAM_COPY"/>
+ <enum name="GL_STATIC_DRAW"/>
+ <enum name="GL_STATIC_READ"/>
+ <enum name="GL_STATIC_COPY"/>
+ <enum name="GL_DYNAMIC_DRAW"/>
+ <enum name="GL_DYNAMIC_READ"/>
+ <enum name="GL_DYNAMIC_COPY"/>
+ </group>
+
+ <group name="BufferAccessARB">
+ <enum name="GL_READ_ONLY"/>
+ <enum name="GL_WRITE_ONLY"/>
+ <enum name="GL_READ_WRITE"/>
+ </group>
+
+ <group name="BufferAccessMask">
+ <enum name="GL_MAP_COHERENT_BIT"/>
+ <enum name="GL_MAP_COHERENT_BIT_EXT"/>
+ <enum name="GL_MAP_FLUSH_EXPLICIT_BIT"/>
+ <enum name="GL_MAP_FLUSH_EXPLICIT_BIT_EXT"/>
+ <enum name="GL_MAP_INVALIDATE_BUFFER_BIT"/>
+ <enum name="GL_MAP_INVALIDATE_BUFFER_BIT_EXT"/>
+ <enum name="GL_MAP_INVALIDATE_RANGE_BIT"/>
+ <enum name="GL_MAP_INVALIDATE_RANGE_BIT_EXT"/>
+ <enum name="GL_MAP_PERSISTENT_BIT"/>
+ <enum name="GL_MAP_PERSISTENT_BIT_EXT"/>
+ <enum name="GL_MAP_READ_BIT"/>
+ <enum name="GL_MAP_READ_BIT_EXT"/>
+ <enum name="GL_MAP_UNSYNCHRONIZED_BIT"/>
+ <enum name="GL_MAP_UNSYNCHRONIZED_BIT_EXT"/>
+ <enum name="GL_MAP_WRITE_BIT"/>
+ <enum name="GL_MAP_WRITE_BIT_EXT"/>
+ </group>
+
<group name="ClearBufferMask">
<enum name="GL_ACCUM_BUFFER_BIT"/>
<enum name="GL_COLOR_BUFFER_BIT"/>
@@ -329,7 +388,11 @@
<enum name="GL_CONTEXT_FLAG_DEBUG_BIT"/>
<enum name="GL_CONTEXT_FLAG_DEBUG_BIT_KHR"/>
<enum name="GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT"/>
+ <enum name="GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT"/>
<enum name="GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB"/>
+ <enum name="GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT"/>
+ <enum name="GL_CONTEXT_FLAG_NO_ERROR_BIT"/>
+ <enum name="GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR"/>
</group>
<group name="ContextProfileMask">
@@ -395,6 +458,12 @@
<enum name="GL_RIGHT"/>
</group>
+ <group name="DrawElementsType">
+ <enum name="GL_UNSIGNED_BYTE"/>
+ <enum name="GL_UNSIGNED_SHORT"/>
+ <enum name="GL_UNSIGNED_INT"/>
+ </group>
+
<group name="EnableCap">
<enum name="GL_ALPHA_TEST"/>
<enum name="GL_ASYNC_DRAW_PIXELS_SGIX"/>
@@ -520,6 +589,17 @@
<enum name="GL_TEXTURE_TOO_LARGE_EXT"/>
</group>
+ <group name="ExternalHandleType">
+ <enum name="GL_HANDLE_TYPE_OPAQUE_FD_EXT"/>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_WIN32_EXT"/>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D12_RESOURCE_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D11_IMAGE_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D12_FENCE_EXT"/>
+ </group>
+
<group name="FeedbackType">
<enum name="GL_2D"/>
<enum name="GL_3D"/>
@@ -585,6 +665,10 @@
<enum name="GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX"/>
</group>
+ <group name="FramebufferFetchNoncoherent">
+ <enum name="GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM"/>
+ </group>
+
<group name="FrontFaceDirection">
<enum name="GL_CCW"/>
<enum name="GL_CW"/>
@@ -601,6 +685,16 @@
<enum name="GL_COLOR_TABLE_RED_SIZE_SGI"/>
<enum name="GL_COLOR_TABLE_SCALE_SGI"/>
<enum name="GL_COLOR_TABLE_WIDTH_SGI"/>
+ <enum name="GL_COLOR_TABLE_BIAS"/>
+ <enum name="GL_COLOR_TABLE_SCALE"/>
+ <enum name="GL_COLOR_TABLE_FORMAT"/>
+ <enum name="GL_COLOR_TABLE_WIDTH"/>
+ <enum name="GL_COLOR_TABLE_RED_SIZE"/>
+ <enum name="GL_COLOR_TABLE_GREEN_SIZE"/>
+ <enum name="GL_COLOR_TABLE_BLUE_SIZE"/>
+ <enum name="GL_COLOR_TABLE_ALPHA_SIZE"/>
+ <enum name="GL_COLOR_TABLE_LUMINANCE_SIZE"/>
+ <enum name="GL_COLOR_TABLE_INTENSITY_SIZE"/>
</group>
<group name="GetConvolutionParameter">
@@ -612,6 +706,15 @@
<enum name="GL_CONVOLUTION_WIDTH_EXT"/>
<enum name="GL_MAX_CONVOLUTION_HEIGHT_EXT"/>
<enum name="GL_MAX_CONVOLUTION_WIDTH_EXT"/>
+ <enum name="GL_CONVOLUTION_BORDER_MODE"/>
+ <enum name="GL_CONVOLUTION_BORDER_COLOR"/>
+ <enum name="GL_CONVOLUTION_FILTER_SCALE"/>
+ <enum name="GL_CONVOLUTION_FILTER_BIAS"/>
+ <enum name="GL_CONVOLUTION_FORMAT"/>
+ <enum name="GL_CONVOLUTION_WIDTH"/>
+ <enum name="GL_CONVOLUTION_HEIGHT"/>
+ <enum name="GL_MAX_CONVOLUTION_WIDTH"/>
+ <enum name="GL_MAX_CONVOLUTION_HEIGHT"/>
</group>
<group name="GetHistogramParameterPNameEXT">
@@ -623,6 +726,22 @@
<enum name="GL_HISTOGRAM_RED_SIZE_EXT"/>
<enum name="GL_HISTOGRAM_SINK_EXT"/>
<enum name="GL_HISTOGRAM_WIDTH_EXT"/>
+ <enum name="GL_HISTOGRAM_WIDTH"/>
+ <enum name="GL_HISTOGRAM_FORMAT"/>
+ <enum name="GL_HISTOGRAM_RED_SIZE"/>
+ <enum name="GL_HISTOGRAM_GREEN_SIZE"/>
+ <enum name="GL_HISTOGRAM_BLUE_SIZE"/>
+ <enum name="GL_HISTOGRAM_ALPHA_SIZE"/>
+ <enum name="GL_HISTOGRAM_LUMINANCE_SIZE"/>
+ <enum name="GL_HISTOGRAM_SINK"/>
+ <enum name="GL_HISTOGRAM_ALPHA_SIZE_EXT"/>
+ <enum name="GL_HISTOGRAM_BLUE_SIZE_EXT"/>
+ <enum name="GL_HISTOGRAM_FORMAT_EXT"/>
+ <enum name="GL_HISTOGRAM_GREEN_SIZE_EXT"/>
+ <enum name="GL_HISTOGRAM_LUMINANCE_SIZE_EXT"/>
+ <enum name="GL_HISTOGRAM_RED_SIZE_EXT"/>
+ <enum name="GL_HISTOGRAM_SINK_EXT"/>
+ <enum name="GL_HISTOGRAM_WIDTH_EXT"/>
</group>
<group name="GetMapQuery">
@@ -636,6 +755,8 @@
<enum name="GL_MINMAX_FORMAT_EXT"/>
<enum name="GL_MINMAX_SINK"/>
<enum name="GL_MINMAX_SINK_EXT"/>
+ <enum name="GL_MINMAX_FORMAT"/>
+ <enum name="GL_MINMAX_SINK"/>
</group>
<group name="GetPixelMap">
@@ -731,11 +852,15 @@
<enum name="GL_DEPTH_TEST"/>
<enum name="GL_DEPTH_WRITEMASK"/>
<enum name="GL_DETAIL_TEXTURE_2D_BINDING_SGIS"/>
+ <enum name="GL_DEVICE_LUID_EXT"/>
+ <enum name="GL_DEVICE_NODE_MASK_EXT"/>
+ <enum name="GL_DEVICE_UUID_EXT"/>
<enum name="GL_DISTANCE_ATTENUATION_SGIS"/>
<enum name="GL_DITHER"/>
<enum name="GL_DOUBLEBUFFER"/>
<enum name="GL_DRAW_BUFFER"/>
<enum name="GL_DRAW_BUFFER_EXT"/>
+ <enum name="GL_DRIVER_UUID_EXT"/>
<enum name="GL_EDGE_FLAG"/>
<enum name="GL_EDGE_FLAG_ARRAY"/>
<enum name="GL_EDGE_FLAG_ARRAY_COUNT_EXT"/>
@@ -875,6 +1000,7 @@
<enum name="GL_NORMAL_ARRAY_COUNT_EXT"/>
<enum name="GL_NORMAL_ARRAY_STRIDE"/>
<enum name="GL_NORMAL_ARRAY_TYPE"/>
+ <enum name="GL_NUM_DEVICE_UUIDS_EXT"/>
<enum name="GL_PACK_ALIGNMENT"/>
<enum name="GL_PACK_CMYK_HINT_EXT"/>
<enum name="GL_PACK_IMAGE_DEPTH_SGIS"/>
@@ -1057,6 +1183,8 @@
<enum name="GL_TEXTURE_COORD_ARRAY_POINTER_EXT"/>
<enum name="GL_VERTEX_ARRAY_POINTER"/>
<enum name="GL_VERTEX_ARRAY_POINTER_EXT"/>
+ <enum name="GL_DEBUG_CALLBACK_FUNCTION"/>
+ <enum name="GL_DEBUG_CALLBACK_USER_PARAM"/>
</group>
<group name="GetTextureParameter">
@@ -1181,6 +1309,8 @@
<enum name="GL_HISTOGRAM_EXT"/>
<enum name="GL_PROXY_HISTOGRAM"/>
<enum name="GL_PROXY_HISTOGRAM_EXT"/>
+ <enum name="GL_HISTOGRAM"/>
+ <enum name="GL_PROXY_HISTOGRAM"/>
</group>
<group name="IndexPointerType">
@@ -1307,8 +1437,11 @@
<group name="MapBufferUsageMask">
<enum name="GL_CLIENT_STORAGE_BIT"/>
+ <enum name="GL_CLIENT_STORAGE_BIT_EXT"/>
<enum name="GL_DYNAMIC_STORAGE_BIT"/>
+ <enum name="GL_DYNAMIC_STORAGE_BIT_EXT"/>
<enum name="GL_MAP_COHERENT_BIT"/>
+ <enum name="GL_MAP_COHERENT_BIT_EXT"/>
<enum name="GL_MAP_FLUSH_EXPLICIT_BIT"/>
<enum name="GL_MAP_FLUSH_EXPLICIT_BIT_EXT"/>
<enum name="GL_MAP_INVALIDATE_BUFFER_BIT"/>
@@ -1316,12 +1449,16 @@
<enum name="GL_MAP_INVALIDATE_RANGE_BIT"/>
<enum name="GL_MAP_INVALIDATE_RANGE_BIT_EXT"/>
<enum name="GL_MAP_PERSISTENT_BIT"/>
+ <enum name="GL_MAP_PERSISTENT_BIT_EXT"/>
<enum name="GL_MAP_READ_BIT"/>
<enum name="GL_MAP_READ_BIT_EXT"/>
<enum name="GL_MAP_UNSYNCHRONIZED_BIT"/>
<enum name="GL_MAP_UNSYNCHRONIZED_BIT_EXT"/>
<enum name="GL_MAP_WRITE_BIT"/>
<enum name="GL_MAP_WRITE_BIT_EXT"/>
+ <enum name="GL_SPARSE_STORAGE_BIT_ARB"/>
+ <enum name="GL_LGPU_SEPARATE_STORAGE_BIT_NVX"/>
+ <enum name="GL_PER_GPU_STORAGE_BIT_NV"/>
</group>
<group name="MapTarget">
@@ -1384,6 +1521,7 @@
<enum name="GL_BUFFER_UPDATE_BARRIER_BIT"/>
<enum name="GL_BUFFER_UPDATE_BARRIER_BIT_EXT"/>
<enum name="GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT"/>
+ <enum name="GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT"/>
<enum name="GL_COMMAND_BARRIER_BIT"/>
<enum name="GL_COMMAND_BARRIER_BIT_EXT"/>
<enum name="GL_ELEMENT_ARRAY_BARRIER_BIT"/>
@@ -1409,6 +1547,11 @@
<enum name="GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT"/>
</group>
+ <group name="MemoryObjectParameterName">
+ <enum name="GL_DEDICATED_MEMORY_OBJECT_EXT"/>
+ <enum name="GL_PROTECTED_MEMORY_OBJECT_EXT"/>
+ </group>
+
<group name="MeshMode1">
<enum name="GL_LINE"/>
<enum name="GL_POINT"/>
@@ -1465,15 +1608,13 @@
</group>
<group name="InternalFormat" comment="Was PixelInternalFormat">
+ <!-- Compatibility -->
<enum name="GL_ALPHA12"/>
<enum name="GL_ALPHA16"/>
- <enum name="GL_ALPHA16_ICC_SGIX"/>
+ <!-- <enum name="GL_ALPHA16_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
<enum name="GL_ALPHA4"/>
<enum name="GL_ALPHA8"/>
- <enum name="GL_ALPHA_ICC_SGIX"/>
- <enum name="GL_DEPTH_COMPONENT16_SGIX"/>
- <enum name="GL_DEPTH_COMPONENT24_SGIX"/>
- <enum name="GL_DEPTH_COMPONENT32_SGIX"/>
+ <!-- <enum name="GL_ALPHA_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
<enum name="GL_DUAL_ALPHA12_SGIS"/>
<enum name="GL_DUAL_ALPHA16_SGIS"/>
<enum name="GL_DUAL_ALPHA4_SGIS"/>
@@ -1491,49 +1632,212 @@
<enum name="GL_INTENSITY"/>
<enum name="GL_INTENSITY12"/>
<enum name="GL_INTENSITY16"/>
- <enum name="GL_INTENSITY16_ICC_SGIX"/>
+ <!-- <enum name="GL_INTENSITY16_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
<enum name="GL_INTENSITY4"/>
<enum name="GL_INTENSITY8"/>
- <enum name="GL_INTENSITY_ICC_SGIX"/>
+ <!-- <enum name="GL_INTENSITY_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
<enum name="GL_LUMINANCE12"/>
<enum name="GL_LUMINANCE12_ALPHA12"/>
<enum name="GL_LUMINANCE12_ALPHA4"/>
<enum name="GL_LUMINANCE16"/>
<enum name="GL_LUMINANCE16_ALPHA16"/>
- <enum name="GL_LUMINANCE16_ALPHA8_ICC_SGIX"/>
- <enum name="GL_LUMINANCE16_ICC_SGIX"/>
+ <!-- <enum name="GL_LUMINANCE16_ALPHA8_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
+ <!-- <enum name="GL_LUMINANCE16_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
<enum name="GL_LUMINANCE4"/>
<enum name="GL_LUMINANCE4_ALPHA4"/>
<enum name="GL_LUMINANCE6_ALPHA2"/>
<enum name="GL_LUMINANCE8"/>
<enum name="GL_LUMINANCE8_ALPHA8"/>
- <enum name="GL_LUMINANCE_ALPHA_ICC_SGIX"/>
- <enum name="GL_LUMINANCE_ICC_SGIX"/>
+ <!-- <enum name="GL_LUMINANCE_ALPHA_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
+ <!-- <enum name="GL_LUMINANCE_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
<enum name="GL_QUAD_ALPHA4_SGIS"/>
<enum name="GL_QUAD_ALPHA8_SGIS"/>
<enum name="GL_QUAD_INTENSITY4_SGIS"/>
<enum name="GL_QUAD_INTENSITY8_SGIS"/>
<enum name="GL_QUAD_LUMINANCE4_SGIS"/>
<enum name="GL_QUAD_LUMINANCE8_SGIS"/>
- <enum name="GL_R3_G3_B2"/>
- <enum name="GL_R5_G6_B5_A8_ICC_SGIX"/>
- <enum name="GL_R5_G6_B5_ICC_SGIX"/>
- <enum name="GL_RGB10"/>
- <enum name="GL_RGB10_A2"/>
- <enum name="GL_RGB12"/>
- <enum name="GL_RGB16"/>
+ <!-- <enum name="GL_R5_G6_B5_A8_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
+ <!-- <enum name="GL_R5_G6_B5_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
+ <!-- <enum name="GL_RGBA_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
+ <!-- <enum name="GL_RGB_ICC_SGIX" comment="Incomplete extension SGIX_icc_texture"/> -->
+ <!-- Base internal format: GL_RED -->
+ <enum name="GL_RED"/>
+ <enum name="GL_RED_EXT"/>
+ <enum name="GL_R8"/>
+ <enum name="GL_R8_EXT"/>
+ <enum name="GL_R8_SNORM"/>
+ <enum name="GL_R16"/>
+ <enum name="GL_R16_EXT"/>
+ <enum name="GL_R16_SNORM"/>
+ <enum name="GL_R16_SNORM_EXT"/>
+ <!-- <enum name="GL_R32" comment="cut & paste error?"/> -->
+ <!-- <enum name="GL_R32_EXT" comment="cut & paste error?"/> -->
+ <enum name="GL_R16F"/>
+ <enum name="GL_R16F_EXT"/>
+ <enum name="GL_R32F"/>
+ <enum name="GL_R32F_EXT"/>
+ <enum name="GL_R8I"/>
+ <enum name="GL_R16I"/>
+ <enum name="GL_R32I"/>
+ <enum name="GL_R8UI"/>
+ <enum name="GL_R16UI"/>
+ <enum name="GL_R32UI"/>
+ <!-- Base internal format: GL_RG -->
+ <enum name="GL_RG"/>
+ <enum name="GL_RG8"/>
+ <enum name="GL_RG8_EXT"/>
+ <enum name="GL_RG8_SNORM"/>
+ <enum name="GL_RG16"/>
+ <enum name="GL_RG16_EXT"/>
+ <enum name="GL_RG16_SNORM"/>
+ <enum name="GL_RG16_SNORM_EXT"/>
+ <enum name="GL_RG16F"/>
+ <enum name="GL_RG16F_EXT"/>
+ <enum name="GL_RG32F"/>
+ <enum name="GL_RG32F_EXT"/>
+ <enum name="GL_RG8I"/>
+ <enum name="GL_RG16I"/>
+ <enum name="GL_RG32I"/>
+ <enum name="GL_RG8UI"/>
+ <enum name="GL_RG16UI"/>
+ <enum name="GL_RG32UI"/>
+ <!-- Base internal format: GL_RGB -->
+ <enum name="GL_RGB"/>
+ <!-- <enum name="GL_RGB2" comment="Never actually added to core"/> -->
<enum name="GL_RGB2_EXT"/>
<enum name="GL_RGB4"/>
+ <enum name="GL_RGB4_EXT"/>
<enum name="GL_RGB5"/>
- <enum name="GL_RGB5_A1"/>
+ <enum name="GL_RGB5_EXT"/>
<enum name="GL_RGB8"/>
- <enum name="GL_RGBA12"/>
- <enum name="GL_RGBA16"/>
- <enum name="GL_RGBA2"/>
+ <enum name="GL_RGB8_EXT"/>
+ <enum name="GL_RGB8_OES"/>
+ <enum name="GL_RGB8_SNORM"/>
+ <enum name="GL_RGB10"/>
+ <enum name="GL_RGB10_EXT"/>
+ <enum name="GL_RGB12"/>
+ <enum name="GL_RGB12_EXT"/>
+ <enum name="GL_RGB16"/>
+ <enum name="GL_RGB16_EXT"/>
+ <enum name="GL_RGB16F"/>
+ <enum name="GL_RGB16F_ARB"/>
+ <enum name="GL_RGB16F_EXT"/>
+ <enum name="GL_RGB16_SNORM"/>
+ <enum name="GL_RGB16_SNORM_EXT"/>
+ <enum name="GL_RGB8I"/>
+ <enum name="GL_RGB16I"/>
+ <enum name="GL_RGB32I"/>
+ <enum name="GL_RGB8UI"/>
+ <enum name="GL_RGB16UI"/>
+ <enum name="GL_RGB32UI"/>
+ <enum name="GL_SRGB"/>
+ <enum name="GL_SRGB_EXT"/>
+ <enum name="GL_SRGB_ALPHA"/>
+ <enum name="GL_SRGB_ALPHA_EXT"/>
+ <enum name="GL_SRGB8"/>
+ <enum name="GL_SRGB8_EXT"/>
+ <enum name="GL_SRGB8_NV"/>
+ <enum name="GL_SRGB8_ALPHA8"/>
+ <enum name="GL_SRGB8_ALPHA8_EXT"/>
+ <enum name="GL_R3_G3_B2"/>
+ <enum name="GL_R11F_G11F_B10F"/>
+ <enum name="GL_R11F_G11F_B10F_APPLE"/>
+ <enum name="GL_R11F_G11F_B10F_EXT"/>
+ <enum name="GL_RGB9_E5"/>
+ <enum name="GL_RGB9_E5_APPLE"/>
+ <enum name="GL_RGB9_E5_EXT"/>
+ <!-- Base internal format: GL_RGBA -->
+ <enum name="GL_RGBA"/>
<enum name="GL_RGBA4"/>
+ <enum name="GL_RGBA4_EXT"/>
+ <enum name="GL_RGBA4_OES"/>
+ <enum name="GL_RGB5_A1"/>
+ <enum name="GL_RGB5_A1_EXT"/>
+ <enum name="GL_RGB5_A1_OES"/>
<enum name="GL_RGBA8"/>
- <enum name="GL_RGBA_ICC_SGIX"/>
- <enum name="GL_RGB_ICC_SGIX"/>
+ <enum name="GL_RGBA8_EXT"/>
+ <enum name="GL_RGBA8_OES"/>
+ <enum name="GL_RGBA8_SNORM"/>
+ <enum name="GL_RGB10_A2"/>
+ <enum name="GL_RGB10_A2_EXT"/>
+ <enum name="GL_RGBA12"/>
+ <enum name="GL_RGBA12_EXT"/>
+ <enum name="GL_RGBA16"/>
+ <enum name="GL_RGBA16_EXT"/>
+ <enum name="GL_RGBA16F"/>
+ <enum name="GL_RGBA16F_ARB"/>
+ <enum name="GL_RGBA16F_EXT"/>
+ <enum name="GL_RGBA32F"/>
+ <enum name="GL_RGBA32F_ARB"/>
+ <enum name="GL_RGBA32F_EXT"/>
+ <enum name="GL_RGBA8I"/>
+ <enum name="GL_RGBA16I"/>
+ <enum name="GL_RGBA32I"/>
+ <enum name="GL_RGBA8UI"/>
+ <enum name="GL_RGBA16UI"/>
+ <enum name="GL_RGBA32UI"/>
+ <enum name="GL_RGB10_A2UI"/>
+ <!-- Base internal format: GL_DEPTH_COMPONENT -->
+ <enum name="GL_DEPTH_COMPONENT"/>
+ <enum name="GL_DEPTH_COMPONENT16"/>
+ <enum name="GL_DEPTH_COMPONENT16_ARB"/>
+ <enum name="GL_DEPTH_COMPONENT16_OES"/>
+ <enum name="GL_DEPTH_COMPONENT16_SGIX"/>
+ <enum name="GL_DEPTH_COMPONENT24_ARB"/>
+ <enum name="GL_DEPTH_COMPONENT24_OES"/>
+ <enum name="GL_DEPTH_COMPONENT24_SGIX"/>
+ <enum name="GL_DEPTH_COMPONENT32_ARB"/>
+ <enum name="GL_DEPTH_COMPONENT32_OES"/>
+ <enum name="GL_DEPTH_COMPONENT32_SGIX"/>
+ <enum name="GL_DEPTH_COMPONENT32F"/>
+ <enum name="GL_DEPTH_COMPONENT32F_NV"/>
+ <enum name="GL_DEPTH_COMPONENT32F_NV"/>
+ <!-- Base internal format: GL_DEPTH_STENCIL -->
+ <enum name="GL_DEPTH_STENCIL"/>
+ <enum name="GL_DEPTH_STENCIL_EXT"/>
+ <enum name="GL_DEPTH_STENCIL_MESA"/>
+ <enum name="GL_DEPTH_STENCIL_NV"/>
+ <enum name="GL_DEPTH_STENCIL_OES"/>
+ <enum name="GL_DEPTH24_STENCIL8"/>
+ <enum name="GL_DEPTH24_STENCIL8_EXT"/>
+ <enum name="GL_DEPTH24_STENCIL8_OES"/>
+ <enum name="GL_DEPTH32F_STENCIL8"/>
+ <enum name="GL_DEPTH32F_STENCIL8_NV"/>
+ <!-- Compressed base internal formats -->
+ <enum name="GL_COMPRESSED_RED"/>
+ <enum name="GL_COMPRESSED_RG"/>
+ <enum name="GL_COMPRESSED_RGB"/>
+ <enum name="GL_COMPRESSED_RGBA"/>
+ <enum name="GL_COMPRESSED_SRGB"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA"/>
+ <enum name="GL_COMPRESSED_RED_RGTC1"/>
+ <enum name="GL_COMPRESSED_RED_RGTC1_EXT"/>
+ <enum name="GL_COMPRESSED_SIGNED_RED_RGTC1"/>
+ <enum name="GL_COMPRESSED_SIGNED_RED_RGTC1_EXT"/>
+ <enum name="GL_COMPRESSED_R11_EAC"/>
+ <enum name="GL_COMPRESSED_SIGNED_R11_EAC"/>
+ <enum name="GL_COMPRESSED_RG_RGTC2"/>
+ <enum name="GL_COMPRESSED_SIGNED_RG_RGTC2"/>
+ <enum name="GL_COMPRESSED_RGBA_BPTC_UNORM"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"/>
+ <enum name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"/>
+ <enum name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"/>
+ <enum name="GL_COMPRESSED_RGB8_ETC2"/>
+ <enum name="GL_COMPRESSED_SRGB8_ETC2"/>
+ <enum name="GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"/>
+ <enum name="GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"/>
+ <enum name="GL_COMPRESSED_RGBA8_ETC2_EAC"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"/>
+ <enum name="GL_COMPRESSED_RG11_EAC"/>
+ <enum name="GL_COMPRESSED_SIGNED_RG11_EAC"/>
+ <enum name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_S3TC_DXT1_EXT"/>
+ <enum name="GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"/>
+ <enum name="GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"/>
+ <enum name="GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"/>
</group>
<group name="PixelMap">
@@ -1789,6 +2093,10 @@
<enum name="GL_4PASS_3_SGIS"/>
</group>
+ <group name="SemaphoreParameterName">
+ <enum name="GL_D3D12_FENCE_VALUE_EXT"/>
+ </group>
+
<group name="SeparableTargetEXT">
<enum name="GL_SEPARABLE_2D"/>
<enum name="GL_SEPARABLE_2D_EXT"/>
@@ -1799,6 +2107,12 @@
<enum name="GL_SMOOTH"/>
</group>
+ <group name="StencilFaceDirection">
+ <enum name="GL_FRONT"/>
+ <enum name="GL_BACK"/>
+ <enum name="GL_FRONT_AND_BACK"/>
+ </group>
+
<group name="StencilFunction">
<enum name="GL_ALWAYS"/>
<enum name="GL_EQUAL"/>
@@ -1824,6 +2138,12 @@
<enum name="GL_RENDERER"/>
<enum name="GL_VENDOR"/>
<enum name="GL_VERSION"/>
+ <enum name="GL_SHADING_LANGUAGE_VERSION"/>
+ </group>
+
+ <group name="SyncObjectMask">
+ <enum name="GL_SYNC_FLUSH_COMMANDS_BIT"/>
+ <enum name="GL_SYNC_FLUSH_COMMANDS_BIT_APPLE"/>
</group>
<group name="TexCoordPointerType">
@@ -1948,31 +2268,96 @@
<enum name="GL_TEXTURE_WRAP_R_OES"/>
<enum name="GL_TEXTURE_WRAP_S"/>
<enum name="GL_TEXTURE_WRAP_T"/>
+ <enum name="GL_TEXTURE_BASE_LEVEL"/>
+ <enum name="GL_TEXTURE_COMPARE_MODE"/>
+ <enum name="GL_TEXTURE_COMPARE_FUNC"/>
+ <enum name="GL_TEXTURE_LOD_BIAS"/>
+ <enum name="GL_TEXTURE_MIN_LOD"/>
+ <enum name="GL_TEXTURE_MAX_LOD"/>
+ <enum name="GL_TEXTURE_MAX_LEVEL"/>
+ <enum name="GL_TEXTURE_SWIZZLE_R"/>
+ <enum name="GL_TEXTURE_SWIZZLE_G"/>
+ <enum name="GL_TEXTURE_SWIZZLE_B"/>
+ <enum name="GL_TEXTURE_SWIZZLE_A"/>
+ <enum name="GL_TEXTURE_SWIZZLE_RGBA"/>
+ <enum name="GL_TEXTURE_TILING_EXT"/>
+ <enum name="GL_DEPTH_STENCIL_TEXTURE_MODE"/>
+ <enum name="GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS"/>
+ <enum name="GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS"/>
+ <enum name="GL_TEXTURE_4DSIZE_SGIS"/>
+ <enum name="GL_TEXTURE_ALPHA_SIZE"/>
+ <enum name="GL_TEXTURE_BASE_LEVEL_SGIS"/>
+ <enum name="GL_TEXTURE_BLUE_SIZE"/>
+ <enum name="GL_TEXTURE_BORDER"/>
+ <enum name="GL_TEXTURE_BORDER_COLOR_NV"/>
+ <enum name="GL_TEXTURE_COMPARE_OPERATOR_SGIX"/>
+ <enum name="GL_TEXTURE_COMPONENTS"/>
+ <enum name="GL_TEXTURE_DEPTH_EXT"/>
+ <enum name="GL_TEXTURE_FILTER4_SIZE_SGIS"/>
+ <enum name="GL_TEXTURE_GEQUAL_R_SGIX"/>
+ <enum name="GL_TEXTURE_GREEN_SIZE"/>
+ <enum name="GL_TEXTURE_HEIGHT"/>
+ <enum name="GL_TEXTURE_INTENSITY_SIZE"/>
+ <enum name="GL_TEXTURE_INTERNAL_FORMAT"/>
+ <enum name="GL_TEXTURE_LEQUAL_R_SGIX"/>
+ <enum name="GL_TEXTURE_LUMINANCE_SIZE"/>
+ <enum name="GL_TEXTURE_MAX_LEVEL_SGIS"/>
+ <enum name="GL_TEXTURE_MAX_LOD_SGIS"/>
+ <enum name="GL_TEXTURE_MIN_LOD_SGIS"/>
+ <enum name="GL_TEXTURE_RED_SIZE"/>
+ <enum name="GL_TEXTURE_RESIDENT"/>
+ <enum name="GL_TEXTURE_WIDTH"/>
+ </group>
+
+ <group name="TextureStorageMaskAMD">
+ <enum name="GL_TEXTURE_STORAGE_SPARSE_BIT_AMD"/>
</group>
<group name="TextureTarget">
<enum name="GL_DETAIL_TEXTURE_2D_SGIS"/>
<enum name="GL_PROXY_TEXTURE_1D"/>
+ <enum name="GL_PROXY_TEXTURE_1D_ARRAY"/>
+ <enum name="GL_PROXY_TEXTURE_1D_ARRAY_EXT"/>
<enum name="GL_PROXY_TEXTURE_1D_EXT"/>
<enum name="GL_PROXY_TEXTURE_2D"/>
+ <enum name="GL_PROXY_TEXTURE_2D_ARRAY"/>
+ <enum name="GL_PROXY_TEXTURE_2D_ARRAY_EXT"/>
<enum name="GL_PROXY_TEXTURE_2D_EXT"/>
+ <enum name="GL_PROXY_TEXTURE_2D_MULTISAMPLE"/>
+ <enum name="GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY"/>
<enum name="GL_PROXY_TEXTURE_3D"/>
<enum name="GL_PROXY_TEXTURE_3D_EXT"/>
<enum name="GL_PROXY_TEXTURE_4D_SGIS"/>
+ <enum name="GL_PROXY_TEXTURE_CUBE_MAP"/>
+ <enum name="GL_PROXY_TEXTURE_CUBE_MAP_ARB"/>
+ <enum name="GL_PROXY_TEXTURE_CUBE_MAP_EXT"/>
+ <enum name="GL_PROXY_TEXTURE_CUBE_MAP_ARRAY"/>
+ <enum name="GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB"/>
+ <enum name="GL_PROXY_TEXTURE_RECTANGLE"/>
+ <enum name="GL_PROXY_TEXTURE_RECTANGLE_ARB"/>
+ <enum name="GL_PROXY_TEXTURE_RECTANGLE_NV"/>
<enum name="GL_TEXTURE_1D"/>
<enum name="GL_TEXTURE_2D"/>
<enum name="GL_TEXTURE_3D"/>
<enum name="GL_TEXTURE_3D_EXT"/>
<enum name="GL_TEXTURE_3D_OES"/>
<enum name="GL_TEXTURE_4D_SGIS"/>
- <enum name="GL_TEXTURE_BASE_LEVEL"/>
- <enum name="GL_TEXTURE_BASE_LEVEL_SGIS"/>
- <enum name="GL_TEXTURE_MAX_LEVEL"/>
- <enum name="GL_TEXTURE_MAX_LEVEL_SGIS"/>
- <enum name="GL_TEXTURE_MAX_LOD"/>
- <enum name="GL_TEXTURE_MAX_LOD_SGIS"/>
- <enum name="GL_TEXTURE_MIN_LOD"/>
- <enum name="GL_TEXTURE_MIN_LOD_SGIS"/>
+ <enum name="GL_TEXTURE_RECTANGLE"/>
+ <enum name="GL_TEXTURE_CUBE_MAP"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_ARRAY"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_ARRAY_ARB"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_ARRAY_EXT"/>
+ <enum name="GL_TEXTURE_CUBE_MAP_ARRAY_OES"/>
+ <enum name="GL_TEXTURE_1D_ARRAY"/>
+ <enum name="GL_TEXTURE_2D_ARRAY"/>
+ <enum name="GL_TEXTURE_2D_MULTISAMPLE"/>
+ <enum name="GL_TEXTURE_2D_MULTISAMPLE_ARRAY"/>
</group>
<group name="TextureWrapMode">
@@ -1993,10 +2378,13 @@
<enum name="GL_FRAGMENT_SHADER_BIT_EXT"/>
<enum name="GL_GEOMETRY_SHADER_BIT"/>
<enum name="GL_GEOMETRY_SHADER_BIT_EXT"/>
+ <enum name="GL_GEOMETRY_SHADER_BIT_OES"/>
<enum name="GL_TESS_CONTROL_SHADER_BIT"/>
<enum name="GL_TESS_CONTROL_SHADER_BIT_EXT"/>
+ <enum name="GL_TESS_CONTROL_SHADER_BIT_OES"/>
<enum name="GL_TESS_EVALUATION_SHADER_BIT"/>
<enum name="GL_TESS_EVALUATION_SHADER_BIT_EXT"/>
+ <enum name="GL_TESS_EVALUATION_SHADER_BIT_OES"/>
<enum name="GL_COMPUTE_SHADER_BIT"/>
<enum name="GL_ALL_SHADER_BITS"/>
<enum name="GL_ALL_SHADER_BITS_EXT"/>
@@ -2008,6 +2396,994 @@
<enum name="GL_INT"/>
<enum name="GL_SHORT"/>
</group>
+
+ <group name="FramebufferAttachment">
+ <enum name="GL_MAX_COLOR_ATTACHMENTS"/>
+ <enum name="GL_MAX_COLOR_ATTACHMENTS_EXT"/>
+ <enum name="GL_MAX_COLOR_ATTACHMENTS_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT0"/>
+ <enum name="GL_COLOR_ATTACHMENT0_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT0_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT0_OES"/>
+ <enum name="GL_COLOR_ATTACHMENT1"/>
+ <enum name="GL_COLOR_ATTACHMENT1_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT1_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT2"/>
+ <enum name="GL_COLOR_ATTACHMENT2_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT2_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT3"/>
+ <enum name="GL_COLOR_ATTACHMENT3_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT3_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT4"/>
+ <enum name="GL_COLOR_ATTACHMENT4_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT4_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT5"/>
+ <enum name="GL_COLOR_ATTACHMENT5_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT5_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT6"/>
+ <enum name="GL_COLOR_ATTACHMENT6_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT6_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT7"/>
+ <enum name="GL_COLOR_ATTACHMENT7_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT7_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT8"/>
+ <enum name="GL_COLOR_ATTACHMENT8_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT8_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT9"/>
+ <enum name="GL_COLOR_ATTACHMENT9_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT9_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT10"/>
+ <enum name="GL_COLOR_ATTACHMENT10_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT10_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT11"/>
+ <enum name="GL_COLOR_ATTACHMENT11_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT11_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT12"/>
+ <enum name="GL_COLOR_ATTACHMENT12_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT12_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT13"/>
+ <enum name="GL_COLOR_ATTACHMENT13_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT13_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT14"/>
+ <enum name="GL_COLOR_ATTACHMENT14_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT14_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT15"/>
+ <enum name="GL_COLOR_ATTACHMENT15_EXT"/>
+ <enum name="GL_COLOR_ATTACHMENT15_NV"/>
+ <enum name="GL_COLOR_ATTACHMENT16"/>
+ <enum name="GL_COLOR_ATTACHMENT17"/>
+ <enum name="GL_COLOR_ATTACHMENT18"/>
+ <enum name="GL_COLOR_ATTACHMENT19"/>
+ <enum name="GL_COLOR_ATTACHMENT20"/>
+ <enum name="GL_COLOR_ATTACHMENT21"/>
+ <enum name="GL_COLOR_ATTACHMENT22"/>
+ <enum name="GL_COLOR_ATTACHMENT23"/>
+ <enum name="GL_COLOR_ATTACHMENT24"/>
+ <enum name="GL_COLOR_ATTACHMENT25"/>
+ <enum name="GL_COLOR_ATTACHMENT26"/>
+ <enum name="GL_COLOR_ATTACHMENT27"/>
+ <enum name="GL_COLOR_ATTACHMENT28"/>
+ <enum name="GL_COLOR_ATTACHMENT29"/>
+ <enum name="GL_COLOR_ATTACHMENT30"/>
+ <enum name="GL_COLOR_ATTACHMENT31"/>
+ <enum name="GL_DEPTH_ATTACHMENT"/>
+ <enum name="GL_DEPTH_ATTACHMENT_EXT"/>
+ <enum name="GL_DEPTH_ATTACHMENT_OES"/>
+ </group>
+
+ <group name="RenderbufferTarget">
+ <enum name="GL_RENDERBUFFER" />
+ </group>
+
+ <group name="FramebufferTarget">
+ <enum name="GL_FRAMEBUFFER" />
+ <enum name="GL_DRAW_FRAMEBUFFER" />
+ <enum name="GL_READ_FRAMEBUFFER" />
+ </group>
+
+ <group name="TextureUnit">
+ <enum name="GL_TEXTURE0"/>
+ <enum name="GL_TEXTURE1"/>
+ <enum name="GL_TEXTURE2"/>
+ <enum name="GL_TEXTURE3"/>
+ <enum name="GL_TEXTURE4"/>
+ <enum name="GL_TEXTURE5"/>
+ <enum name="GL_TEXTURE6"/>
+ <enum name="GL_TEXTURE7"/>
+ <enum name="GL_TEXTURE8"/>
+ <enum name="GL_TEXTURE9"/>
+ <enum name="GL_TEXTURE10"/>
+ <enum name="GL_TEXTURE11"/>
+ <enum name="GL_TEXTURE12"/>
+ <enum name="GL_TEXTURE13"/>
+ <enum name="GL_TEXTURE14"/>
+ <enum name="GL_TEXTURE15"/>
+ <enum name="GL_TEXTURE16"/>
+ <enum name="GL_TEXTURE17"/>
+ <enum name="GL_TEXTURE18"/>
+ <enum name="GL_TEXTURE19"/>
+ <enum name="GL_TEXTURE20"/>
+ <enum name="GL_TEXTURE21"/>
+ <enum name="GL_TEXTURE22"/>
+ <enum name="GL_TEXTURE23"/>
+ <enum name="GL_TEXTURE24"/>
+ <enum name="GL_TEXTURE25"/>
+ <enum name="GL_TEXTURE26"/>
+ <enum name="GL_TEXTURE27"/>
+ <enum name="GL_TEXTURE28"/>
+ <enum name="GL_TEXTURE29"/>
+ <enum name="GL_TEXTURE30"/>
+ <enum name="GL_TEXTURE31"/>
+ </group>
+
+ <group name="TypeEnum">
+ <enum name="GL_QUERY_WAIT"/>
+ <enum name="GL_QUERY_NO_WAIT"/>
+ <enum name="GL_QUERY_BY_REGION_WAIT"/>
+ <enum name="GL_QUERY_BY_REGION_NO_WAIT"/>
+ </group>
+
+ <group name="FragmentOpATI">
+ <enum name="GL_MOV_ATI"/>
+ <enum name="GL_ADD_ATI"/>
+ <enum name="GL_MUL_ATI"/>
+ <enum name="GL_SUB_ATI"/>
+ <enum name="GL_DOT3_ATI"/>
+ <enum name="GL_DOT4_ATI"/>
+ <enum name="GL_MAD_ATI"/>
+ <enum name="GL_LERP_ATI"/>
+ <enum name="GL_CND_ATI"/>
+ <enum name="GL_CND0_ATI"/>
+ <enum name="GL_DOT2_ADD_ATI"/>
+ </group>
+
+ <group name="FramebufferStatus">
+ <enum name="GL_FRAMEBUFFER_COMPLETE"/>
+ <enum name="GL_FRAMEBUFFER_UNDEFINED"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"/>
+ <enum name="GL_FRAMEBUFFER_UNSUPPORTED"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"/>
+ </group>
+
+ <group name="GraphicsResetStatus">
+ <enum name="GL_NO_ERROR"/>
+ <enum name="GL_GUILTY_CONTEXT_RESET"/>
+ <enum name="GL_INNOCENT_CONTEXT_RESET"/>
+ <enum name="GL_UNKNOWN_CONTEXT_RESET"/>
+ </group>
+
+ <group name="SyncStatus">
+ <enum name="GL_ALREADY_SIGNALED"/>
+ <enum name="GL_TIMEOUT_EXPIRED"/>
+ <enum name="GL_CONDITION_SATISFIED"/>
+ <enum name="GL_WAIT_FAILED"/>
+ </group>
+
+ <group name="QueryTarget">
+ <enum name="GL_SAMPLES_PASSED"/>
+ <enum name="GL_ANY_SAMPLES_PASSED"/>
+ <enum name="GL_ANY_SAMPLES_PASSED_CONSERVATIVE"/>
+ <enum name="GL_PRIMITIVES_GENERATED"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"/>
+ <enum name="GL_TIME_ELAPSED"/>
+ </group>
+
+ <group name="ConvolutionTarget">
+ <enum name="GL_CONVOLUTION_1D"/>
+ <enum name="GL_CONVOLUTION_2D"/>
+ </group>
+
+ <group name="PathFillMode">
+ <enum name="GL_INVERT"/>
+ <enum name="GL_COUNT_UP_NV"/>
+ <enum name="GL_COUNT_DOWN_NV"/>
+ <enum name="GL_PATH_FILL_MODE_NV"/>
+ </group>
+
+ <group name="ColorTableTarget">
+ <enum name="GL_COLOR_TABLE"/>
+ <enum name="GL_POST_CONVOLUTION_COLOR_TABLE"/>
+ <enum name="GL_POST_COLOR_MATRIX_COLOR_TABLE"/>
+ </group>
+
+ <group name="VertexBufferObjectParameter">
+ <enum name="GL_BUFFER_ACCESS"/>
+ <enum name="GL_BUFFER_ACCESS_FLAGS"/>
+ <enum name="GL_BUFFER_IMMUTABLE_STORAGE"/>
+ <enum name="GL_BUFFER_MAPPED"/>
+ <enum name="GL_BUFFER_MAP_LENGTH"/>
+ <enum name="GL_BUFFER_MAP_OFFSET"/>
+ <enum name="GL_BUFFER_SIZE"/>
+ <enum name="GL_BUFFER_STORAGE_FLAGS"/>
+ <enum name="GL_BUFFER_USAGE"/>
+ </group>
+
+ <group name="RenderbufferParameterName">
+ <enum name="GL_RENDERBUFFER_WIDTH"/>
+ <enum name="GL_RENDERBUFFER_HEIGHT"/>
+ <enum name="GL_RENDERBUFFER_INTERNAL_FORMAT"/>
+ <enum name="GL_RENDERBUFFER_SAMPLES"/>
+ <enum name="GL_RENDERBUFFER_RED_SIZE"/>
+ <enum name="GL_RENDERBUFFER_GREEN_SIZE"/>
+ <enum name="GL_RENDERBUFFER_BLUE_SIZE"/>
+ <enum name="GL_RENDERBUFFER_ALPHA_SIZE"/>
+ <enum name="GL_RENDERBUFFER_DEPTH_SIZE"/>
+ <enum name="GL_RENDERBUFFER_STENCIL_SIZE"/>
+ </group>
+
+ <group name="VertexBufferObjectUsage">
+ <enum name="GL_STREAM_DRAW"/>
+ <enum name="GL_STREAM_READ"/>
+ <enum name="GL_STREAM_COPY"/>
+ <enum name="GL_STATIC_DRAW"/>
+ <enum name="GL_STATIC_READ"/>
+ <enum name="GL_STATIC_COPY"/>
+ <enum name="GL_DYNAMIC_DRAW"/>
+ <enum name="GL_DYNAMIC_READ"/>
+ <enum name="GL_DYNAMIC_COPY"/>
+ </group>
+
+ <group name="FramebufferParameterName">
+ <enum name="GL_FRAMEBUFFER_DEFAULT_WIDTH"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_HEIGHT"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_LAYERS"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_SAMPLES"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS"/>
+ </group>
+
+ <group name="ProgramParameterPName">
+ <enum name="GL_PROGRAM_BINARY_RETRIEVABLE_HINT"/>
+ <enum name="GL_PROGRAM_SEPARABLE"/>
+ </group>
+
+ <group name="BlendingFactor">
+ <enum name="GL_ZERO"/>
+ <enum name="GL_ONE"/>
+ <enum name="GL_SRC_COLOR"/>
+ <enum name="GL_ONE_MINUS_SRC_COLOR"/>
+ <enum name="GL_DST_COLOR"/>
+ <enum name="GL_ONE_MINUS_DST_COLOR"/>
+ <enum name="GL_SRC_ALPHA"/>
+ <enum name="GL_ONE_MINUS_SRC_ALPHA"/>
+ <enum name="GL_DST_ALPHA"/>
+ <enum name="GL_ONE_MINUS_DST_ALPHA"/>
+ <enum name="GL_CONSTANT_COLOR"/>
+ <enum name="GL_ONE_MINUS_CONSTANT_COLOR"/>
+ <enum name="GL_CONSTANT_ALPHA"/>
+ <enum name="GL_ONE_MINUS_CONSTANT_ALPHA"/>
+ <enum name="GL_SRC_ALPHA_SATURATE"/>
+ <enum name="GL_SRC1_COLOR"/>
+ <enum name="GL_ONE_MINUS_SRC1_COLOR"/>
+ <enum name="GL_SRC1_ALPHA"/>
+ <enum name="GL_ONE_MINUS_SRC1_ALPHA"/>
+ </group>
+
+ <group name="BindTransformFeedbackTarget">
+ <enum name="GL_TRANSFORM_FEEDBACK"/>
+ </group>
+
+ <group name="BlitFramebufferFilter">
+ <enum name="GL_NEAREST"/>
+ <enum name="GL_LINEAR"/>
+ </group>
+
+ <group name="BufferStorageTarget">
+ <enum name="GL_ARRAY_BUFFER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER"/>
+ <enum name="GL_COPY_READ_BUFFER"/>
+ <enum name="GL_COPY_WRITE_BUFFER"/>
+ <enum name="GL_DISPATCH_INDIRECT_BUFFER"/>
+ <enum name="GL_DRAW_INDIRECT_BUFFER"/>
+ <enum name="GL_ELEMENT_ARRAY_BUFFER"/>
+ <enum name="GL_PIXEL_PACK_BUFFER"/>
+ <enum name="GL_PIXEL_UNPACK_BUFFER"/>
+ <enum name="GL_QUERY_BUFFER"/>
+ <enum name="GL_SHADER_STORAGE_BUFFER"/>
+ <enum name="GL_TEXTURE_BUFFER"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER"/>
+ <enum name="GL_UNIFORM_BUFFER"/>
+ </group>
+
+ <group name="CheckFramebufferStatusTarget">
+ <enum name="GL_DRAW_FRAMEBUFFER"/>
+ <enum name="GL_READ_FRAMEBUFFER"/>
+ <enum name="GL_FRAMEBUFFER"/>
+ </group>
+
+ <group name="Buffer">
+ <enum name="GL_COLOR"/>
+ <enum name="GL_DEPTH"/>
+ <enum name="GL_STENCIL"/>
+ </group>
+
+ <group name="ClipControlOrigin">
+ <enum name="GL_LOWER_LEFT"/>
+ <enum name="GL_UPPER_LEFT"/>
+ </group>
+
+ <group name="ClipControlDepth">
+ <enum name="GL_NEGATIVE_ONE_TO_ONE"/>
+ <enum name="GL_ZERO_TO_ONE"/>
+ </group>
+
+ <group name="CopyBufferSubDataTarget">
+ <enum name="GL_ARRAY_BUFFER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER"/>
+ <enum name="GL_COPY_READ_BUFFER"/>
+ <enum name="GL_COPY_WRITE_BUFFER"/>
+ <enum name="GL_DISPATCH_INDIRECT_BUFFER"/>
+ <enum name="GL_DRAW_INDIRECT_BUFFER"/>
+ <enum name="GL_ELEMENT_ARRAY_BUFFER"/>
+ <enum name="GL_PIXEL_PACK_BUFFER"/>
+ <enum name="GL_PIXEL_UNPACK_BUFFER"/>
+ <enum name="GL_QUERY_BUFFER"/>
+ <enum name="GL_SHADER_STORAGE_BUFFER"/>
+ <enum name="GL_TEXTURE_BUFFER"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER"/>
+ <enum name="GL_UNIFORM_BUFFER"/>
+ </group>
+
+ <group name="ShaderType">
+ <enum name="GL_COMPUTE_SHADER"/>
+ <enum name="GL_VERTEX_SHADER"/>
+ <enum name="GL_TESS_CONTROL_SHADER"/>
+ <enum name="GL_TESS_EVALUATION_SHADER"/>
+ <enum name="GL_GEOMETRY_SHADER"/>
+ <enum name="GL_FRAGMENT_SHADER"/>
+ <enum name="GL_FRAGMENT_SHADER_ARB"/>
+ <enum name="GL_VERTEX_SHADER_ARB"/>
+ </group>
+
+ <group name="DebugSource">
+ <enum name="GL_DEBUG_SOURCE_API"/>
+ <enum name="GL_DEBUG_SOURCE_WINDOW_SYSTEM"/>
+ <enum name="GL_DEBUG_SOURCE_SHADER_COMPILER"/>
+ <enum name="GL_DEBUG_SOURCE_THIRD_PARTY"/>
+ <enum name="GL_DEBUG_SOURCE_APPLICATION"/>
+ <enum name="GL_DEBUG_SOURCE_OTHER"/>
+ <enum name="GL_DONT_CARE"/>
+ </group>
+
+ <group name="DebugType">
+ <enum name="GL_DEBUG_TYPE_ERROR"/>
+ <enum name="GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR"/>
+ <enum name="GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR"/>
+ <enum name="GL_DEBUG_TYPE_PORTABILITY"/>
+ <enum name="GL_DEBUG_TYPE_PERFORMANCE"/>
+ <enum name="GL_DEBUG_TYPE_MARKER"/>
+ <enum name="GL_DEBUG_TYPE_PUSH_GROUP"/>
+ <enum name="GL_DEBUG_TYPE_POP_GROUP"/>
+ <enum name="GL_DEBUG_TYPE_OTHER"/>
+ <enum name="GL_DONT_CARE"/>
+ </group>
+
+ <group name="DebugSeverity">
+ <enum name="GL_DEBUG_SEVERITY_LOW"/>
+ <enum name="GL_DEBUG_SEVERITY_MEDIUM"/>
+ <enum name="GL_DEBUG_SEVERITY_HIGH"/>
+ <enum name="GL_DONT_CARE"/>
+ </group>
+
+ <group name="SyncCondition">
+ <enum name="GL_SYNC_GPU_COMMANDS_COMPLETE"/>
+ </group>
+
+ <group name="FogPName">
+ <enum name="GL_FOG_MODE"/>
+ <enum name="GL_FOG_DENSITY"/>
+ <enum name="GL_FOG_START"/>
+ <enum name="GL_FOG_END"/>
+ <enum name="GL_FOG_INDEX"/>
+ <enum name="GL_FOG_COORD_SRC"/>
+ </group>
+
+ <group name="AtomicCounterBufferPName">
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_BINDING"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER"/>
+ <enum name="GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER"/>
+ </group>
+
+ <group name="UniformBlockPName">
+ <enum name="GL_UNIFORM_BLOCK_BINDING"/>
+ <enum name="GL_UNIFORM_BLOCK_DATA_SIZE"/>
+ <enum name="GL_UNIFORM_BLOCK_NAME_LENGTH"/>
+ <enum name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS"/>
+ <enum name="GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES"/>
+ <enum name="GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER"/>
+ <enum name="GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"/>
+ <enum name="GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"/>
+ <enum name="GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER"/>
+ <enum name="GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"/>
+ <enum name="GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER"/>
+ </group>
+
+ <group name="UniformPName">
+ <enum name="GL_UNIFORM_TYPE"/>
+ <enum name="GL_UNIFORM_SIZE"/>
+ <enum name="GL_UNIFORM_NAME_LENGTH"/>
+ <enum name="GL_UNIFORM_BLOCK_INDEX"/>
+ <enum name="GL_UNIFORM_OFFSET"/>
+ <enum name="GL_UNIFORM_ARRAY_STRIDE"/>
+ <enum name="GL_UNIFORM_MATRIX_STRIDE"/>
+ <enum name="GL_UNIFORM_IS_ROW_MAJOR"/>
+ <enum name="GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX"/>
+ </group>
+
+ <group name="SamplerParameterName">
+ <enum name="GL_TEXTURE_WRAP_S"/>
+ <enum name="GL_TEXTURE_WRAP_T"/>
+ <enum name="GL_TEXTURE_WRAP_R"/>
+ <enum name="GL_TEXTURE_MIN_FILTER"/>
+ <enum name="GL_TEXTURE_MAG_FILTER"/>
+ <enum name="GL_TEXTURE_BORDER_COLOR"/>
+ <enum name="GL_TEXTURE_MIN_LOD"/>
+ <enum name="GL_TEXTURE_MAX_LOD"/>
+ <enum name="GL_TEXTURE_COMPARE_MODE"/>
+ <enum name="GL_TEXTURE_COMPARE_FUNC"/>
+ </group>
+
+ <group name="VertexProvokingMode">
+ <enum name="GL_FIRST_VERTEX_CONVENTION"/>
+ <enum name="GL_LAST_VERTEX_CONVENTION"/>
+ </group>
+
+ <group name="PatchParameterName">
+ <enum name="GL_PATCH_VERTICES"/>
+ <enum name="GL_PATCH_DEFAULT_OUTER_LEVEL"/>
+ <enum name="GL_PATCH_DEFAULT_INNER_LEVEL"/>
+ </group>
+
+ <group name="ObjectIdentifier">
+ <enum name="GL_BUFFER"/>
+ <enum name="GL_SHADER"/>
+ <enum name="GL_PROGRAM"/>
+ <enum name="GL_VERTEX_ARRAY"/>
+ <enum name="GL_QUERY"/>
+ <enum name="GL_PROGRAM_PIPELINE"/>
+ <enum name="GL_TRANSFORM_FEEDBACK"/>
+ <enum name="GL_SAMPLER"/>
+ <enum name="GL_TEXTURE"/>
+ <enum name="GL_RENDERBUFFER"/>
+ <enum name="GL_FRAMEBUFFER"/>
+ </group>
+
+ <group name="ColorBuffer">
+ <enum name="GL_NONE"/>
+ <enum name="GL_FRONT_LEFT"/>
+ <enum name="GL_FRONT_RIGHT"/>
+ <enum name="GL_BACK_LEFT"/>
+ <enum name="GL_BACK_RIGHT"/>
+ <enum name="GL_FRONT"/>
+ <enum name="GL_BACK"/>
+ <enum name="GL_LEFT"/>
+ <enum name="GL_RIGHT"/>
+ <enum name="GL_FRONT_AND_BACK"/>
+ <enum name="GL_NONE"/>
+ <enum name="GL_COLOR_ATTACHMENT0"/>
+ <enum name="GL_COLOR_ATTACHMENT1"/>
+ <enum name="GL_COLOR_ATTACHMENT2"/>
+ <enum name="GL_COLOR_ATTACHMENT3"/>
+ <enum name="GL_COLOR_ATTACHMENT4"/>
+ <enum name="GL_COLOR_ATTACHMENT5"/>
+ <enum name="GL_COLOR_ATTACHMENT6"/>
+ <enum name="GL_COLOR_ATTACHMENT7"/>
+ <enum name="GL_COLOR_ATTACHMENT8"/>
+ <enum name="GL_COLOR_ATTACHMENT9"/>
+ <enum name="GL_COLOR_ATTACHMENT10"/>
+ <enum name="GL_COLOR_ATTACHMENT11"/>
+ <enum name="GL_COLOR_ATTACHMENT12"/>
+ <enum name="GL_COLOR_ATTACHMENT13"/>
+ <enum name="GL_COLOR_ATTACHMENT14"/>
+ <enum name="GL_COLOR_ATTACHMENT15"/>
+ <enum name="GL_COLOR_ATTACHMENT16"/>
+ <enum name="GL_COLOR_ATTACHMENT17"/>
+ <enum name="GL_COLOR_ATTACHMENT18"/>
+ <enum name="GL_COLOR_ATTACHMENT19"/>
+ <enum name="GL_COLOR_ATTACHMENT20"/>
+ <enum name="GL_COLOR_ATTACHMENT21"/>
+ <enum name="GL_COLOR_ATTACHMENT22"/>
+ <enum name="GL_COLOR_ATTACHMENT23"/>
+ <enum name="GL_COLOR_ATTACHMENT24"/>
+ <enum name="GL_COLOR_ATTACHMENT25"/>
+ <enum name="GL_COLOR_ATTACHMENT26"/>
+ <enum name="GL_COLOR_ATTACHMENT27"/>
+ <enum name="GL_COLOR_ATTACHMENT28"/>
+ <enum name="GL_COLOR_ATTACHMENT29"/>
+ <enum name="GL_COLOR_ATTACHMENT30"/>
+ <enum name="GL_COLOR_ATTACHMENT31"/>
+ </group>
+
+ <group name="MapQuery">
+ <enum name="GL_COEFF"/>
+ <enum name="GL_ORDER"/>
+ <enum name="GL_DOMAIN"/>
+ </group>
+
+ <group name="VertexArrayPName">
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_SIZE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_TYPE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_INTEGER"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_LONG"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_DIVISOR"/>
+ <enum name="GL_VERTEX_ATTRIB_RELATIVE_OFFSET"/>
+ </group>
+
+ <group name="TransformFeedbackPName">
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER_BINDING"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER_START"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER_SIZE"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_PAUSED"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_ACTIVE"/>
+ </group>
+
+ <group name="SyncParameterName">
+ <enum name="GL_OBJECT_TYPE"/>
+ <enum name="GL_SYNC_STATUS"/>
+ <enum name="GL_SYNC_CONDITION"/>
+ <enum name="GL_SYNC_FLAGS"/>
+ </group>
+
+ <group name="ShaderParameterName">
+ <enum name="GL_SHADER_TYPE"/>
+ <enum name="GL_DELETE_STATUS"/>
+ <enum name="GL_COMPILE_STATUS"/>
+ <enum name="GL_INFO_LOG_LENGTH"/>
+ <enum name="GL_SHADER_SOURCE_LENGTH"/>
+ </group>
+
+ <group name="QueryObjectParameterName">
+ <enum name="GL_QUERY_RESULT_AVAILABLE"/>
+ <enum name="GL_QUERY_RESULT"/>
+ <enum name="GL_QUERY_RESULT_NO_WAIT"/>
+ <enum name="GL_QUERY_TARGET"/>
+ </group>
+
+ <group name="QueryParameterName">
+ <enum name="GL_CURRENT_QUERY"/>
+ <enum name="GL_QUERY_COUNTER_BITS"/>
+ </group>
+
+ <group name="ProgramStagePName">
+ <enum name="GL_ACTIVE_SUBROUTINE_UNIFORMS"/>
+ <enum name="GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS"/>
+ <enum name="GL_ACTIVE_SUBROUTINES"/>
+ <enum name="GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH"/>
+ <enum name="GL_ACTIVE_SUBROUTINE_MAX_LENGTH"/>
+ </group>
+
+ <group name="PipelineParameterName">
+ <enum name="GL_ACTIVE_PROGRAM"/>
+ <enum name="GL_VERTEX_SHADER"/>
+ <enum name="GL_TESS_CONTROL_SHADER"/>
+ <enum name="GL_TESS_EVALUATION_SHADER"/>
+ <enum name="GL_GEOMETRY_SHADER"/>
+ <enum name="GL_FRAGMENT_SHADER"/>
+ <enum name="GL_INFO_LOG_LENGTH"/>
+ </group>
+
+ <group name="ProgramInterface">
+ <enum name="GL_UNIFORM"/>
+ <enum name="GL_UNIFORM_BLOCK"/>
+ <enum name="GL_PROGRAM_INPUT"/>
+ <enum name="GL_PROGRAM_OUTPUT"/>
+ <enum name="GL_VERTEX_SUBROUTINE"/>
+ <enum name="GL_TESS_CONTROL_SUBROUTINE"/>
+ <enum name="GL_TESS_EVALUATION_SUBROUTINE"/>
+ <enum name="GL_GEOMETRY_SUBROUTINE"/>
+ <enum name="GL_FRAGMENT_SUBROUTINE"/>
+ <enum name="GL_COMPUTE_SUBROUTINE"/>
+ <enum name="GL_VERTEX_SUBROUTINE_UNIFORM"/>
+ <enum name="GL_TESS_CONTROL_SUBROUTINE_UNIFORM"/>
+ <enum name="GL_TESS_EVALUATION_SUBROUTINE_UNIFORM"/>
+ <enum name="GL_GEOMETRY_SUBROUTINE_UNIFORM"/>
+ <enum name="GL_FRAGMENT_SUBROUTINE_UNIFORM"/>
+ <enum name="GL_COMPUTE_SUBROUTINE_UNIFORM"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_VARYING"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER"/>
+ <enum name="GL_BUFFER_VARIABLE"/>
+ <enum name="GL_SHADER_STORAGE_BLOCK"/>
+ </group>
+
+ <group name="VertexAttribEnum">
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_SIZE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_TYPE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_INTEGER"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_DIVISOR"/>
+ <enum name="GL_CURRENT_VERTEX_ATTRIB"/>
+ </group>
+
+ <group name="VertexAttribType">
+ <enum name="GL_BYTE"/>
+ <enum name="GL_SHORT"/>
+ <enum name="GL_INT"/>
+ <enum name="GL_FIXED"/>
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_HALF_FLOAT"/>
+ <enum name="GL_DOUBLE"/>
+ <enum name="GL_UNSIGNED_BYTE"/>
+ <enum name="GL_UNSIGNED_SHORT"/>
+ <enum name="GL_UNSIGNED_INT"/>
+ <enum name="GL_INT_2_10_10_10_REV"/>
+ <enum name="GL_UNSIGNED_INT_2_10_10_10_REV"/>
+ <enum name="GL_UNSIGNED_INT_10F_11F_11F_REV"/>
+ </group>
+
+ <group name="AttributeType">
+ <enum name="GL_FLOAT_VEC2"/>
+ <enum name="GL_FLOAT_VEC2_ARB"/>
+ <enum name="GL_FLOAT_VEC3"/>
+ <enum name="GL_FLOAT_VEC3_ARB"/>
+ <enum name="GL_FLOAT_VEC4"/>
+ <enum name="GL_FLOAT_VEC4_ARB"/>
+ <enum name="GL_INT_VEC2"/>
+ <enum name="GL_INT_VEC2_ARB"/>
+ <enum name="GL_INT_VEC3"/>
+ <enum name="GL_INT_VEC3_ARB"/>
+ <enum name="GL_INT_VEC4"/>
+ <enum name="GL_INT_VEC4_ARB"/>
+ <enum name="GL_BOOL"/>
+ <enum name="GL_BOOL_ARB"/>
+ <enum name="GL_BOOL_VEC2"/>
+ <enum name="GL_BOOL_VEC2_ARB"/>
+ <enum name="GL_BOOL_VEC3"/>
+ <enum name="GL_BOOL_VEC3_ARB"/>
+ <enum name="GL_BOOL_VEC4"/>
+ <enum name="GL_BOOL_VEC4_ARB"/>
+ <enum name="GL_FLOAT_MAT2"/>
+ <enum name="GL_FLOAT_MAT2_ARB"/>
+ <enum name="GL_FLOAT_MAT3"/>
+ <enum name="GL_FLOAT_MAT3_ARB"/>
+ <enum name="GL_FLOAT_MAT4"/>
+ <enum name="GL_FLOAT_MAT4_ARB"/>
+ <enum name="GL_SAMPLER_1D"/>
+ <enum name="GL_SAMPLER_1D_ARB"/>
+ <enum name="GL_SAMPLER_2D"/>
+ <enum name="GL_SAMPLER_2D_ARB"/>
+ <enum name="GL_SAMPLER_3D"/>
+ <enum name="GL_SAMPLER_3D_ARB"/>
+ <enum name="GL_SAMPLER_3D_OES"/>
+ <enum name="GL_SAMPLER_CUBE"/>
+ <enum name="GL_SAMPLER_CUBE_ARB"/>
+ <enum name="GL_SAMPLER_1D_SHADOW"/>
+ <enum name="GL_SAMPLER_1D_SHADOW_ARB"/>
+ <enum name="GL_SAMPLER_2D_SHADOW"/>
+ <enum name="GL_SAMPLER_2D_SHADOW_ARB"/>
+ <enum name="GL_SAMPLER_2D_SHADOW_EXT"/>
+ <enum name="GL_SAMPLER_2D_RECT"/>
+ <enum name="GL_SAMPLER_2D_RECT_ARB"/>
+ <enum name="GL_SAMPLER_2D_RECT_SHADOW"/>
+ <enum name="GL_SAMPLER_2D_RECT_SHADOW_ARB"/>
+ <enum name="GL_FLOAT_MAT2x3"/>
+ <enum name="GL_FLOAT_MAT2x3_NV"/>
+ <enum name="GL_FLOAT_MAT2x4"/>
+ <enum name="GL_FLOAT_MAT2x4_NV"/>
+ <enum name="GL_FLOAT_MAT3x2"/>
+ <enum name="GL_FLOAT_MAT3x2_NV"/>
+ <enum name="GL_FLOAT_MAT3x4"/>
+ <enum name="GL_FLOAT_MAT3x4_NV"/>
+ <enum name="GL_FLOAT_MAT4x2"/>
+ <enum name="GL_FLOAT_MAT4x2_NV"/>
+ <enum name="GL_FLOAT_MAT4x3"/>
+ <enum name="GL_FLOAT_MAT4x3_NV"/>
+ </group>
+
+ <group name="InternalFormatPName">
+ <enum name="GL_NUM_SAMPLE_COUNTS"/>
+ <enum name="GL_SAMPLES"/>
+ <enum name="GL_INTERNALFORMAT_SUPPORTED"/>
+ <enum name="GL_INTERNALFORMAT_PREFERRED"/>
+ <enum name="GL_INTERNALFORMAT_RED_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_GREEN_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_BLUE_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_ALPHA_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_DEPTH_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_STENCIL_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_SHARED_SIZE"/>
+ <enum name="GL_INTERNALFORMAT_RED_TYPE"/>
+ <enum name="GL_INTERNALFORMAT_GREEN_TYPE"/>
+ <enum name="GL_INTERNALFORMAT_BLUE_TYPE"/>
+ <enum name="GL_INTERNALFORMAT_ALPHA_TYPE"/>
+ <enum name="GL_INTERNALFORMAT_DEPTH_TYPE"/>
+ <enum name="GL_INTERNALFORMAT_STENCIL_TYPE"/>
+ <enum name="GL_MAX_WIDTH"/>
+ <enum name="GL_MAX_HEIGHT"/>
+ <enum name="GL_MAX_DEPTH"/>
+ <enum name="GL_MAX_LAYERS"/>
+ <enum name="GL_COLOR_COMPONENTS"/>
+ <enum name="GL_COLOR_RENDERABLE"/>
+ <enum name="GL_DEPTH_RENDERABLE"/>
+ <enum name="GL_STENCIL_RENDERABLE"/>
+ <enum name="GL_FRAMEBUFFER_RENDERABLE"/>
+ <enum name="GL_FRAMEBUFFER_RENDERABLE_LAYERED"/>
+ <enum name="GL_FRAMEBUFFER_BLEND"/>
+ <enum name="GL_READ_PIXELS"/>
+ <enum name="GL_READ_PIXELS_FORMAT"/>
+ <enum name="GL_READ_PIXELS_TYPE"/>
+ <enum name="GL_TEXTURE_IMAGE_FORMAT"/>
+ <enum name="GL_TEXTURE_IMAGE_TYPE"/>
+ <enum name="GL_GET_TEXTURE_IMAGE_FORMAT"/>
+ <enum name="GL_GET_TEXTURE_IMAGE_TYPE"/>
+ <enum name="GL_MIPMAP"/>
+ <enum name="GL_GENERATE_MIPMAP"/>
+ <enum name="GL_AUTO_GENERATE_MIPMAP"/>
+ <enum name="GL_COLOR_ENCODING"/>
+ <enum name="GL_SRGB_READ"/>
+ <enum name="GL_SRGB_WRITE"/>
+ <enum name="GL_FILTER"/>
+ <enum name="GL_VERTEX_TEXTURE"/>
+ <enum name="GL_TESS_CONTROL_TEXTURE"/>
+ <enum name="GL_TESS_EVALUATION_TEXTURE"/>
+ <enum name="GL_GEOMETRY_TEXTURE"/>
+ <enum name="GL_FRAGMENT_TEXTURE"/>
+ <enum name="GL_COMPUTE_TEXTURE"/>
+ <enum name="GL_TEXTURE_SHADOW"/>
+ <enum name="GL_TEXTURE_GATHER"/>
+ <enum name="GL_TEXTURE_GATHER_SHADOW"/>
+ <enum name="GL_SHADER_IMAGE_LOAD"/>
+ <enum name="GL_SHADER_IMAGE_STORE"/>
+ <enum name="GL_SHADER_IMAGE_ATOMIC"/>
+ <enum name="GL_IMAGE_TEXEL_SIZE"/>
+ <enum name="GL_IMAGE_COMPATIBILITY_CLASS"/>
+ <enum name="GL_IMAGE_PIXEL_FORMAT"/>
+ <enum name="GL_IMAGE_PIXEL_TYPE"/>
+ <enum name="GL_IMAGE_FORMAT_COMPATIBILITY_TYPE"/>
+ <enum name="GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST"/>
+ <enum name="GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST"/>
+ <enum name="GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE"/>
+ <enum name="GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE"/>
+ <enum name="GL_TEXTURE_COMPRESSED"/>
+ <enum name="GL_TEXTURE_COMPRESSED_BLOCK_WIDTH"/>
+ <enum name="GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT"/>
+ <enum name="GL_TEXTURE_COMPRESSED_BLOCK_SIZE"/>
+ <enum name="GL_CLEAR_BUFFER"/>
+ <enum name="GL_TEXTURE_VIEW"/>
+ <enum name="GL_VIEW_COMPATIBILITY_CLASS"/>
+ <enum name="GL_CLEAR_TEXTURE"/>
+ </group>
+
+ <group name="FramebufferAttachmentParameterName">
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_LAYERED"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"/>
+ </group>
+
+ <group name="ProgramInterfacePName">
+ <enum name="GL_ACTIVE_RESOURCES"/>
+ <enum name="GL_MAX_NAME_LENGTH"/>
+ <enum name="GL_MAX_NUM_ACTIVE_VARIABLES"/>
+ <enum name="GL_MAX_NUM_COMPATIBLE_SUBROUTINES"/>
+ </group>
+
+ <group name="PrecisionType">
+ <enum name="GL_LOW_FLOAT"/>
+ <enum name="GL_MEDIUM_FLOAT"/>
+ <enum name="GL_HIGH_FLOAT"/>
+ <enum name="GL_LOW_INT"/>
+ <enum name="GL_MEDIUM_INT"/>
+ <enum name="GL_HIGH_INT"/>
+ </group>
+
+ <group name="VertexAttribPointerType">
+ <enum name="GL_BYTE"/>
+ <enum name="GL_UNSIGNED_BYTE"/>
+ <enum name="GL_SHORT"/>
+ <enum name="GL_UNSIGNED_SHORT"/>
+ <enum name="GL_INT"/>
+ <enum name="GL_UNSIGNED_INT"/>
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_DOUBLE"/>
+ <enum name="GL_HALF_FLOAT"/>
+ <enum name="GL_FIXED"/>
+ <enum name="GL_INT_2_10_10_10_REV"/>
+ <enum name="GL_UNSIGNED_INT_2_10_10_10_REV"/>
+ <enum name="GL_UNSIGNED_INT_10F_11F_11F_REV"/>
+ </group>
+
+ <group name="SubroutineParameterName">
+ <enum name="GL_NUM_COMPATIBLE_SUBROUTINES"/>
+ <enum name="GL_COMPATIBLE_SUBROUTINES"/>
+ <enum name="GL_UNIFORM_SIZE"/>
+ <enum name="GL_UNIFORM_NAME_LENGTH"/>
+ </group>
+
+ <group name="GetFramebufferParameter">
+ <enum name="GL_FRAMEBUFFER_DEFAULT_WIDTH"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_HEIGHT"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_LAYERS"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_SAMPLES"/>
+ <enum name="GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS"/>
+ <enum name="GL_DOUBLEBUFFER"/>
+ <enum name="GL_IMPLEMENTATION_COLOR_READ_FORMAT"/>
+ <enum name="GL_IMPLEMENTATION_COLOR_READ_TYPE"/>
+ <enum name="GL_SAMPLES"/>
+ <enum name="GL_SAMPLE_BUFFERS"/>
+ <enum name="GL_STEREO"/>
+ </group>
+
+ <group name="PathStringFormat">
+ <enum name="GL_PATH_FORMAT_SVG_NV" />
+ <enum name="GL_PATH_FORMAT_PS_NV" />
+ </group>
+
+ <group name="PathFontTarget">
+ <enum name="GL_STANDARD_FONT_NAME_NV" />
+ <enum name="GL_SYSTEM_FONT_NAME_NV" />
+ <enum name="GL_FILE_NAME_NV" />
+ </group>
+
+ <group name="PathHandleMissingGlyphs">
+ <enum name="GL_SKIP_MISSING_GLYPH_NV" />
+ <enum name="GL_USE_MISSING_GLYPH_NV" />
+ </group>
+
+ <group name="PathParameter">
+ <enum name="GL_PATH_STROKE_WIDTH_NV" />
+ <enum name="GL_PATH_INITIAL_END_CAP_NV" />
+ <enum name="GL_PATH_TERMINAL_END_CAP_NV" />
+ <enum name="GL_PATH_JOIN_STYLE_NV" />
+ <enum name="GL_PATH_MITER_LIMIT_NV" />
+ <enum name="GL_PATH_INITIAL_DASH_CAP_NV" />
+ <enum name="GL_PATH_TERMINAL_DASH_CAP_NV" />
+ <enum name="GL_PATH_DASH_OFFSET_NV" />
+ <enum name="GL_PATH_CLIENT_LENGTH_NV" />
+ <enum name="GL_PATH_DASH_OFFSET_RESET_NV" />
+ <enum name="GL_PATH_FILL_MODE_NV" />
+ <enum name="GL_PATH_FILL_MASK_NV" />
+ <enum name="GL_PATH_FILL_COVER_MODE_NV" />
+ <enum name="GL_PATH_STROKE_COVER_MODE_NV" />
+ <enum name="GL_PATH_STROKE_MASK_NV" />
+ <!-- <enum name="GL_PATH_STROKE_BOUND_NV" comment="Removed from extension"/> -->
+ <enum name="GL_PATH_END_CAPS_NV" />
+ <enum name="GL_PATH_DASH_CAPS_NV" />
+ <enum name="GL_PATH_COMMAND_COUNT_NV" />
+ <enum name="GL_PATH_COORD_COUNT_NV" />
+ <enum name="GL_PATH_DASH_ARRAY_COUNT_NV" />
+ <enum name="GL_PATH_COMPUTED_LENGTH_NV" />
+ <enum name="GL_PATH_OBJECT_BOUNDING_BOX_NV" />
+ <enum name="GL_PATH_FILL_BOUNDING_BOX_NV" />
+ <enum name="GL_PATH_STROKE_BOUNDING_BOX_NV" />
+ </group>
+
+ <group name="PathColor">
+ <enum name="GL_PRIMARY_COLOR" />
+ <enum name="GL_PRIMARY_COLOR_NV" />
+ <enum name="GL_SECONDARY_COLOR_NV" />
+ </group>
+
+ <group name="PathGenMode">
+ <enum name="GL_NONE" />
+ <enum name="GL_EYE_LINEAR" />
+ <enum name="GL_OBJECT_LINEAR" />
+ <enum name="GL_PATH_OBJECT_BOUNDING_BOX_NV" />
+ <enum name="GL_CONSTANT" />
+ </group>
+
+ <group name="TextureLayout">
+ <enum name="GL_LAYOUT_GENERAL_EXT"/>
+ <enum name="GL_LAYOUT_COLOR_ATTACHMENT_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT"/>
+ <enum name="GL_LAYOUT_SHADER_READ_ONLY_EXT"/>
+ <enum name="GL_LAYOUT_TRANSFER_SRC_EXT"/>
+ <enum name="GL_LAYOUT_TRANSFER_DST_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT"/>
+ </group>
+
+ <group name="PathTransformType">
+ <enum name="GL_NONE" />
+ <enum name="GL_TRANSLATE_X_NV" />
+ <enum name="GL_TRANSLATE_Y_NV" />
+ <enum name="GL_TRANSLATE_2D_NV" />
+ <enum name="GL_TRANSLATE_3D_NV" />
+ <enum name="GL_AFFINE_2D_NV" />
+ <enum name="GL_AFFINE_3D_NV" />
+ <enum name="GL_TRANSPOSE_AFFINE_2D_NV" />
+ <enum name="GL_TRANSPOSE_AFFINE_3D_NV" />
+ </group>
+
+ <group name="PathElementType">
+ <enum name="GL_UTF8_NV" />
+ <enum name="GL_UTF16_NV" />
+ </group>
+
+ <group name="PathCoverMode">
+ <enum name="GL_CONVEX_HULL_NV" />
+ <enum name="GL_BOUNDING_BOX_NV" />
+ <enum name="GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV" />
+ <enum name="GL_PATH_FILL_COVER_MODE_NV" />
+ </group>
+
+ <group name="PathFontStyle">
+ <enum name="GL_NONE" />
+ <enum name="GL_BOLD_BIT_NV" />
+ <enum name="GL_ITALIC_BIT_NV" />
+ </group>
+
+ <group name="PathMetricMask">
+ <enum name="GL_GLYPH_WIDTH_BIT_NV" />
+ <enum name="GL_GLYPH_HEIGHT_BIT_NV" />
+ <enum name="GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV" />
+ <enum name="GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV" />
+ <enum name="GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV" />
+ <enum name="GL_GLYPH_VERTICAL_BEARING_X_BIT_NV" />
+ <enum name="GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV" />
+ <enum name="GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV" />
+ <enum name="GL_GLYPH_HAS_KERNING_BIT_NV" />
+ <enum name="GL_FONT_X_MIN_BOUNDS_BIT_NV" />
+ <enum name="GL_FONT_Y_MIN_BOUNDS_BIT_NV" />
+ <enum name="GL_FONT_X_MAX_BOUNDS_BIT_NV" />
+ <enum name="GL_FONT_Y_MAX_BOUNDS_BIT_NV" />
+ <enum name="GL_FONT_UNITS_PER_EM_BIT_NV" />
+ <enum name="GL_FONT_ASCENDER_BIT_NV" />
+ <enum name="GL_FONT_DESCENDER_BIT_NV" />
+ <enum name="GL_FONT_HEIGHT_BIT_NV" />
+ <enum name="GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV" />
+ <enum name="GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV" />
+ <enum name="GL_FONT_UNDERLINE_POSITION_BIT_NV" />
+ <enum name="GL_FONT_UNDERLINE_THICKNESS_BIT_NV" />
+ <enum name="GL_FONT_HAS_KERNING_BIT_NV" />
+ <enum name="GL_FONT_NUM_GLYPH_INDICES_BIT_NV" />
+ </group>
+
+ <group name="PathListMode">
+ <enum name="GL_ACCUM_ADJACENT_PAIRS_NV" />
+ <enum name="GL_ADJACENT_PAIRS_NV" />
+ <enum name="GL_FIRST_TO_REST_NV" />
+ </group>
+
+ <group name="ProgramPropertyARB">
+ <enum name="GL_DELETE_STATUS" />
+ <enum name="GL_LINK_STATUS" />
+ <enum name="GL_VALIDATE_STATUS" />
+ <enum name="GL_INFO_LOG_LENGTH" />
+ <enum name="GL_ATTACHED_SHADERS" />
+ <enum name="GL_ACTIVE_ATOMIC_COUNTER_BUFFERS" />
+ <enum name="GL_ACTIVE_ATTRIBUTES" />
+ <enum name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH" />
+ <enum name="GL_ACTIVE_UNIFORMS" />
+ <enum name="GL_ACTIVE_UNIFORM_BLOCKS" />
+ <enum name="GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH" />
+ <enum name="GL_ACTIVE_UNIFORM_MAX_LENGTH" />
+ <enum name="GL_COMPUTE_WORK_GROUP_SIZE" />
+ <enum name="GL_PROGRAM_BINARY_LENGTH" />
+ <enum name="GL_TRANSFORM_FEEDBACK_BUFFER_MODE" />
+ <enum name="GL_TRANSFORM_FEEDBACK_VARYINGS" />
+ <enum name="GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH" />
+ <enum name="GL_GEOMETRY_VERTICES_OUT" />
+ <enum name="GL_GEOMETRY_INPUT_TYPE" />
+ <enum name="GL_GEOMETRY_OUTPUT_TYPE" />
+ </group>
</groups>
<!-- SECTION: GL enumerant (token) definitions. -->
@@ -2043,6 +3419,10 @@
<enum value="0xFFFFFFFF" name="GL_ALL_ATTRIB_BITS" comment="Guaranteed to mark all attribute groups at once"/>
</enums>
+ <enums namespace="GL" group="BufferAccessMask" type="bitmask" comment="GL_MAP_{COHERENT,FLUSH_EXPLICIT,INVALIDATE_BUFFER,INVALIDATE_RANGE,PERSISTENT,READ,UNSYNCHRONIZED,WRITE}_{BIT,BIT_EXT} also lie in this namespace">
+ <!-- Also used: 0x000000ff for bits reused from MapBufferUsageMask below -->
+ </enums>
+
<enums namespace="GL" group="ClearBufferMask" type="bitmask" comment="GL_{DEPTH,ACCUM,STENCIL,COLOR}_BUFFER_BIT also lie in this namespace">
<enum value="0x00008000" name="GL_COVERAGE_BUFFER_BIT_NV" comment="Collides with AttribMask bit GL_HINT_BIT. OK since this token is for OpenGL ES 2, which doesn't have attribute groups."/>
<!-- Also used: 0x00004700 for bits reused from AttribMask above -->
@@ -2060,7 +3440,9 @@
<enum value="0x00000002" name="GL_CONTEXT_FLAG_DEBUG_BIT_KHR"/>
<enum value="0x00000004" name="GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT"/>
<enum value="0x00000004" name="GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB"/>
- <enum value="0x00000008" name="GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR"/>
+ <enum value="0x00000008" name="GL_CONTEXT_FLAG_NO_ERROR_BIT"/>
+ <enum value="0x00000008" name="GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR" alias="GL_CONTEXT_FLAG_NO_ERROR_BIT"/>
+ <enum value="0x00000010" name="GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT"/>
</enums>
<enums namespace="GL" group="ContextProfileMask" type="bitmask">
@@ -2090,6 +3472,10 @@
<enum value="0x0200" name="GL_CLIENT_STORAGE_BIT"/>
<enum value="0x0200" name="GL_CLIENT_STORAGE_BIT_EXT"/>
<enum value="0x0400" name="GL_SPARSE_STORAGE_BIT_ARB"/>
+ <enum value="0x0800" name="GL_LGPU_SEPARATE_STORAGE_BIT_NVX"/>
+ <enum value="0x0800" name="GL_PER_GPU_STORAGE_BIT_NV"/>
+ <unused start="0x1000" end="0x1000" comment="Reserved for NVIDIA"/>
+ <enum value="0x2000" name="GL_EXTERNAL_STORAGE_BIT_NVX"/>
</enums>
<enums namespace="GL" group="MemoryBarrierMask" type="bitmask">
@@ -2126,7 +3512,7 @@
<enum value="0xFFFFFFFF" name="GL_ALL_BARRIER_BITS_EXT"/>
</enums>
- <enums namespace="OcclusionQueryEventMaskAMD">
+ <enums namespace="GL" group="OcclusionQueryEventMaskAMD" type="bitmask">
<enum value="0x00000001" name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/>
<enum value="0x00000002" name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/>
<enum value="0x00000004" name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/>
@@ -2286,11 +3672,17 @@
<enum value="0x80000000" name="GL_MULTISAMPLE_BUFFER_BIT7_QCOM"/>
</enums>
+ <enums namespace="GL" group="FoveationConfigBitQCOM" type="bitmask">
+ <enum value="0x00000001" name="GL_FOVEATION_ENABLE_BIT_QCOM"/>
+ <enum value="0x00000002" name="GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM"/>
+ </enums>
+
<enums namespace="GL" group="FfdMaskSGIX" type="bitmask">
<enum value="0x00000001" name="GL_TEXTURE_DEFORMATION_BIT_SGIX"/>
<enum value="0x00000002" name="GL_GEOMETRY_DEFORMATION_BIT_SGIX"/>
</enums>
+
<!-- Non-bitmask enums with their own namespace. Generally small numbers
used for indexed access. -->
@@ -2404,11 +3796,14 @@
<enum value="1" name="GL_TRUE"/>
<enum value="1" name="GL_ONE"/>
<enum value="0xFFFFFFFF" name="GL_INVALID_INDEX" type="u" comment="Tagged as uint"/>
+ <enum value="0xFFFFFFFF" name="GL_ALL_PIXELS_AMD"/>
<enum value="0xFFFFFFFFFFFFFFFF" name="GL_TIMEOUT_IGNORED" type="ull" comment="Tagged as uint64"/>
<enum value="0xFFFFFFFFFFFFFFFF" name="GL_TIMEOUT_IGNORED_APPLE" type="ull" comment="Tagged as uint64"/>
<enum value="1" name="GL_VERSION_ES_CL_1_0" comment="Not an API enum. API definition macro for ES 1.0/1.1 headers"/>
<enum value="1" name="GL_VERSION_ES_CM_1_1" comment="Not an API enum. API definition macro for ES 1.0/1.1 headers"/>
<enum value="1" name="GL_VERSION_ES_CL_1_1" comment="Not an API enum. API definition macro for ES 1.0/1.1 headers"/>
+ <enum value="16" name="GL_UUID_SIZE_EXT"/>
+ <enum value="8" name="GL_LUID_SIZE_EXT"/>
</enums>
<enums namespace="GL" start="0x0000" end="0x7FFF" vendor="ARB" comment="Mostly OpenGL 1.0/1.1 enum assignments. Unused ranges should generally remain unused.">
@@ -2731,6 +4126,7 @@
<enum value="0x0D32" name="GL_MAX_CLIP_PLANES"/>
<enum value="0x0D32" name="GL_MAX_CLIP_PLANES_IMG"/>
<enum value="0x0D32" name="GL_MAX_CLIP_DISTANCES" alias="GL_MAX_CLIP_PLANES"/>
+ <enum value="0x0D32" name="GL_MAX_CLIP_DISTANCES_EXT" alias="GL_MAX_CLIP_PLANES"/>
<enum value="0x0D32" name="GL_MAX_CLIP_DISTANCES_APPLE"/>
<enum value="0x0D33" name="GL_MAX_TEXTURE_SIZE"/>
<enum value="0x0D34" name="GL_MAX_PIXEL_MAP_TABLE"/>
@@ -2998,30 +4394,38 @@
<enum value="0x3000" name="GL_CLIP_PLANE0"/>
<enum value="0x3000" name="GL_CLIP_PLANE0_IMG"/>
<enum value="0x3000" name="GL_CLIP_DISTANCE0" alias="GL_CLIP_PLANE0"/>
+ <enum value="0x3000" name="GL_CLIP_DISTANCE0_EXT" alias="GL_CLIP_PLANE0"/>
<enum value="0x3000" name="GL_CLIP_DISTANCE0_APPLE"/>
<enum value="0x3001" name="GL_CLIP_PLANE1"/>
<enum value="0x3001" name="GL_CLIP_PLANE1_IMG"/>
<enum value="0x3001" name="GL_CLIP_DISTANCE1" alias="GL_CLIP_PLANE1"/>
+ <enum value="0x3001" name="GL_CLIP_DISTANCE1_EXT" alias="GL_CLIP_PLANE1"/>
<enum value="0x3001" name="GL_CLIP_DISTANCE1_APPLE"/>
<enum value="0x3002" name="GL_CLIP_PLANE2"/>
<enum value="0x3002" name="GL_CLIP_PLANE2_IMG"/>
<enum value="0x3002" name="GL_CLIP_DISTANCE2" alias="GL_CLIP_PLANE2"/>
+ <enum value="0x3002" name="GL_CLIP_DISTANCE2_EXT" alias="GL_CLIP_PLANE2"/>
<enum value="0x3002" name="GL_CLIP_DISTANCE2_APPLE"/>
<enum value="0x3003" name="GL_CLIP_PLANE3"/>
<enum value="0x3003" name="GL_CLIP_PLANE3_IMG"/>
<enum value="0x3003" name="GL_CLIP_DISTANCE3" alias="GL_CLIP_PLANE3"/>
+ <enum value="0x3003" name="GL_CLIP_DISTANCE3_EXT" alias="GL_CLIP_PLANE3"/>
<enum value="0x3003" name="GL_CLIP_DISTANCE3_APPLE"/>
<enum value="0x3004" name="GL_CLIP_PLANE4"/>
<enum value="0x3004" name="GL_CLIP_PLANE4_IMG"/>
<enum value="0x3004" name="GL_CLIP_DISTANCE4" alias="GL_CLIP_PLANE4"/>
+ <enum value="0x3004" name="GL_CLIP_DISTANCE4_EXT" alias="GL_CLIP_PLANE4"/>
<enum value="0x3004" name="GL_CLIP_DISTANCE4_APPLE"/>
<enum value="0x3005" name="GL_CLIP_PLANE5"/>
<enum value="0x3005" name="GL_CLIP_PLANE5_IMG"/>
<enum value="0x3005" name="GL_CLIP_DISTANCE5" alias="GL_CLIP_PLANE5"/>
+ <enum value="0x3005" name="GL_CLIP_DISTANCE5_EXT" alias="GL_CLIP_PLANE5"/>
<enum value="0x3005" name="GL_CLIP_DISTANCE5_APPLE"/>
<enum value="0x3006" name="GL_CLIP_DISTANCE6"/>
+ <enum value="0x3006" name="GL_CLIP_DISTANCE6_EXT" alias="GL_CLIP_DISTANCE6"/>
<enum value="0x3006" name="GL_CLIP_DISTANCE6_APPLE"/>
<enum value="0x3007" name="GL_CLIP_DISTANCE7"/>
+ <enum value="0x3007" name="GL_CLIP_DISTANCE7_EXT" alias="GL_CLIP_DISTANCE7"/>
<enum value="0x3007" name="GL_CLIP_DISTANCE7_APPLE"/>
<unused start="0x3008" end="0x3FFF" comment="Unused for ClipPlaneName"/>
<enum value="0x4000" name="GL_LIGHT0"/>
@@ -3506,8 +4910,10 @@
<enum value="0x80EB" name="GL_PHONG_HINT_WIN"/>
<enum value="0x80EC" name="GL_FOG_SPECULAR_TEXTURE_WIN"/>
<enum value="0x80ED" name="GL_TEXTURE_INDEX_SIZE_EXT"/>
- <enum value="0x80EE" name="GL_PARAMETER_BUFFER_ARB"/>
- <enum value="0x80EF" name="GL_PARAMETER_BUFFER_BINDING_ARB"/>
+ <enum value="0x80EE" name="GL_PARAMETER_BUFFER"/>
+ <enum value="0x80EE" name="GL_PARAMETER_BUFFER_ARB" alias="GL_PARAMETER_BUFFER"/>
+ <enum value="0x80EF" name="GL_PARAMETER_BUFFER_BINDING"/>
+ <enum value="0x80EF" name="GL_PARAMETER_BUFFER_BINDING_ARB" alias="GL_PARAMETER_BUFFER_BINDING"/>
<enum value="0x80F0" name="GL_CLIP_VOLUME_CLIPPING_HINT_EXT"/>
<unused start="0x80F1" end="0x810F" vendor="MS"/>
</enums>
@@ -3955,18 +5361,22 @@
<enum value="0x825A" name="GL_PROGRAM_PIPELINE_BINDING_EXT"/>
<enum value="0x825B" name="GL_MAX_VIEWPORTS"/>
<enum value="0x825B" name="GL_MAX_VIEWPORTS_NV"/>
+ <enum value="0x825B" name="GL_MAX_VIEWPORTS_OES"/>
<enum value="0x825C" name="GL_VIEWPORT_SUBPIXEL_BITS"/>
<enum value="0x825C" name="GL_VIEWPORT_SUBPIXEL_BITS_EXT"/>
<enum value="0x825C" name="GL_VIEWPORT_SUBPIXEL_BITS_NV"/>
+ <enum value="0x825C" name="GL_VIEWPORT_SUBPIXEL_BITS_OES"/>
<enum value="0x825D" name="GL_VIEWPORT_BOUNDS_RANGE"/>
<enum value="0x825D" name="GL_VIEWPORT_BOUNDS_RANGE_EXT"/>
<enum value="0x825D" name="GL_VIEWPORT_BOUNDS_RANGE_NV"/>
+ <enum value="0x825D" name="GL_VIEWPORT_BOUNDS_RANGE_OES"/>
<enum value="0x825E" name="GL_LAYER_PROVOKING_VERTEX"/>
<enum value="0x825E" name="GL_LAYER_PROVOKING_VERTEX_EXT"/>
<enum value="0x825E" name="GL_LAYER_PROVOKING_VERTEX_OES"/>
<enum value="0x825F" name="GL_VIEWPORT_INDEX_PROVOKING_VERTEX"/>
<enum value="0x825F" name="GL_VIEWPORT_INDEX_PROVOKING_VERTEX_EXT"/>
<enum value="0x825F" name="GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV"/>
+ <enum value="0x825F" name="GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES"/>
<enum value="0x8260" name="GL_UNDEFINED_VERTEX"/>
<enum value="0x8260" name="GL_UNDEFINED_VERTEX_EXT"/>
<enum value="0x8260" name="GL_UNDEFINED_VERTEX_OES"/>
@@ -4139,26 +5549,41 @@
ARB_direct_state_access in February 2015 after determining it
was not well defined or implementable. -->
<unused start="0x82EB" vendor="ARB" comment="Reserved. Formerly used for GL_TEXTURE_BINDING."/>
- <enum value="0x82EC" name="GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB"/>
- <enum value="0x82ED" name="GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB"/>
- <enum value="0x82EE" name="GL_VERTICES_SUBMITTED_ARB"/>
- <enum value="0x82EF" name="GL_PRIMITIVES_SUBMITTED_ARB"/>
- <enum value="0x82F0" name="GL_VERTEX_SHADER_INVOCATIONS_ARB"/>
- <enum value="0x82F1" name="GL_TESS_CONTROL_SHADER_PATCHES_ARB"/>
- <enum value="0x82F2" name="GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB"/>
- <enum value="0x82F3" name="GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB"/>
- <enum value="0x82F4" name="GL_FRAGMENT_SHADER_INVOCATIONS_ARB"/>
- <enum value="0x82F5" name="GL_COMPUTE_SHADER_INVOCATIONS_ARB"/>
- <enum value="0x82F6" name="GL_CLIPPING_INPUT_PRIMITIVES_ARB"/>
- <enum value="0x82F7" name="GL_CLIPPING_OUTPUT_PRIMITIVES_ARB"/>
+ <enum value="0x82EC" name="GL_TRANSFORM_FEEDBACK_OVERFLOW"/>
+ <enum value="0x82EC" name="GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB" alias="GL_TRANSFORM_FEEDBACK_OVERFLOW"/>
+ <enum value="0x82ED" name="GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW"/>
+ <enum value="0x82ED" name="GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB" alias="GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW"/>
+ <enum value="0x82EE" name="GL_VERTICES_SUBMITTED"/>
+ <enum value="0x82EE" name="GL_VERTICES_SUBMITTED_ARB" alias="GL_VERTICES_SUBMITTED"/>
+ <enum value="0x82EF" name="GL_PRIMITIVES_SUBMITTED"/>
+ <enum value="0x82EF" name="GL_PRIMITIVES_SUBMITTED_ARB" alias="GL_PRIMITIVES_SUBMITTED"/>
+ <enum value="0x82F0" name="GL_VERTEX_SHADER_INVOCATIONS"/>
+ <enum value="0x82F0" name="GL_VERTEX_SHADER_INVOCATIONS_ARB" alias="GL_VERTEX_SHADER_INVOCATIONS"/>
+ <enum value="0x82F1" name="GL_TESS_CONTROL_SHADER_PATCHES"/>
+ <enum value="0x82F1" name="GL_TESS_CONTROL_SHADER_PATCHES_ARB" alias="GL_TESS_CONTROL_SHADER_PATCHES"/>
+ <enum value="0x82F2" name="GL_TESS_EVALUATION_SHADER_INVOCATIONS"/>
+ <enum value="0x82F2" name="GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB" alias="GL_TESS_EVALUATION_SHADER_INVOCATIONS"/>
+ <enum value="0x82F3" name="GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED"/>
+ <enum value="0x82F3" name="GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB" alias="GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED"/>
+ <enum value="0x82F4" name="GL_FRAGMENT_SHADER_INVOCATIONS"/>
+ <enum value="0x82F4" name="GL_FRAGMENT_SHADER_INVOCATIONS_ARB" alias="GL_FRAGMENT_SHADER_INVOCATIONS"/>
+ <enum value="0x82F5" name="GL_COMPUTE_SHADER_INVOCATIONS"/>
+ <enum value="0x82F5" name="GL_COMPUTE_SHADER_INVOCATIONS_ARB" alias="GL_COMPUTE_SHADER_INVOCATIONS"/>
+ <enum value="0x82F6" name="GL_CLIPPING_INPUT_PRIMITIVES"/>
+ <enum value="0x82F6" name="GL_CLIPPING_INPUT_PRIMITIVES_ARB" alias="GL_CLIPPING_INPUT_PRIMITIVES"/>
+ <enum value="0x82F7" name="GL_CLIPPING_OUTPUT_PRIMITIVES"/>
+ <enum value="0x82F7" name="GL_CLIPPING_OUTPUT_PRIMITIVES_ARB" alias="GL_CLIPPING_OUTPUT_PRIMITIVES"/>
<enum value="0x82F8" name="GL_SPARSE_BUFFER_PAGE_SIZE_ARB"/>
<enum value="0x82F9" name="GL_MAX_CULL_DISTANCES"/>
+ <enum value="0x82F9" name="GL_MAX_CULL_DISTANCES_EXT" alias="GL_MAX_CULL_DISTANCES"/>
<enum value="0x82FA" name="GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES"/>
+ <enum value="0x82FA" name="GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT" alias="GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES"/>
<enum value="0x82FB" name="GL_CONTEXT_RELEASE_BEHAVIOR"/>
<enum value="0x82FB" name="GL_CONTEXT_RELEASE_BEHAVIOR_KHR"/>
<enum value="0x82FC" name="GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"/>
<enum value="0x82FC" name="GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR"/>
- <unused start="0x82FD" end="0x830F" vendor="ARB"/>
+ <enum value="0x82FD" name="GL_ROBUST_GPU_TIMEOUT_MS_KHR" comment="Reserved for future"/>
+ <unused start="0x82FE" end="0x830F" vendor="ARB"/>
</enums>
<enums namespace="GL" start="0x8310" end="0x832F" vendor="SGI">
@@ -4354,7 +5779,9 @@
<enum value="0x83F9" name="GL_PERFQUERY_DONOT_FLUSH_INTEL"/>
<enum value="0x83FA" name="GL_PERFQUERY_FLUSH_INTEL"/>
<enum value="0x83FB" name="GL_PERFQUERY_WAIT_INTEL"/>
- <unused start="0x83FC" end="0x83FE" vendor="INTEL"/>
+ <enum value="0x83FC" name="GL_BLACKHOLE_RENDER_INTEL"/>
+ <unused start="0x83FD" vendor="INTEL"/>
+ <enum value="0x83FE" name="GL_CONSERVATIVE_RASTERIZATION_INTEL"/>
<enum value="0x83FF" name="GL_TEXTURE_MEMORY_LAYOUT_INTEL"/>
</enums>
@@ -4635,8 +6062,10 @@
<unused start="0x84FB" end="0x84FC" vendor="NV"/>
<enum value="0x84FD" name="GL_MAX_TEXTURE_LOD_BIAS"/>
<enum value="0x84FD" name="GL_MAX_TEXTURE_LOD_BIAS_EXT"/>
- <enum value="0x84FE" name="GL_TEXTURE_MAX_ANISOTROPY_EXT"/>
- <enum value="0x84FF" name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"/>
+ <enum value="0x84FE" name="GL_TEXTURE_MAX_ANISOTROPY"/>
+ <enum value="0x84FE" name="GL_TEXTURE_MAX_ANISOTROPY_EXT" alias="GL_TEXTURE_MAX_ANISOTROPY"/>
+ <enum value="0x84FF" name="GL_MAX_TEXTURE_MAX_ANISOTROPY"/>
+ <enum value="0x84FF" name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT" alias="GL_MAX_TEXTURE_MAX_ANISOTROPY"/>
<enum value="0x8500" name="GL_TEXTURE_FILTER_CONTROL"/>
<enum value="0x8500" name="GL_TEXTURE_FILTER_CONTROL_EXT"/>
<enum value="0x8501" name="GL_TEXTURE_LOD_BIAS"/>
@@ -5338,7 +6767,7 @@
<enum value="0x875C" name="GL_PROXY_TEXTURE_2D_STACK_MESAX"/>
<enum value="0x875D" name="GL_TEXTURE_1D_STACK_BINDING_MESAX"/>
<enum value="0x875E" name="GL_TEXTURE_2D_STACK_BINDING_MESAX"/>
- <unused start="0x875F" vendor="MESA"/>
+ <enum value="0x875F" name="GL_PROGRAM_BINARY_FORMAT_MESA"/>
</enums>
<enums namespace="GL" start="0x8760" end="0x883F" vendor="AMD">
@@ -5941,16 +7370,20 @@
<enum value="0x88EB" name="GL_PIXEL_PACK_BUFFER"/>
<enum value="0x88EB" name="GL_PIXEL_PACK_BUFFER_ARB"/>
<enum value="0x88EB" name="GL_PIXEL_PACK_BUFFER_EXT"/>
+ <enum value="0x88EB" name="GL_PIXEL_PACK_BUFFER_NV"/>
<enum value="0x88EC" name="GL_PIXEL_UNPACK_BUFFER"/>
<enum value="0x88EC" name="GL_PIXEL_UNPACK_BUFFER_ARB"/>
<enum value="0x88EC" name="GL_PIXEL_UNPACK_BUFFER_EXT"/>
+ <enum value="0x88EC" name="GL_PIXEL_UNPACK_BUFFER_NV"/>
<enum value="0x88ED" name="GL_PIXEL_PACK_BUFFER_BINDING"/>
<enum value="0x88ED" name="GL_PIXEL_PACK_BUFFER_BINDING_ARB"/>
<enum value="0x88ED" name="GL_PIXEL_PACK_BUFFER_BINDING_EXT"/>
+ <enum value="0x88ED" name="GL_PIXEL_PACK_BUFFER_BINDING_NV"/>
<enum value="0x88EE" name="GL_ETC1_SRGB8_NV"/>
<enum value="0x88EF" name="GL_PIXEL_UNPACK_BUFFER_BINDING"/>
<enum value="0x88EF" name="GL_PIXEL_UNPACK_BUFFER_BINDING_ARB"/>
<enum value="0x88EF" name="GL_PIXEL_UNPACK_BUFFER_BINDING_EXT"/>
+ <enum value="0x88EF" name="GL_PIXEL_UNPACK_BUFFER_BINDING_NV"/>
<enum value="0x88F0" name="GL_DEPTH24_STENCIL8"/>
<enum value="0x88F0" name="GL_DEPTH24_STENCIL8_EXT"/>
<enum value="0x88F0" name="GL_DEPTH24_STENCIL8_OES"/>
@@ -6397,6 +7830,9 @@
<enum value="0x8BB5" name="GL_VERTEX_PROGRAM_CALLBACK_MESA"/>
<enum value="0x8BB6" name="GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA"/>
<enum value="0x8BB7" name="GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA"/>
+ <enum value="0x8BB8" name="GL_TILE_RASTER_ORDER_FIXED_MESA"/>
+ <enum value="0x8BB9" name="GL_TILE_RASTER_ORDER_INCREASING_X_MESA"/>
+ <enum value="0x8BBA" name="GL_TILE_RASTER_ORDER_INCREASING_Y_MESA"/>
</enums>
<enums namespace="GL" start="0x8BC0" end="0x8BFF" vendor="QCOM" comment="Reassigned from AMD to QCOM">
@@ -6421,7 +7857,13 @@
<enum value="0x8BDC" name="GL_STATE_RESTORE"/>
<unused start="0x8BDD" end="0x8BE6" vendor="QCOM"/>
<enum value="0x8BE7" name="GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT"/>
- <unused start="0x8BE8" end="0x8BFF" vendor="QCOM"/>
+ <unused start="0x8BE8" end="0x8BEF" vendor="QCOM"/>
+ <enum value="0x8BFA" name="GL_TEXTURE_PROTECTED_EXT"/>
+ <enum value="0x8BFB" name="GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM"/>
+ <enum value="0x8BFC" name="GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM"/>
+ <enum value="0x8BFD" name="GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM"/>
+ <enum value="0x8BFE" name="GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM"/>
+ <enum value="0x8BFF" name="GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM"/>
</enums>
<enums namespace="GL" start="0x8C00" end="0x8C0F" vendor="IMG">
@@ -6631,11 +8073,12 @@
<enum value="0x8C93" name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD"/>
<unused start="0x8C94" end="0x8C9F" vendor="QCOM"/>
</enums>
-
<enums namespace="GL" start="0x8CA0" end="0x8CAF" vendor="ARB">
<enum value="0x8CA0" name="GL_POINT_SPRITE_COORD_ORIGIN"/>
<enum value="0x8CA1" name="GL_LOWER_LEFT"/>
+ <enum value="0x8CA1" name="GL_LOWER_LEFT_EXT" alias="GL_LOWER_LEFT"/>
<enum value="0x8CA2" name="GL_UPPER_LEFT"/>
+ <enum value="0x8CA2" name="GL_UPPER_LEFT_EXT" alias="GL_UPPER_LEFT"/>
<enum value="0x8CA3" name="GL_STENCIL_BACK_REF"/>
<enum value="0x8CA4" name="GL_STENCIL_BACK_VALUE_MASK"/>
<enum value="0x8CA5" name="GL_STENCIL_BACK_WRITEMASK"/>
@@ -7116,7 +8559,8 @@
<enum value="0x8E18" name="GL_QUERY_NO_WAIT_INVERTED"/>
<enum value="0x8E19" name="GL_QUERY_BY_REGION_WAIT_INVERTED"/>
<enum value="0x8E1A" name="GL_QUERY_BY_REGION_NO_WAIT_INVERTED"/>
- <enum value="0x8E1B" name="GL_POLYGON_OFFSET_CLAMP_EXT"/>
+ <enum value="0x8E1B" name="GL_POLYGON_OFFSET_CLAMP"/>
+ <enum value="0x8E1B" name="GL_POLYGON_OFFSET_CLAMP_EXT" alias="GL_POLYGON_OFFSET_CLAMP"/>
<unused start="0x8E1C" end="0x8E1D" vendor="NV"/>
<enum value="0x8E1E" name="GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS"/>
<enum value="0x8E1E" name="GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT"/>
@@ -7288,12 +8732,16 @@
<unused start="0x8E8B" vendor="NV"/>
<enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM"/>
<enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM_ARB"/>
+ <enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM_EXT"/>
<enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"/>
<enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB"/>
+ <enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT"/>
<enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"/>
<enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB"/>
+ <enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT"/>
<enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"/>
<enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB"/>
+ <enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT"/>
</enums>
<enums namespace="GL" start="0x8E90" end="0x8E9F" vendor="QNX" comment="For QNX_texture_tiling, QNX_complex_polygon, QNX_stippled_lines (Khronos bug 696)">
@@ -7321,7 +8769,14 @@
<enum value="0x8ED5" name="GL_COVERAGE_ALL_FRAGMENTS_NV"/>
<enum value="0x8ED6" name="GL_COVERAGE_EDGE_FRAGMENTS_NV"/>
<enum value="0x8ED7" name="GL_COVERAGE_AUTOMATIC_NV"/>
- <unused start="0x8ED8" end="0x8F1C" vendor="NV"/>
+ <unused start="0x8ED8" end="0x8F0F" vendor="NV"/>
+ <enum value="0x8F10" name="GL_INCLUSIVE_EXT"/>
+ <enum value="0x8F11" name="GL_EXCLUSIVE_EXT"/>
+ <enum value="0x8F12" name="GL_WINDOW_RECTANGLE_EXT"/>
+ <enum value="0x8F13" name="GL_WINDOW_RECTANGLE_MODE_EXT"/>
+ <enum value="0x8F14" name="GL_MAX_WINDOW_RECTANGLES_EXT"/>
+ <enum value="0x8F15" name="GL_NUM_WINDOW_RECTANGLES_EXT"/>
+ <unused start="0x8F16" end="0x8F1C" vendor="NV"/>
<enum value="0x8F1D" name="GL_BUFFER_GPU_ADDRESS_NV"/>
<enum value="0x8F1E" name="GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV"/>
<enum value="0x8F1F" name="GL_ELEMENT_ARRAY_UNIFIED_NV"/>
@@ -7409,7 +8864,9 @@
<enum value="0x8F65" name="GL_FETCH_PER_SAMPLE_ARM"/>
<enum value="0x8F66" name="GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM"/>
<enum value="0x8F67" name="GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT"/>
- <unused start="0x8F68" end="0x8F6F" vendor="ARM"/>
+ <unused start="0x8F68" vendor="ARM"/>
+ <enum value="0x8F69" name="GL_TEXTURE_ASTC_DECODE_PRECISION_EXT"/>
+ <unused start="0x8F6A" end="0x8F6F" vendor="ARM"/>
</enums>
<enums namespace="GL" start="0x8F70" end="0x8F7F" vendor="HI" comment="For Mark Callow, Khronos bug 4055. Shared with EGL.">
@@ -7455,7 +8912,7 @@
<unused start="0x8FBC" vendor="QCOM"/>
<enum value="0x8FBD" name="GL_SR8_EXT"/>
<enum value="0x8FBE" name="GL_SRG8_EXT"/>
- <unused start="0x8FBF" vendor="QCOM"/>
+ <enum value="0x8FBF" name="GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT"/>
</enums>
<enums namespace="GL" start="0x8FC0" end="0x8FDF" vendor="VIV" comment="For Frido Garritsen, bug 4526">
@@ -7897,7 +9354,10 @@
<enum value="0x9139" name="GL_CUBIC_IMG"/>
<enum value="0x913A" name="GL_CUBIC_MIPMAP_NEAREST_IMG"/>
<enum value="0x913B" name="GL_CUBIC_MIPMAP_LINEAR_IMG"/>
- <unused start="0x913C" end="0x913F" vendor="IMG"/>
+ <enum value="0x913C" name="GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG"/>
+ <enum value="0x913D" name="GL_NUM_DOWNSAMPLE_SCALES_IMG"/>
+ <enum value="0x913E" name="GL_DOWNSAMPLE_SCALES_IMG"/>
+ <enum value="0x913F" name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG"/>
</enums>
<enums namespace="GL" start="0x9140" end="0x923F" vendor="AMD" comment="Khronos bugs 5899, 6004">
@@ -7994,9 +9454,13 @@
<enum value="0x91A9" name="GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT"/>
<enum value="0x91AA" name="GL_NUM_SPARSE_LEVELS_ARB"/>
<enum value="0x91AA" name="GL_NUM_SPARSE_LEVELS_EXT"/>
- <unused start="0x91AB" end="0x91AF" vendor="AMD"/>
- <enum value="0x91B0" name="GL_MAX_SHADER_COMPILER_THREADS_ARB"/>
- <enum value="0x91B1" name="GL_COMPLETION_STATUS_ARB"/>
+ <unused start="0x91AB" end="0x91AD" vendor="AMD"/>
+ <enum value="0x91AE" name="GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD"/>
+ <enum value="0x91AF" name="GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD"/>
+ <enum value="0x91B0" name="GL_MAX_SHADER_COMPILER_THREADS_KHR"/>
+ <enum value="0x91B0" name="GL_MAX_SHADER_COMPILER_THREADS_ARB" alias="GL_MAX_SHADER_COMPILER_THREADS_KHR"/>
+ <enum value="0x91B1" name="GL_COMPLETION_STATUS_KHR"/>
+ <enum value="0x91B1" name="GL_COMPLETION_STATUS_ARB" alias="GL_COMPLETION_STATUS_KHR"/>
<unused start="0x91B2" end="0x91B8" vendor="AMD"/>
<enum value="0x91B9" name="GL_COMPUTE_SHADER"/>
<unused start="0x91BA" vendor="AMD"/>
@@ -8006,7 +9470,17 @@
<enum value="0x91BE" name="GL_MAX_COMPUTE_WORK_GROUP_COUNT"/>
<enum value="0x91BF" name="GL_MAX_COMPUTE_WORK_GROUP_SIZE"/>
<enum value="0x91BF" name="GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB" alias="GL_MAX_COMPUTE_WORK_GROUP_SIZE"/>
- <unused start="0x91C0" end="0x923F" vendor="AMD"/>
+ <unused start="0x91C0" end="0x91C4" vendor="AMD"/>
+ <enum value="0x91C5" name="GL_FLOAT16_MAT2_AMD"/>
+ <enum value="0x91C6" name="GL_FLOAT16_MAT3_AMD"/>
+ <enum value="0x91C7" name="GL_FLOAT16_MAT4_AMD"/>
+ <enum value="0x91C8" name="GL_FLOAT16_MAT2x3_AMD"/>
+ <enum value="0x91C9" name="GL_FLOAT16_MAT2x4_AMD"/>
+ <enum value="0x91CA" name="GL_FLOAT16_MAT3x2_AMD"/>
+ <enum value="0x91CB" name="GL_FLOAT16_MAT3x4_AMD"/>
+ <enum value="0x91CC" name="GL_FLOAT16_MAT4x2_AMD"/>
+ <enum value="0x91CD" name="GL_FLOAT16_MAT4x3_AMD"/>
+ <unused start="0x91CE" end="0x923F" vendor="AMD"/>
</enums>
<enums namespace="GL" start="0x9240" end="0x924F" vendor="WEBGL" comment="Khronos bug 6473,6884">
@@ -8138,12 +9612,16 @@
<enum value="0x92B2" name="GL_PLUS_CLAMPED_ALPHA_NV"/>
<enum value="0x92B3" name="GL_MINUS_CLAMPED_NV"/>
<enum value="0x92B4" name="GL_INVERT_OVG_NV"/>
- <unused start="0x92B5" end="0x92BD" vendor="NV"/>
+ <unused start="0x92B5" end="0x92B9" vendor="NV"/>
+ <enum value="0x92BA" name="GL_MAX_LGPU_GPUS_NVX"/>
+ <enum value="0x92BA" name="GL_MULTICAST_GPUS_NV"/>
+ <enum value="0x92BB" name="GL_PURGED_CONTEXT_RESET_NV"/>
+ <unused start="0x92BC" end="0x92BD" vendor="NV"/>
<enum value="0x92BE" name="GL_PRIMITIVE_BOUNDING_BOX_ARB"/>
<enum value="0x92BE" name="GL_PRIMITIVE_BOUNDING_BOX"/>
<enum value="0x92BE" name="GL_PRIMITIVE_BOUNDING_BOX_EXT"/>
<enum value="0x92BE" name="GL_PRIMITIVE_BOUNDING_BOX_OES"/>
- <unused start="0x92BF" vendor="NV"/>
+ <enum value="0x92BF" name="GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV"/>
<enum value="0x92C0" name="GL_ATOMIC_COUNTER_BUFFER"/>
<enum value="0x92C1" name="GL_ATOMIC_COUNTER_BUFFER_BINDING"/>
<enum value="0x92C2" name="GL_ATOMIC_COUNTER_BUFFER_START"/>
@@ -8301,15 +9779,35 @@
<enum value="0x934A" name="GL_LOCATION_COMPONENT"/>
<enum value="0x934B" name="GL_TRANSFORM_FEEDBACK_BUFFER_INDEX"/>
<enum value="0x934C" name="GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE"/>
- <unused start="0x934D" end="0x935B" vendor="NV"/>
+ <enum value="0x934D" name="GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV"/>
+ <enum value="0x934E" name="GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV"/>
+ <enum value="0x934F" name="GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV"/>
+ <enum value="0x9350" name="GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV"/>
+ <enum value="0x9351" name="GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV"/>
+ <enum value="0x9352" name="GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV"/>
+ <enum value="0x9353" name="GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV"/>
+ <enum value="0x9354" name="GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV"/>
+ <enum value="0x9355" name="GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV"/>
+ <enum value="0x9356" name="GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV"/>
+ <enum value="0x9357" name="GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV"/>
+ <enum value="0x9358" name="GL_VIEWPORT_SWIZZLE_X_NV"/>
+ <enum value="0x9359" name="GL_VIEWPORT_SWIZZLE_Y_NV"/>
+ <enum value="0x935A" name="GL_VIEWPORT_SWIZZLE_Z_NV"/>
+ <enum value="0x935B" name="GL_VIEWPORT_SWIZZLE_W_NV"/>
<enum value="0x935C" name="GL_CLIP_ORIGIN"/>
+ <enum value="0x935C" name="GL_CLIP_ORIGIN_EXT" alias="GL_CLIP_ORIGIN"/>
<enum value="0x935D" name="GL_CLIP_DEPTH_MODE"/>
+ <enum value="0x935D" name="GL_CLIP_DEPTH_MODE_EXT" alias="GL_CLIP_DEPTH_MODE"/>
<enum value="0x935E" name="GL_NEGATIVE_ONE_TO_ONE"/>
+ <enum value="0x935E" name="GL_NEGATIVE_ONE_TO_ONE_EXT" alias="GL_NEGATIVE_ONE_TO_ONE"/>
<enum value="0x935F" name="GL_ZERO_TO_ONE"/>
+ <enum value="0x935F" name="GL_ZERO_TO_ONE_EXT" alias="GL_ZERO_TO_ONE"/>
<unused start="0x9360" end="0x9364" vendor="NV"/>
<enum value="0x9365" name="GL_CLEAR_TEXTURE"/>
<enum value="0x9366" name="GL_TEXTURE_REDUCTION_MODE_ARB"/>
+ <enum value="0x9366" name="GL_TEXTURE_REDUCTION_MODE_EXT" alias="GL_TEXTURE_REDUCTION_MODE_ARB"/>
<enum value="0x9367" name="GL_WEIGHTED_AVERAGE_ARB"/>
+ <enum value="0x9367" name="GL_WEIGHTED_AVERAGE_EXT" alias="GL_WEIGHTED_AVERAGE_ARB"/>
<enum value="0x9368" name="GL_FONT_GLYPHS_AVAILABLE_NV"/>
<enum value="0x9369" name="GL_FONT_TARGET_UNAVAILABLE_NV"/>
<enum value="0x936A" name="GL_FONT_UNAVAILABLE_NV"/>
@@ -8327,7 +9825,10 @@
<enum value="0x9379" name="GL_CONSERVATIVE_RASTER_DILATE_NV"/>
<enum value="0x937A" name="GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV"/>
<enum value="0x937B" name="GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV"/>
- <unused start="0x937C" end="0x937F" vendor="NV"/>
+ <enum value="0x937C" name="GL_VIEWPORT_POSITION_W_SCALE_NV"/>
+ <enum value="0x937D" name="GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV"/>
+ <enum value="0x937E" name="GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV"/>
+ <unused start="0x937F" vendor="NV"/>
</enums>
<enums namespace="GL" start="0x9380" end="0x939F" vendor="ARB">
@@ -8464,14 +9965,70 @@
</enums>
<enums namespace="GL" start="0x9530" end="0x962F" vendor="NV" comment="Khronos bug 12977">
- <unused start="0x9530" end="0x962F" vendor="NV"/>
+ <enum value="0x9530" name="GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT"/>
+ <enum value="0x9531" name="GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT"/>
+ <unused start="0x9532" end="0x953F" vendor="NV"/>
+ <enum value="0x9540" name="GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV"/>
+ <unused start="0x9541" vendor="NV"/>
+ <enum value="0x9542" name="GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV"/>
+ <unused start="0x9543" vendor="NV"/>
+ <enum value="0x9544" name="GL_QUERY_RESOURCE_SYS_RESERVED_NV"/>
+ <enum value="0x9545" name="GL_QUERY_RESOURCE_TEXTURE_NV"/>
+ <enum value="0x9546" name="GL_QUERY_RESOURCE_RENDERBUFFER_NV"/>
+ <enum value="0x9547" name="GL_QUERY_RESOURCE_BUFFEROBJECT_NV"/>
+ <enum value="0x9548" name="GL_PER_GPU_STORAGE_NV"/>
+ <enum value="0x9549" name="GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV"/>
+ <unused start="0x954A" end="0x954C" vendor="NV"/>
+ <enum value="0x954D" name="GL_CONSERVATIVE_RASTER_MODE_NV"/>
+ <enum value="0x954E" name="GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV"/>
+ <enum value="0x954F" name="GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV"/>
+ <enum value="0x9550" name="GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV"/>
+ <enum value="0x9551" name="GL_SHADER_BINARY_FORMAT_SPIR_V"/>
+ <enum value="0x9551" name="GL_SHADER_BINARY_FORMAT_SPIR_V_ARB" alias="GL_SHADER_BINARY_FORMAT_SPIR_V"/>
+ <enum value="0x9552" name="GL_SPIR_V_BINARY"/>
+ <enum value="0x9552" name="GL_SPIR_V_BINARY_ARB" alias="GL_SPIR_V_BINARY"/>
+ <enum value="0x9553" name="GL_SPIR_V_EXTENSIONS"/>
+ <enum value="0x9554" name="GL_NUM_SPIR_V_EXTENSIONS"/>
+ <unused start="0x9555" end="0x9557" vendor="NV"/>
+ <enum value="0x9558" name="GL_RENDER_GPU_MASK_NV"/>
+ <unused start="0x9559" end="0x957F" vendor="NV"/>
+ <enum value="0x9580" name="GL_TEXTURE_TILING_EXT"/>
+ <enum value="0x9581" name="GL_DEDICATED_MEMORY_OBJECT_EXT"/>
+ <enum value="0x9582" name="GL_NUM_TILING_TYPES_EXT"/>
+ <enum value="0x9583" name="GL_TILING_TYPES_EXT"/>
+ <enum value="0x9584" name="GL_OPTIMAL_TILING_EXT"/>
+ <enum value="0x9585" name="GL_LINEAR_TILING_EXT"/>
+ <enum value="0x9586" name="GL_HANDLE_TYPE_OPAQUE_FD_EXT"/>
+ <enum value="0x9587" name="GL_HANDLE_TYPE_OPAQUE_WIN32_EXT"/>
+ <enum value="0x9588" name="GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT"/>
+ <enum value="0x9589" name="GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT"/>
+ <enum value="0x958A" name="GL_HANDLE_TYPE_D3D12_RESOURCE_EXT"/>
+ <enum value="0x958B" name="GL_HANDLE_TYPE_D3D11_IMAGE_EXT"/>
+ <enum value="0x958C" name="GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT"/>
+ <enum value="0x958D" name="GL_LAYOUT_GENERAL_EXT"/>
+ <enum value="0x958E" name="GL_LAYOUT_COLOR_ATTACHMENT_EXT"/>
+ <enum value="0x958F" name="GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT"/>
+ <enum value="0x9590" name="GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT"/>
+ <enum value="0x9591" name="GL_LAYOUT_SHADER_READ_ONLY_EXT"/>
+ <enum value="0x9592" name="GL_LAYOUT_TRANSFER_SRC_EXT"/>
+ <enum value="0x9593" name="GL_LAYOUT_TRANSFER_DST_EXT"/>
+ <enum value="0x9594" name="GL_HANDLE_TYPE_D3D12_FENCE_EXT"/>
+ <enum value="0x9595" name="GL_D3D12_FENCE_VALUE_EXT"/>
+ <enum value="0x9596" name="GL_NUM_DEVICE_UUIDS_EXT"/>
+ <enum value="0x9597" name="GL_DEVICE_UUID_EXT"/>
+ <enum value="0x9598" name="GL_DRIVER_UUID_EXT"/>
+ <enum value="0x9599" name="GL_DEVICE_LUID_EXT"/>
+ <enum value="0x959A" name="GL_DEVICE_NODE_MASK_EXT"/>
+ <enum value="0x959B" name="GL_PROTECTED_MEMORY_OBJECT_EXT"/>
+ <unused start="0x959C" end="0x962F" vendor="NV"/>
</enums>
<enums namespace="GL" start="0x9630" end="0x963F" vendor="Oculus" comment="Email from Cass Everitt">
<enum value="0x9630" name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR"/>
<enum value="0x9631" name="GL_MAX_VIEWS_OVR"/>
<enum value="0x9632" name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR"/>
- <unused start="0x9633" end="0x963F" vendor="Oculus"/>
+ <enum value="0x9633" name="GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR"/>
+ <unused start="0x9634" end="0x963F" vendor="Oculus"/>
</enums>
<enums namespace="GL" start="0x9640" end="0x964F" vendor="Mediatek" comment="Khronos bug 14294">
@@ -8481,7 +10038,20 @@
</enums>
<enums namespace="GL" start="0x9650" end="0x968F" vendor="IMG" comment="Khronos bug 14977">
- <unused start="0x9650" end="0x968F" vendor="IMG"/>
+ <enum value="0x9650" name="GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT"/>
+ <enum value="0x9651" name="GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT"/>
+ <enum value="0x9652" name="GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT"/>
+ <unused start="0x9653" end="0x968F" vendor="IMG"/>
+ </enums>
+
+ <enums namespace="GL" start="0x9690" end="0x969F" vendor="ANGLE" comment="Khronos bug 15423">
+ <unused start="0x9690" end="0x969F" vendor="ANGLE"/>
+ </enums>
+
+ <enums namespace="GL" start="0x96A0" end="0x96AF" vendor="Qualcomm" comment="contact Maurice Ribble">
+ <unused start="0x96A0" end="0x96A1" vendor="Qualcomm"/>
+ <enum value="0x96A2" name="GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM"/>
+ <unused start="0x96A3" end="0x96AF" vendor="Qualcomm"/>
</enums>
<!-- Enums reservable for future use. To reserve a new range, allocate one
@@ -8493,8 +10063,8 @@
file) File requests in the Khronos Bugzilla, OpenGL project, Registry
component. -->
- <enums namespace="GL" start="0x9690" end="99999" vendor="ARB" comment="RESERVED FOR FUTURE ALLOCATIONS BY KHRONOS">
- <unused start="0x9690" end="99999" comment="RESERVED"/>
+ <enums namespace="GL" start="0x96B0" end="99999" vendor="ARB" comment="RESERVED FOR FUTURE ALLOCATIONS BY KHRONOS">
+ <unused start="0x96B0" end="99999" comment="RESERVED"/>
</enums>
<!-- Historical large block allocations, all unused except (in older days) by IBM -->
@@ -8655,15 +10225,19 @@
</command>
<command>
<proto>void <name>glAlphaFuncx</name></proto>
- <param><ptype>GLenum</ptype> <name>func</name></param>
+ <param group="AlphaFunction"><ptype>GLenum</ptype> <name>func</name></param>
<param><ptype>GLfixed</ptype> <name>ref</name></param>
</command>
<command>
<proto>void <name>glAlphaFuncxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>func</name></param>
+ <param group="AlphaFunction"><ptype>GLenum</ptype> <name>func</name></param>
<param group="ClampedFixed"><ptype>GLfixed</ptype> <name>ref</name></param>
</command>
<command>
+ <proto>void <name>glAlphaToCoverageDitherControlNV</name></proto>
+ <param><ptype>GLenum</ptype> <name>mode</name></param>
+ </command>
+ <command>
<proto>void <name>glApplyFramebufferAttachmentCMAAINTEL</name></proto>
</command>
<command>
@@ -8671,6 +10245,12 @@
<param group="LightTextureModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
</command>
<command>
+ <proto><ptype>GLboolean</ptype> <name>glAcquireKeyedMutexWin32EXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>key</name></param>
+ <param><ptype>GLuint</ptype> <name>timeout</name></param>
+ </command>
+ <command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glAreProgramsResidentNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
<param len="n">const <ptype>GLuint</ptype> *<name>programs</name></param>
@@ -8762,7 +10342,7 @@
</command>
<command>
<proto>void <name>glBeginQuery</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
<glx type="render" opcode="231"/>
</command>
@@ -8774,27 +10354,28 @@
</command>
<command>
<proto>void <name>glBeginQueryEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
</command>
<command>
<proto>void <name>glBeginQueryIndexed</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
</command>
<command>
<proto>void <name>glBeginTransformFeedback</name></proto>
- <param><ptype>GLenum</ptype> <name>primitiveMode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>primitiveMode</name></param>
+ <glx type="render" opcode="357"/>
</command>
<command>
<proto>void <name>glBeginTransformFeedbackEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>primitiveMode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>primitiveMode</name></param>
<alias name="glBeginTransformFeedback"/>
</command>
<command>
<proto>void <name>glBeginTransformFeedbackNV</name></proto>
- <param><ptype>GLenum</ptype> <name>primitiveMode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>primitiveMode</name></param>
<alias name="glBeginTransformFeedback"/>
</command>
<command>
@@ -8830,34 +10411,35 @@
</command>
<command>
<proto>void <name>glBindBufferBase</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
+ <glx type="render" opcode="356"/>
</command>
<command>
<proto>void <name>glBindBufferBaseEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<alias name="glBindBufferBase"/>
</command>
<command>
<proto>void <name>glBindBufferBaseNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<alias name="glBindBufferBase"/>
</command>
<command>
<proto>void <name>glBindBufferOffsetEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
</command>
<command>
<proto>void <name>glBindBufferOffsetNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
@@ -8865,15 +10447,16 @@
</command>
<command>
<proto>void <name>glBindBufferRange</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <glx type="render" opcode="355"/>
</command>
<command>
<proto>void <name>glBindBufferRangeEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
@@ -8882,7 +10465,7 @@
</command>
<command>
<proto>void <name>glBindBufferRangeNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
@@ -8891,14 +10474,14 @@
</command>
<command>
<proto>void <name>glBindBuffersBase</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param>
</command>
<command>
<proto>void <name>glBindBuffersRange</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param>
@@ -8951,7 +10534,7 @@
</command>
<command>
<proto>void <name>glBindFramebufferOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
</command>
<command>
@@ -8961,8 +10544,8 @@
<param><ptype>GLint</ptype> <name>level</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>layered</name></param>
<param><ptype>GLint</ptype> <name>layer</name></param>
- <param><ptype>GLenum</ptype> <name>access</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="BufferAccessARB"><ptype>GLenum</ptype> <name>access</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>format</name></param>
</command>
<command>
<proto>void <name>glBindImageTextureEXT</name></proto>
@@ -8971,7 +10554,7 @@
<param><ptype>GLint</ptype> <name>level</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>layered</name></param>
<param><ptype>GLint</ptype> <name>layer</name></param>
- <param><ptype>GLenum</ptype> <name>access</name></param>
+ <param group="BufferAccessARB"><ptype>GLenum</ptype> <name>access</name></param>
<param><ptype>GLint</ptype> <name>format</name></param>
</command>
<command>
@@ -9035,7 +10618,7 @@
</command>
<command>
<proto>void <name>glBindRenderbufferOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
</command>
<command>
@@ -9086,7 +10669,7 @@
</command>
<command>
<proto>void <name>glBindTransformFeedback</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BindTransformFeedbackTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
</command>
<command>
@@ -9262,7 +10845,7 @@
</command>
<command>
<proto>void <name>glBlendEquation</name></proto>
- <param group="BlendEquationMode"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
<glx type="render" opcode="4097"/>
</command>
<command>
@@ -9274,12 +10857,12 @@
<command>
<proto>void <name>glBlendEquationIndexedAMD</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
<alias name="glBlendEquationi"/>
</command>
<command>
<proto>void <name>glBlendEquationOES</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
</command>
<command>
<proto>void <name>glBlendEquationSeparate</name></proto>
@@ -9297,69 +10880,69 @@
<command>
<proto>void <name>glBlendEquationSeparateIndexedAMD</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>modeRGB</name></param>
- <param><ptype>GLenum</ptype> <name>modeAlpha</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeRGB</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeAlpha</name></param>
<alias name="glBlendEquationSeparatei"/>
</command>
<command>
<proto>void <name>glBlendEquationSeparateOES</name></proto>
- <param><ptype>GLenum</ptype> <name>modeRGB</name></param>
- <param><ptype>GLenum</ptype> <name>modeAlpha</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeRGB</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeAlpha</name></param>
</command>
<command>
<proto>void <name>glBlendEquationSeparatei</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>modeRGB</name></param>
- <param><ptype>GLenum</ptype> <name>modeAlpha</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeRGB</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeAlpha</name></param>
</command>
<command>
<proto>void <name>glBlendEquationSeparateiARB</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>modeRGB</name></param>
- <param><ptype>GLenum</ptype> <name>modeAlpha</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeRGB</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeAlpha</name></param>
<alias name="glBlendEquationSeparatei"/>
</command>
<command>
<proto>void <name>glBlendEquationSeparateiEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>modeRGB</name></param>
- <param><ptype>GLenum</ptype> <name>modeAlpha</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeRGB</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeAlpha</name></param>
<alias name="glBlendEquationSeparatei"/>
</command>
<command>
<proto>void <name>glBlendEquationSeparateiOES</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>modeRGB</name></param>
- <param><ptype>GLenum</ptype> <name>modeAlpha</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeRGB</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>modeAlpha</name></param>
<alias name="glBlendEquationSeparatei"/>
</command>
<command>
<proto>void <name>glBlendEquationi</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
</command>
<command>
<proto>void <name>glBlendEquationiARB</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
<alias name="glBlendEquationi"/>
</command>
<command>
<proto>void <name>glBlendEquationiEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
<alias name="glBlendEquationi"/>
</command>
<command>
<proto>void <name>glBlendEquationiOES</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="BlendEquationModeEXT"><ptype>GLenum</ptype> <name>mode</name></param>
<alias name="glBlendEquationi"/>
</command>
<command>
<proto>void <name>glBlendFunc</name></proto>
- <param group="BlendingFactorSrc"><ptype>GLenum</ptype> <name>sfactor</name></param>
- <param group="BlendingFactorDest"><ptype>GLenum</ptype> <name>dfactor</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactor</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactor</name></param>
<glx type="render" opcode="160"/>
</command>
<command>
@@ -9371,106 +10954,106 @@
</command>
<command>
<proto>void <name>glBlendFuncSeparate</name></proto>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>sfactorRGB</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>dfactorRGB</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>sfactorAlpha</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>dfactorAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactorRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactorRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactorAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactorAlpha</name></param>
<glx type="render" opcode="4134"/>
</command>
<command>
<proto>void <name>glBlendFuncSeparateEXT</name></proto>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>sfactorRGB</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>dfactorRGB</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>sfactorAlpha</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>dfactorAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactorRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactorRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactorAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactorAlpha</name></param>
<alias name="glBlendFuncSeparate"/>
<glx type="render" opcode="4134"/>
</command>
<command>
<proto>void <name>glBlendFuncSeparateINGR</name></proto>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>sfactorRGB</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>dfactorRGB</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>sfactorAlpha</name></param>
- <param group="BlendFuncSeparateParameterEXT"><ptype>GLenum</ptype> <name>dfactorAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactorRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactorRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>sfactorAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dfactorAlpha</name></param>
<alias name="glBlendFuncSeparate"/>
<glx type="render" opcode="4134"/>
</command>
<command>
<proto>void <name>glBlendFuncSeparateIndexedAMD</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>srcRGB</name></param>
- <param><ptype>GLenum</ptype> <name>dstRGB</name></param>
- <param><ptype>GLenum</ptype> <name>srcAlpha</name></param>
- <param><ptype>GLenum</ptype> <name>dstAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstAlpha</name></param>
<alias name="glBlendFuncSeparatei"/>
</command>
<command>
<proto>void <name>glBlendFuncSeparateOES</name></proto>
- <param><ptype>GLenum</ptype> <name>srcRGB</name></param>
- <param><ptype>GLenum</ptype> <name>dstRGB</name></param>
- <param><ptype>GLenum</ptype> <name>srcAlpha</name></param>
- <param><ptype>GLenum</ptype> <name>dstAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstAlpha</name></param>
</command>
<command>
<proto>void <name>glBlendFuncSeparatei</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>srcRGB</name></param>
- <param><ptype>GLenum</ptype> <name>dstRGB</name></param>
- <param><ptype>GLenum</ptype> <name>srcAlpha</name></param>
- <param><ptype>GLenum</ptype> <name>dstAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstAlpha</name></param>
</command>
<command>
<proto>void <name>glBlendFuncSeparateiARB</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>srcRGB</name></param>
- <param><ptype>GLenum</ptype> <name>dstRGB</name></param>
- <param><ptype>GLenum</ptype> <name>srcAlpha</name></param>
- <param><ptype>GLenum</ptype> <name>dstAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstAlpha</name></param>
<alias name="glBlendFuncSeparatei"/>
</command>
<command>
<proto>void <name>glBlendFuncSeparateiEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>srcRGB</name></param>
- <param><ptype>GLenum</ptype> <name>dstRGB</name></param>
- <param><ptype>GLenum</ptype> <name>srcAlpha</name></param>
- <param><ptype>GLenum</ptype> <name>dstAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstAlpha</name></param>
<alias name="glBlendFuncSeparatei"/>
</command>
<command>
<proto>void <name>glBlendFuncSeparateiOES</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>srcRGB</name></param>
- <param><ptype>GLenum</ptype> <name>dstRGB</name></param>
- <param><ptype>GLenum</ptype> <name>srcAlpha</name></param>
- <param><ptype>GLenum</ptype> <name>dstAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstRGB</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>srcAlpha</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dstAlpha</name></param>
<alias name="glBlendFuncSeparatei"/>
</command>
<command>
<proto>void <name>glBlendFunci</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>src</name></param>
- <param><ptype>GLenum</ptype> <name>dst</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>src</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dst</name></param>
</command>
<command>
<proto>void <name>glBlendFunciARB</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>src</name></param>
- <param><ptype>GLenum</ptype> <name>dst</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>src</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dst</name></param>
<alias name="glBlendFunci"/>
</command>
<command>
<proto>void <name>glBlendFunciEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>src</name></param>
- <param><ptype>GLenum</ptype> <name>dst</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>src</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dst</name></param>
<alias name="glBlendFunci"/>
</command>
<command>
<proto>void <name>glBlendFunciOES</name></proto>
<param><ptype>GLuint</ptype> <name>buf</name></param>
- <param><ptype>GLenum</ptype> <name>src</name></param>
- <param><ptype>GLenum</ptype> <name>dst</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>src</name></param>
+ <param group="BlendingFactor"><ptype>GLenum</ptype> <name>dst</name></param>
<alias name="glBlendFunci"/>
</command>
<command>
@@ -9489,7 +11072,7 @@
<param><ptype>GLint</ptype> <name>dstX1</name></param>
<param><ptype>GLint</ptype> <name>dstY1</name></param>
<param group="ClearBufferMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
- <param><ptype>GLenum</ptype> <name>filter</name></param>
+ <param group="BlitFramebufferFilter"><ptype>GLenum</ptype> <name>filter</name></param>
<glx type="render" opcode="4330"/>
</command>
<command>
@@ -9502,8 +11085,8 @@
<param><ptype>GLint</ptype> <name>dstY0</name></param>
<param><ptype>GLint</ptype> <name>dstX1</name></param>
<param><ptype>GLint</ptype> <name>dstY1</name></param>
- <param><ptype>GLbitfield</ptype> <name>mask</name></param>
- <param><ptype>GLenum</ptype> <name>filter</name></param>
+ <param group="ClearBufferMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
+ <param group="BlitFramebufferFilter"><ptype>GLenum</ptype> <name>filter</name></param>
</command>
<command>
<proto>void <name>glBlitFramebufferEXT</name></proto>
@@ -9516,7 +11099,7 @@
<param><ptype>GLint</ptype> <name>dstX1</name></param>
<param><ptype>GLint</ptype> <name>dstY1</name></param>
<param group="ClearBufferMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
- <param><ptype>GLenum</ptype> <name>filter</name></param>
+ <param group="BlitFramebufferFilter"><ptype>GLenum</ptype> <name>filter</name></param>
<alias name="glBlitFramebuffer"/>
<glx type="render" opcode="4330"/>
</command>
@@ -9530,8 +11113,8 @@
<param><ptype>GLint</ptype> <name>dstY0</name></param>
<param><ptype>GLint</ptype> <name>dstX1</name></param>
<param><ptype>GLint</ptype> <name>dstY1</name></param>
- <param><ptype>GLbitfield</ptype> <name>mask</name></param>
- <param><ptype>GLenum</ptype> <name>filter</name></param>
+ <param group="ClearBufferMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
+ <param group="BlitFramebufferFilter"><ptype>GLenum</ptype> <name>filter</name></param>
<alias name="glBlitFramebuffer"/>
</command>
<command>
@@ -9546,8 +11129,8 @@
<param><ptype>GLint</ptype> <name>dstY0</name></param>
<param><ptype>GLint</ptype> <name>dstX1</name></param>
<param><ptype>GLint</ptype> <name>dstY1</name></param>
- <param><ptype>GLbitfield</ptype> <name>mask</name></param>
- <param><ptype>GLenum</ptype> <name>filter</name></param>
+ <param group="ClearBufferMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
+ <param group="BlitFramebufferFilter"><ptype>GLenum</ptype> <name>filter</name></param>
</command>
<command>
<proto>void <name>glBufferAddressRangeNV</name></proto>
@@ -9586,20 +11169,35 @@
</command>
<command>
<proto>void <name>glBufferStorage</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferStorageTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizeiptr</ptype> <name>size</name></param>
<param len="size">const void *<name>data</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="MapBufferUsageMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
<proto>void <name>glBufferStorageEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferStorageTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizeiptr</ptype> <name>size</name></param>
<param len="size">const void *<name>data</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="MapBufferUsageMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
<alias name="glBufferStorage"/>
</command>
<command>
+ <proto>void <name>glBufferStorageExternalEXT</name></proto>
+ <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLintptr</ptype> <name>offset</name></param>
+ <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param><ptype>GLeglClientBufferEXT</ptype> <name>clientBuffer</name></param>
+ <param group="MapBufferUsageMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
+ </command>
+ <command>
+ <proto>void <name>glBufferStorageMemEXT</name></proto>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
<proto>void <name>glBufferSubData</name></proto>
<param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
@@ -9631,24 +11229,24 @@
<glx type="render" opcode="2"/>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glCheckFramebufferStatus</name></proto>
+ <proto group="FramebufferStatus"><ptype>GLenum</ptype> <name>glCheckFramebufferStatus</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<glx type="vendor" opcode="1427"/>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glCheckFramebufferStatusEXT</name></proto>
+ <proto group="FramebufferStatus"><ptype>GLenum</ptype> <name>glCheckFramebufferStatusEXT</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<alias name="glCheckFramebufferStatus"/>
<glx type="vendor" opcode="1427"/>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glCheckFramebufferStatusOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <proto group="FramebufferStatus"><ptype>GLenum</ptype> <name>glCheckFramebufferStatusOES</name></proto>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glCheckNamedFramebufferStatus</name></proto>
+ <proto group="FramebufferStatus"><ptype>GLenum</ptype> <name>glCheckNamedFramebufferStatus</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
</command>
<command>
<proto group="FramebufferStatus"><ptype>GLenum</ptype> <name>glCheckNamedFramebufferStatusEXT</name></proto>
@@ -9690,46 +11288,50 @@
</command>
<command>
<proto>void <name>glClearBufferData</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="BufferStorageTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
<proto>void <name>glClearBufferSubData</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
<proto>void <name>glClearBufferfi</name></proto>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param group="DrawBufferName"><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param><ptype>GLfloat</ptype> <name>depth</name></param>
<param><ptype>GLint</ptype> <name>stencil</name></param>
+ <glx type="render" opcode="360"/>
</command>
<command>
<proto>void <name>glClearBufferfv</name></proto>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param group="DrawBufferName"><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param len="COMPSIZE(buffer)">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <glx type="render" opcode="361"/>
</command>
<command>
<proto>void <name>glClearBufferiv</name></proto>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param group="DrawBufferName"><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param len="COMPSIZE(buffer)">const <ptype>GLint</ptype> *<name>value</name></param>
+ <glx type="render" opcode="362"/>
</command>
<command>
<proto>void <name>glClearBufferuiv</name></proto>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param group="DrawBufferName"><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param len="COMPSIZE(buffer)">const <ptype>GLuint</ptype> *<name>value</name></param>
+ <glx type="render" opcode="363"/>
</command>
<command>
<proto>void <name>glClearColor</name></proto>
@@ -9805,15 +11407,15 @@
<command>
<proto>void <name>glClearNamedBufferData</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>data</name></param>
</command>
<command>
<proto>void <name>glClearNamedBufferDataEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type)">const void *<name>data</name></param>
@@ -9821,11 +11423,11 @@
<command>
<proto>void <name>glClearNamedBufferSubData</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>data</name></param>
</command>
<command>
@@ -9841,7 +11443,7 @@
<command>
<proto>void <name>glClearNamedFramebufferfi</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param><ptype>GLfloat</ptype> <name>depth</name></param>
<param><ptype>GLint</ptype> <name>stencil</name></param>
@@ -9849,25 +11451,31 @@
<command>
<proto>void <name>glClearNamedFramebufferfv</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param>const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glClearNamedFramebufferiv</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param>const <ptype>GLint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glClearNamedFramebufferuiv</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>buffer</name></param>
+ <param group="Buffer"><ptype>GLenum</ptype> <name>buffer</name></param>
<param><ptype>GLint</ptype> <name>drawbuffer</name></param>
<param>const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
+ <proto>void <name>glClearPixelLocalStorageuiEXT</name></proto>
+ <param><ptype>GLsizei</ptype> <name>offset</name></param>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>values</name></param>
+ </command>
+ <command>
<proto>void <name>glClearStencil</name></proto>
<param group="StencilValue"><ptype>GLint</ptype> <name>s</name></param>
<glx type="render" opcode="131"/>
@@ -9876,11 +11484,20 @@
<proto>void <name>glClearTexImage</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
+ <proto>void <name>glClearTexImageEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLint</ptype> <name>level</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
+ <param len="COMPSIZE(format,type)">const void *<name>data</name></param>
+ <alias name="glClearTexImage"/>
+ </command>
+ <command>
<proto>void <name>glClearTexSubImage</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
@@ -9890,11 +11507,26 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
+ <proto>void <name>glClearTexSubImageEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLint</ptype> <name>level</name></param>
+ <param><ptype>GLint</ptype> <name>xoffset</name></param>
+ <param><ptype>GLint</ptype> <name>yoffset</name></param>
+ <param><ptype>GLint</ptype> <name>zoffset</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLsizei</ptype> <name>depth</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
+ <param len="COMPSIZE(format,type)">const void *<name>data</name></param>
+ <alias name="glClearTexSubImage"/>
+ </command>
+ <command>
<proto>void <name>glClientActiveTexture</name></proto>
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
</command>
@@ -9912,22 +11544,28 @@
<param group="ClientAttribMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glClientWaitSync</name></proto>
+ <proto group="SyncStatus"><ptype>GLenum</ptype> <name>glClientWaitSync</name></proto>
<param group="sync"><ptype>GLsync</ptype> <name>sync</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="SyncObjectMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
<param><ptype>GLuint64</ptype> <name>timeout</name></param>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glClientWaitSyncAPPLE</name></proto>
+ <proto group="SyncStatus"><ptype>GLenum</ptype> <name>glClientWaitSyncAPPLE</name></proto>
<param><ptype>GLsync</ptype> <name>sync</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="SyncObjectMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
<param><ptype>GLuint64</ptype> <name>timeout</name></param>
<alias name="glClientWaitSync"/>
</command>
<command>
<proto>void <name>glClipControl</name></proto>
+ <param group="ClipControlOrigin"><ptype>GLenum</ptype> <name>origin</name></param>
+ <param group="ClipControlDepth"><ptype>GLenum</ptype> <name>depth</name></param>
+ </command>
+ <command>
+ <proto>void <name>glClipControlEXT</name></proto>
<param><ptype>GLenum</ptype> <name>origin</name></param>
<param><ptype>GLenum</ptype> <name>depth</name></param>
+ <alias name="glClipControl"/>
</command>
<command>
<proto>void <name>glClipPlane</name></proto>
@@ -9937,33 +11575,33 @@
</command>
<command>
<proto>void <name>glClipPlanef</name></proto>
- <param><ptype>GLenum</ptype> <name>p</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>p</name></param>
<param len="4">const <ptype>GLfloat</ptype> *<name>eqn</name></param>
</command>
<command>
<proto>void <name>glClipPlanefIMG</name></proto>
- <param><ptype>GLenum</ptype> <name>p</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>p</name></param>
<param len="4">const <ptype>GLfloat</ptype> *<name>eqn</name></param>
</command>
<command>
<proto>void <name>glClipPlanefOES</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4">const <ptype>GLfloat</ptype> *<name>equation</name></param>
<glx type="render" opcode="4312"/>
</command>
<command>
<proto>void <name>glClipPlanex</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4">const <ptype>GLfixed</ptype> *<name>equation</name></param>
</command>
<command>
<proto>void <name>glClipPlanexIMG</name></proto>
- <param><ptype>GLenum</ptype> <name>p</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>p</name></param>
<param len="4">const <ptype>GLfixed</ptype> *<name>eqn</name></param>
</command>
<command>
<proto>void <name>glClipPlanexOES</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4">const <ptype>GLfixed</ptype> *<name>equation</name></param>
</command>
<command>
@@ -10342,6 +11980,7 @@
<param group="Boolean"><ptype>GLboolean</ptype> <name>b</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>a</name></param>
<alias name="glColorMaski"/>
+ <glx type="render" opcode="352"/>
</command>
<command>
<proto>void <name>glColorMaski</name></proto>
@@ -10377,22 +12016,22 @@
</command>
<command>
<proto>void <name>glColorP3ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>color</name></param>
</command>
<command>
<proto>void <name>glColorP3uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>color</name></param>
</command>
<command>
<proto>void <name>glColorP4ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>color</name></param>
</command>
<command>
<proto>void <name>glColorP4uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>color</name></param>
</command>
<command>
@@ -10448,7 +12087,7 @@
<command>
<proto>void <name>glColorTable</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -10459,7 +12098,7 @@
<command>
<proto>void <name>glColorTableEXT</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalFormat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -10469,7 +12108,7 @@
<command>
<proto>void <name>glColorTableParameterfv</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ColorTableParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ColorTableParameterPNameSGI"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedFloat32" len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="render" opcode="2054"/>
</command>
@@ -10484,7 +12123,7 @@
<command>
<proto>void <name>glColorTableParameteriv</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ColorTableParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ColorTableParameterPNameSGI"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedInt32" len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>params</name></param>
<glx type="render" opcode="2055"/>
</command>
@@ -10499,7 +12138,7 @@
<command>
<proto>void <name>glColorTableSGI</name></proto>
<param group="ColorTableTargetSGI"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -10591,7 +12230,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
@@ -10602,7 +12241,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -10614,7 +12253,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -10665,7 +12304,7 @@
<proto>void <name>glCompressedTexImage1D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
@@ -10677,7 +12316,7 @@
<proto>void <name>glCompressedTexImage1DARB</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
@@ -10689,7 +12328,7 @@
<proto>void <name>glCompressedTexImage2D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -10702,7 +12341,7 @@
<proto>void <name>glCompressedTexImage2DARB</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -10715,7 +12354,7 @@
<proto>void <name>glCompressedTexImage3D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -10729,7 +12368,7 @@
<proto>void <name>glCompressedTexImage3DARB</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -10741,16 +12380,15 @@
</command>
<command>
<proto>void <name>glCompressedTexImage3DOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
<param len="imageSize">const void *<name>data</name></param>
- <alias name="glCompressedTexImage3D"/>
</command>
<command>
<proto>void <name>glCompressedTexSubImage1D</name></proto>
@@ -10838,7 +12476,7 @@
</command>
<command>
<proto>void <name>glCompressedTexSubImage3DOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>xoffset</name></param>
<param><ptype>GLint</ptype> <name>yoffset</name></param>
@@ -10846,17 +12484,16 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
<param len="imageSize">const void *<name>data</name></param>
- <alias name="glCompressedTexSubImage3D"/>
</command>
<command>
<proto>void <name>glCompressedTextureImage1DEXT</name></proto>
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
@@ -10867,7 +12504,7 @@
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -10879,7 +12516,7 @@
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -10893,7 +12530,7 @@
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>xoffset</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
<param>const void *<name>data</name></param>
</command>
@@ -10916,7 +12553,7 @@
<param><ptype>GLint</ptype> <name>yoffset</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
<param>const void *<name>data</name></param>
</command>
@@ -10943,7 +12580,7 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
<param>const void *<name>data</name></param>
</command>
@@ -10968,9 +12605,14 @@
<param><ptype>GLfloat</ptype> <name>value</name></param>
</command>
<command>
+ <proto>void <name>glConservativeRasterParameteriNV</name></proto>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLint</ptype> <name>param</name></param>
+ </command>
+ <command>
<proto>void <name>glConvolutionFilter1D</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -10981,7 +12623,7 @@
<command>
<proto>void <name>glConvolutionFilter1DEXT</name></proto>
<param group="ConvolutionTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -10992,7 +12634,7 @@
<command>
<proto>void <name>glConvolutionFilter2D</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -11004,7 +12646,7 @@
<command>
<proto>void <name>glConvolutionFilter2DEXT</name></proto>
<param group="ConvolutionTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -11016,7 +12658,7 @@
<command>
<proto>void <name>glConvolutionParameterf</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ConvolutionParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>params</name></param>
<glx type="render" opcode="4103"/>
</command>
@@ -11031,7 +12673,7 @@
<command>
<proto>void <name>glConvolutionParameterfv</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ConvolutionParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedFloat32" len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="render" opcode="4104"/>
</command>
@@ -11046,7 +12688,7 @@
<command>
<proto>void <name>glConvolutionParameteri</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ConvolutionParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>params</name></param>
<glx type="render" opcode="4105"/>
</command>
@@ -11061,7 +12703,7 @@
<command>
<proto>void <name>glConvolutionParameteriv</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ConvolutionParameter"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedInt32" len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>params</name></param>
<glx type="render" opcode="4106"/>
</command>
@@ -11075,28 +12717,29 @@
</command>
<command>
<proto>void <name>glConvolutionParameterxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glConvolutionParameterxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glCopyBufferSubData</name></proto>
- <param><ptype>GLenum</ptype> <name>readTarget</name></param>
- <param><ptype>GLenum</ptype> <name>writeTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>readTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>writeTarget</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>readOffset</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>writeOffset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <glx type="single" opcode="221"/>
</command>
<command>
<proto>void <name>glCopyBufferSubDataNV</name></proto>
- <param><ptype>GLenum</ptype> <name>readTarget</name></param>
- <param><ptype>GLenum</ptype> <name>writeTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>readTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>writeTarget</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>readOffset</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>writeOffset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
@@ -11123,7 +12766,7 @@
<command>
<proto>void <name>glCopyColorTable</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11132,7 +12775,7 @@
<command>
<proto>void <name>glCopyColorTableSGI</name></proto>
<param group="ColorTableTargetSGI"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11142,7 +12785,7 @@
<command>
<proto>void <name>glCopyConvolutionFilter1D</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11151,7 +12794,7 @@
<command>
<proto>void <name>glCopyConvolutionFilter1DEXT</name></proto>
<param group="ConvolutionTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11161,7 +12804,7 @@
<command>
<proto>void <name>glCopyConvolutionFilter2D</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11171,7 +12814,7 @@
<command>
<proto>void <name>glCopyConvolutionFilter2DEXT</name></proto>
<param group="ConvolutionTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11182,13 +12825,13 @@
<command>
<proto>void <name>glCopyImageSubData</name></proto>
<param><ptype>GLuint</ptype> <name>srcName</name></param>
- <param><ptype>GLenum</ptype> <name>srcTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>srcTarget</name></param>
<param><ptype>GLint</ptype> <name>srcLevel</name></param>
<param><ptype>GLint</ptype> <name>srcX</name></param>
<param><ptype>GLint</ptype> <name>srcY</name></param>
<param><ptype>GLint</ptype> <name>srcZ</name></param>
<param><ptype>GLuint</ptype> <name>dstName</name></param>
- <param><ptype>GLenum</ptype> <name>dstTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>dstTarget</name></param>
<param><ptype>GLint</ptype> <name>dstLevel</name></param>
<param><ptype>GLint</ptype> <name>dstX</name></param>
<param><ptype>GLint</ptype> <name>dstY</name></param>
@@ -11200,13 +12843,13 @@
<command>
<proto>void <name>glCopyImageSubDataEXT</name></proto>
<param><ptype>GLuint</ptype> <name>srcName</name></param>
- <param><ptype>GLenum</ptype> <name>srcTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>srcTarget</name></param>
<param><ptype>GLint</ptype> <name>srcLevel</name></param>
<param><ptype>GLint</ptype> <name>srcX</name></param>
<param><ptype>GLint</ptype> <name>srcY</name></param>
<param><ptype>GLint</ptype> <name>srcZ</name></param>
<param><ptype>GLuint</ptype> <name>dstName</name></param>
- <param><ptype>GLenum</ptype> <name>dstTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>dstTarget</name></param>
<param><ptype>GLint</ptype> <name>dstLevel</name></param>
<param><ptype>GLint</ptype> <name>dstX</name></param>
<param><ptype>GLint</ptype> <name>dstY</name></param>
@@ -11219,13 +12862,13 @@
<command>
<proto>void <name>glCopyImageSubDataNV</name></proto>
<param><ptype>GLuint</ptype> <name>srcName</name></param>
- <param><ptype>GLenum</ptype> <name>srcTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>srcTarget</name></param>
<param><ptype>GLint</ptype> <name>srcLevel</name></param>
<param><ptype>GLint</ptype> <name>srcX</name></param>
<param><ptype>GLint</ptype> <name>srcY</name></param>
<param><ptype>GLint</ptype> <name>srcZ</name></param>
<param><ptype>GLuint</ptype> <name>dstName</name></param>
- <param><ptype>GLenum</ptype> <name>dstTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>dstTarget</name></param>
<param><ptype>GLint</ptype> <name>dstLevel</name></param>
<param><ptype>GLint</ptype> <name>dstX</name></param>
<param><ptype>GLint</ptype> <name>dstY</name></param>
@@ -11238,13 +12881,13 @@
<command>
<proto>void <name>glCopyImageSubDataOES</name></proto>
<param><ptype>GLuint</ptype> <name>srcName</name></param>
- <param><ptype>GLenum</ptype> <name>srcTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>srcTarget</name></param>
<param><ptype>GLint</ptype> <name>srcLevel</name></param>
<param><ptype>GLint</ptype> <name>srcX</name></param>
<param><ptype>GLint</ptype> <name>srcY</name></param>
<param><ptype>GLint</ptype> <name>srcZ</name></param>
<param><ptype>GLuint</ptype> <name>dstName</name></param>
- <param><ptype>GLenum</ptype> <name>dstTarget</name></param>
+ <param group="CopyBufferSubDataTarget"><ptype>GLenum</ptype> <name>dstTarget</name></param>
<param><ptype>GLint</ptype> <name>dstLevel</name></param>
<param><ptype>GLint</ptype> <name>dstX</name></param>
<param><ptype>GLint</ptype> <name>dstY</name></param>
@@ -11259,7 +12902,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11270,7 +12913,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11338,7 +12981,7 @@
<proto>void <name>glCopyTexImage1D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11349,7 +12992,7 @@
<proto>void <name>glCopyTexImage1DEXT</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11361,7 +13004,7 @@
<proto>void <name>glCopyTexImage2D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11373,7 +13016,7 @@
<proto>void <name>glCopyTexImage2DEXT</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11466,14 +13109,13 @@
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
- <alias name="glCopyTexSubImage3D"/>
</command>
<command>
<proto>void <name>glCopyTextureImage1DEXT</name></proto>
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11484,7 +13126,7 @@
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>x</name></param>
<param group="WinCoord"><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -11606,7 +13248,7 @@
<command>
<proto>void <name>glCoverageModulationTableNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLfloat</ptype> *<name>v</name></param>
+ <param len="n">const <ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glCoverageOperationNV</name></proto>
@@ -11615,17 +13257,22 @@
<command>
<proto>void <name>glCreateBuffers</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>buffers</name></param>
</command>
<command>
<proto>void <name>glCreateCommandListsNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>lists</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>lists</name></param>
</command>
<command>
<proto>void <name>glCreateFramebuffers</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>framebuffers</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>framebuffers</name></param>
+ </command>
+ <command>
+ <proto>void <name>glCreateMemoryObjectsEXT</name></proto>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param><ptype>GLuint</ptype> *<name>memoryObjects</name></param>
</command>
<command>
<proto>void <name>glCreatePerfQueryINTEL</name></proto>
@@ -11642,54 +13289,54 @@
<command>
<proto>void <name>glCreateProgramPipelines</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>pipelines</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>pipelines</name></param>
</command>
<command>
<proto>void <name>glCreateQueries</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>ids</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>ids</name></param>
</command>
<command>
<proto>void <name>glCreateRenderbuffers</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
</command>
<command>
<proto>void <name>glCreateSamplers</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>samplers</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>samplers</name></param>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glCreateShader</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>type</name></param>
</command>
<command>
<proto group="handleARB"><ptype>GLhandleARB</ptype> <name>glCreateShaderObjectARB</name></proto>
- <param><ptype>GLenum</ptype> <name>shaderType</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shaderType</name></param>
<alias name="glCreateShader"/>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glCreateShaderProgramEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const <ptype>GLchar</ptype> *<name>string</name></param>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glCreateShaderProgramv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLchar</ptype> *const*<name>strings</name></param>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glCreateShaderProgramvEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLchar</ptype> **<name>strings</name></param>
</command>
<command>
<proto>void <name>glCreateStatesNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>states</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>states</name></param>
</command>
<command>
<proto group="sync"><ptype>GLsync</ptype> <name>glCreateSyncFromCLeventARB</name></proto>
@@ -11699,19 +13346,19 @@
</command>
<command>
<proto>void <name>glCreateTextures</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>textures</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>textures</name></param>
</command>
<command>
<proto>void <name>glCreateTransformFeedbacks</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>ids</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>ids</name></param>
</command>
<command>
<proto>void <name>glCreateVertexArrays</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>arrays</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>arrays</name></param>
</command>
<command>
<proto>void <name>glCullFace</name></proto>
@@ -11761,18 +13408,18 @@
</command>
<command>
<proto>void <name>glDebugMessageControl</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugType"><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLuint</ptype> *<name>ids</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>enabled</name></param>
</command>
<command>
<proto>void <name>glDebugMessageControlARB</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugType"><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLuint</ptype> *<name>ids</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>enabled</name></param>
@@ -11780,9 +13427,9 @@
</command>
<command>
<proto>void <name>glDebugMessageControlKHR</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugType"><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param>const <ptype>GLuint</ptype> *<name>ids</name></param>
<param><ptype>GLboolean</ptype> <name>enabled</name></param>
@@ -11791,44 +13438,44 @@
<command>
<proto>void <name>glDebugMessageEnableAMD</name></proto>
<param><ptype>GLenum</ptype> <name>category</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLuint</ptype> *<name>ids</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>enabled</name></param>
</command>
<command>
<proto>void <name>glDebugMessageInsert</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param len="COMPSIZE(buf,length)">const <ptype>GLchar</ptype> *<name>buf</name></param>
</command>
<command>
<proto>void <name>glDebugMessageInsertAMD</name></proto>
<param><ptype>GLenum</ptype> <name>category</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param len="length">const <ptype>GLchar</ptype> *<name>buf</name></param>
</command>
<command>
<proto>void <name>glDebugMessageInsertARB</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param len="length">const <ptype>GLchar</ptype> *<name>buf</name></param>
<alias name="glDebugMessageInsert"/>
</command>
<command>
<proto>void <name>glDebugMessageInsertKHR</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>severity</name></param>
+ <param group="DebugSeverity"><ptype>GLenum</ptype> <name>severity</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param>const <ptype>GLchar</ptype> *<name>buf</name></param>
<alias name="glDebugMessageInsert"/>
@@ -11893,7 +13540,7 @@
<command>
<proto>void <name>glDeleteCommandListsNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>lists</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>lists</name></param>
</command>
<command>
<proto>void <name>glDeleteFencesAPPLE</name></proto>
@@ -11935,6 +13582,11 @@
<glx type="single" opcode="103"/>
</command>
<command>
+ <proto>void <name>glDeleteMemoryObjectsEXT</name></proto>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>memoryObjects</name></param>
+ </command>
+ <command>
<proto>void <name>glDeleteNamedStringARB</name></proto>
<param><ptype>GLint</ptype> <name>namelen</name></param>
<param len="namelen">const <ptype>GLchar</ptype> *<name>name</name></param>
@@ -12014,6 +13666,11 @@
<param len="n">const <ptype>GLuint</ptype> *<name>ids</name></param>
</command>
<command>
+ <proto>void <name>glDeleteQueryResourceTagNV</name></proto>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param len="n">const <ptype>GLint</ptype> *<name>tagIds</name></param>
+ </command>
+ <command>
<proto>void <name>glDeleteRenderbuffers</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
<param len="n">const <ptype>GLuint</ptype> *<name>renderbuffers</name></param>
@@ -12037,6 +13694,11 @@
<param len="count">const <ptype>GLuint</ptype> *<name>samplers</name></param>
</command>
<command>
+ <proto>void <name>glDeleteSemaphoresEXT</name></proto>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>semaphores</name></param>
+ </command>
+ <command>
<proto>void <name>glDeleteShader</name></proto>
<param><ptype>GLuint</ptype> <name>shader</name></param>
<glx type="single" opcode="195"/>
@@ -12044,7 +13706,7 @@
<command>
<proto>void <name>glDeleteStatesNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>states</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>states</name></param>
</command>
<command>
<proto>void <name>glDeleteSync</name></proto>
@@ -12124,8 +13786,8 @@
</command>
<command>
<proto>void <name>glDepthRange</name></proto>
- <param><ptype>GLdouble</ptype> <name>near</name></param>
- <param><ptype>GLdouble</ptype> <name>far</name></param>
+ <param><ptype>GLdouble</ptype> <name>n</name></param>
+ <param><ptype>GLdouble</ptype> <name>f</name></param>
<glx type="render" opcode="174"/>
</command>
<command>
@@ -12135,6 +13797,12 @@
<param>const <ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
+ <proto>void <name>glDepthRangeArrayfvOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>first</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param>const <ptype>GLfloat</ptype> *<name>v</name></param>
+ </command>
+ <command>
<proto>void <name>glDepthRangeArrayv</name></proto>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
@@ -12153,6 +13821,12 @@
<param><ptype>GLfloat</ptype> <name>f</name></param>
</command>
<command>
+ <proto>void <name>glDepthRangeIndexedfOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param><ptype>GLfloat</ptype> <name>n</name></param>
+ <param><ptype>GLfloat</ptype> <name>f</name></param>
+ </command>
+ <command>
<proto>void <name>glDepthRangedNV</name></proto>
<param><ptype>GLdouble</ptype> <name>zNear</name></param>
<param><ptype>GLdouble</ptype> <name>zFar</name></param>
@@ -12223,9 +13897,10 @@
</command>
<command>
<proto>void <name>glDisableIndexedEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glDisablei"/>
+ <glx type="render" opcode="354"/>
</command>
<command>
<proto>void <name>glDisableVariantClientStateEXT</name></proto>
@@ -12262,24 +13937,24 @@
</command>
<command>
<proto>void <name>glDisablei</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
</command>
<command>
<proto>void <name>glDisableiEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glDisablei"/>
</command>
<command>
<proto>void <name>glDisableiNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glDisablei"/>
</command>
<command>
<proto>void <name>glDisableiOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glDisablei"/>
</command>
@@ -12411,7 +14086,7 @@
<command>
<proto>void <name>glDrawBuffersEXT</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLenum</ptype> *<name>bufs</name></param>
+ <param len="n">const <ptype>GLenum</ptype> *<name>bufs</name></param>
<alias name="glDrawBuffers"/>
</command>
<command>
@@ -12504,7 +14179,7 @@
<command>
<proto>void <name>glDrawElementsIndirect</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>indirect</name></param>
</command>
<command>
@@ -12519,7 +14194,7 @@
<proto>void <name>glDrawElementsInstancedANGLE</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(count,type)">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
<alias name="glDrawElementsInstanced"/>
@@ -12537,7 +14212,7 @@
<proto>void <name>glDrawElementsInstancedBaseInstance</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="count">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>instancecount</name></param>
<param><ptype>GLuint</ptype> <name>baseinstance</name></param>
@@ -12546,7 +14221,7 @@
<proto>void <name>glDrawElementsInstancedBaseInstanceEXT</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="count">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>instancecount</name></param>
<param><ptype>GLuint</ptype> <name>baseinstance</name></param>
@@ -12565,7 +14240,7 @@
<proto>void <name>glDrawElementsInstancedBaseVertexBaseInstance</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="count">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>instancecount</name></param>
<param><ptype>GLint</ptype> <name>basevertex</name></param>
@@ -12575,7 +14250,7 @@
<proto>void <name>glDrawElementsInstancedBaseVertexBaseInstanceEXT</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="count">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>instancecount</name></param>
<param><ptype>GLint</ptype> <name>basevertex</name></param>
@@ -12615,7 +14290,7 @@
<proto>void <name>glDrawElementsInstancedNV</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(count,type)">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
<alias name="glDrawElementsInstanced"/>
@@ -12710,10 +14385,11 @@
<param><ptype>GLfloat</ptype> <name>z</name></param>
<param><ptype>GLfloat</ptype> <name>width</name></param>
<param><ptype>GLfloat</ptype> <name>height</name></param>
+ <vecequiv name="glDrawTexfvOES"/>
</command>
<command>
<proto>void <name>glDrawTexfvOES</name></proto>
- <param>const <ptype>GLfloat</ptype> *<name>coords</name></param>
+ <param len="5">const <ptype>GLfloat</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glDrawTexiOES</name></proto>
@@ -12722,10 +14398,11 @@
<param><ptype>GLint</ptype> <name>z</name></param>
<param><ptype>GLint</ptype> <name>width</name></param>
<param><ptype>GLint</ptype> <name>height</name></param>
+ <vecequiv name="glDrawTexivOES"/>
</command>
<command>
<proto>void <name>glDrawTexivOES</name></proto>
- <param>const <ptype>GLint</ptype> *<name>coords</name></param>
+ <param len="5">const <ptype>GLint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glDrawTexsOES</name></proto>
@@ -12734,10 +14411,11 @@
<param><ptype>GLshort</ptype> <name>z</name></param>
<param><ptype>GLshort</ptype> <name>width</name></param>
<param><ptype>GLshort</ptype> <name>height</name></param>
+ <vecequiv name="glDrawTexsvOES"/>
</command>
<command>
<proto>void <name>glDrawTexsvOES</name></proto>
- <param>const <ptype>GLshort</ptype> *<name>coords</name></param>
+ <param len="5">const <ptype>GLshort</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glDrawTextureNV</name></proto>
@@ -12760,10 +14438,11 @@
<param><ptype>GLfixed</ptype> <name>z</name></param>
<param><ptype>GLfixed</ptype> <name>width</name></param>
<param><ptype>GLfixed</ptype> <name>height</name></param>
+ <vecequiv name="glDrawTexxvOES"/>
</command>
<command>
<proto>void <name>glDrawTexxvOES</name></proto>
- <param>const <ptype>GLfixed</ptype> *<name>coords</name></param>
+ <param len="5">const <ptype>GLfixed</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glDrawTransformFeedback</name></proto>
@@ -12771,12 +14450,25 @@
<param><ptype>GLuint</ptype> <name>id</name></param>
</command>
<command>
+ <proto>void <name>glDrawTransformFeedbackEXT</name></proto>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <alias name="glDrawTransformFeedback"/>
+ </command>
+ <command>
<proto>void <name>glDrawTransformFeedbackInstanced</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLsizei</ptype> <name>instancecount</name></param>
</command>
<command>
+ <proto>void <name>glDrawTransformFeedbackInstancedEXT</name></proto>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <param><ptype>GLsizei</ptype> <name>instancecount</name></param>
+ <alias name="glDrawTransformFeedbackInstanced"/>
+ </command>
+ <command>
<proto>void <name>glDrawTransformFeedbackNV</name></proto>
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
@@ -12801,11 +14493,23 @@
<param><ptype>GLeglImageOES</ptype> <name>image</name></param>
</command>
<command>
+ <proto>void <name>glEGLImageTargetTexStorageEXT</name></proto>
+ <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLeglImageOES</ptype> <name>image</name></param>
+ <param>const <ptype>GLint</ptype>* <name>attrib_list</name></param>
+ </command>
+ <command>
<proto>void <name>glEGLImageTargetTexture2DOES</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLeglImageOES</ptype> <name>image</name></param>
</command>
<command>
+ <proto>void <name>glEGLImageTargetTextureStorageEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLeglImageOES</ptype> <name>image</name></param>
+ <param>const <ptype>GLint</ptype>* <name>attrib_list</name></param>
+ </command>
+ <command>
<proto>void <name>glEdgeFlag</name></proto>
<param group="Boolean"><ptype>GLboolean</ptype> <name>flag</name></param>
<vecequiv name="glEdgeFlagv"/>
@@ -12871,9 +14575,10 @@
</command>
<command>
<proto>void <name>glEnableIndexedEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glEnablei"/>
+ <glx type="render" opcode="353"/>
</command>
<command>
<proto>void <name>glEnableVariantClientStateEXT</name></proto>
@@ -12910,24 +14615,24 @@
</command>
<command>
<proto>void <name>glEnablei</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
</command>
<command>
<proto>void <name>glEnableiEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glEnablei"/>
</command>
<command>
<proto>void <name>glEnableiNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glEnablei"/>
</command>
<command>
<proto>void <name>glEnableiOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glEnablei"/>
</command>
@@ -12967,29 +14672,30 @@
</command>
<command>
<proto>void <name>glEndQuery</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<glx type="render" opcode="232"/>
</command>
<command>
<proto>void <name>glEndQueryARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<alias name="glEndQuery"/>
</command>
<command>
<proto>void <name>glEndQueryEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
</command>
<command>
<proto>void <name>glEndQueryIndexed</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
</command>
<command>
<proto>void <name>glEndTilingQCOM</name></proto>
- <param><ptype>GLbitfield</ptype> <name>preserveMask</name></param>
+ <param group="BufferBitQCOM"><ptype>GLbitfield</ptype> <name>preserveMask</name></param>
</command>
<command>
<proto>void <name>glEndTransformFeedback</name></proto>
+ <glx type="render" opcode="358"/>
</command>
<command>
<proto>void <name>glEndTransformFeedbackEXT</name></proto>
@@ -13127,7 +14833,7 @@
<command>
<proto>void <name>glExtGetProgramBinarySourceQCOM</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param><ptype>GLchar</ptype> *<name>source</name></param>
<param><ptype>GLint</ptype> *<name>length</name></param>
</command>
@@ -13167,8 +14873,8 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param>void *<name>texels</name></param>
</command>
<command>
@@ -13208,12 +14914,12 @@
</command>
<command>
<proto group="sync"><ptype>GLsync</ptype> <name>glFenceSync</name></proto>
- <param><ptype>GLenum</ptype> <name>condition</name></param>
+ <param group="SyncCondition"><ptype>GLenum</ptype> <name>condition</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
<proto><ptype>GLsync</ptype> <name>glFenceSyncAPPLE</name></proto>
- <param><ptype>GLenum</ptype> <name>condition</name></param>
+ <param group="SyncCondition"><ptype>GLenum</ptype> <name>condition</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
<alias name="glFenceSync"/>
</command>
@@ -13262,14 +14968,14 @@
</command>
<command>
<proto>void <name>glFlushMappedBufferRangeAPPLE</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
<alias name="glFlushMappedBufferRange"/>
</command>
<command>
<proto>void <name>glFlushMappedBufferRangeEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param><ptype>GLsizeiptr</ptype> <name>length</name></param>
<alias name="glFlushMappedBufferRange"/>
@@ -13417,22 +15123,22 @@
</command>
<command>
<proto>void <name>glFogx</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FogPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glFogxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FogPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glFogxv</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FogPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glFogxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FogPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
@@ -13532,12 +15238,42 @@
<param group="DrawBufferMode" len="n">const <ptype>GLenum</ptype> *<name>bufs</name></param>
</command>
<command>
+ <proto>void <name>glFramebufferFetchBarrierEXT</name></proto>
+ </command>
+ <command>
+ <proto>void <name>glFramebufferFetchBarrierQCOM</name></proto>
+ </command>
+ <command>
+ <proto>void <name>glFramebufferFoveationConfigQCOM</name></proto>
+ <param group="Framebuffer"><ptype>GLuint</ptype> <name>framebuffer</name></param>
+ <param><ptype>GLuint</ptype> <name>numLayers</name></param>
+ <param><ptype>GLuint</ptype> <name>focalPointsPerLayer</name></param>
+ <param><ptype>GLuint</ptype> <name>requestedFeatures</name></param>
+ <param len="1"><ptype>GLuint</ptype> *<name>providedFeatures</name></param>
+ </command>
+ <command>
+ <proto>void <name>glFramebufferFoveationParametersQCOM</name></proto>
+ <param group="Framebuffer"><ptype>GLuint</ptype> <name>framebuffer</name></param>
+ <param><ptype>GLuint</ptype> <name>layer</name></param>
+ <param><ptype>GLuint</ptype> <name>focalPoint</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>focalX</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>focalY</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>gainX</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>gainY</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>foveaArea</name></param>
+ </command>
+ <command>
<proto>void <name>glFramebufferParameteri</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>param</name></param>
</command>
<command>
+ <proto>void <name>glFramebufferPixelLocalStorageSizeEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>size</name></param>
+ </command>
+ <command>
<proto>void <name>glFramebufferReadBufferEXT</name></proto>
<param group="Framebuffer"><ptype>GLuint</ptype> <name>framebuffer</name></param>
<param group="ReadBufferMode"><ptype>GLenum</ptype> <name>mode</name></param>
@@ -13561,29 +15297,36 @@
</command>
<command>
<proto>void <name>glFramebufferRenderbufferOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>renderbuffertarget</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>renderbuffertarget</name></param>
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
</command>
<command>
<proto>void <name>glFramebufferSampleLocationsfvARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>start</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param>const <ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glFramebufferSampleLocationsfvNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>start</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param>const <ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
+ <proto>void <name>glFramebufferSamplePositionsfvAMD</name></proto>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLuint</ptype> <name>numsamples</name></param>
+ <param><ptype>GLuint</ptype> <name>pixelindex</name></param>
+ <param>const <ptype>GLfloat</ptype> *<name>values</name></param>
+ </command>
+ <command>
<proto>void <name>glFramebufferTexture</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
</command>
@@ -13591,7 +15334,7 @@
<proto>void <name>glFramebufferTexture1D</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<glx type="render" opcode="4321"/>
@@ -13600,7 +15343,7 @@
<proto>void <name>glFramebufferTexture1DEXT</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<alias name="glFramebufferTexture1D"/>
@@ -13610,7 +15353,7 @@
<proto>void <name>glFramebufferTexture2D</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<glx type="render" opcode="4322"/>
@@ -13619,35 +15362,45 @@
<proto>void <name>glFramebufferTexture2DEXT</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<alias name="glFramebufferTexture2D"/>
<glx type="render" opcode="4322"/>
</command>
<command>
+ <proto>void <name>glFramebufferTexture2DDownsampleIMG</name></proto>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLint</ptype> <name>level</name></param>
+ <param><ptype>GLint</ptype> <name>xscale</name></param>
+ <param><ptype>GLint</ptype> <name>yscale</name></param>
+ </command>
+ <command>
<proto>void <name>glFramebufferTexture2DMultisampleEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
</command>
<command>
<proto>void <name>glFramebufferTexture2DMultisampleIMG</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
</command>
<command>
<proto>void <name>glFramebufferTexture2DOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
</command>
@@ -13655,7 +15408,7 @@
<proto>void <name>glFramebufferTexture3D</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>zoffset</name></param>
@@ -13665,7 +15418,7 @@
<proto>void <name>glFramebufferTexture3DEXT</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>zoffset</name></param>
@@ -13674,13 +15427,12 @@
</command>
<command>
<proto>void <name>glFramebufferTexture3DOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>textarget</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>textarget</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>zoffset</name></param>
- <alias name="glFramebufferTexture3D"/>
</command>
<command>
<proto>void <name>glFramebufferTextureARB</name></proto>
@@ -13743,6 +15495,16 @@
<alias name="glFramebufferTextureLayer"/>
</command>
<command>
+ <proto>void <name>glFramebufferTextureLayerDownsampleIMG</name></proto>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
+ <param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
+ <param group="CheckedInt32"><ptype>GLint</ptype> <name>layer</name></param>
+ <param><ptype>GLint</ptype> <name>xscale</name></param>
+ <param><ptype>GLint</ptype> <name>yscale</name></param>
+ </command>
+ <command>
<proto>void <name>glFramebufferTextureMultisampleMultiviewOVR</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
@@ -13939,6 +15701,11 @@
<param len="n"><ptype>GLuint</ptype> *<name>ids</name></param>
</command>
<command>
+ <proto>void <name>glGenQueryResourceTagNV</name></proto>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param len="n"><ptype>GLint</ptype> *<name>tagIds</name></param>
+ </command>
+ <command>
<proto>void <name>glGenRenderbuffers</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
<param len="n"><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
@@ -13962,6 +15729,11 @@
<param len="count"><ptype>GLuint</ptype> *<name>samplers</name></param>
</command>
<command>
+ <proto>void <name>glGenSemaphoresEXT</name></proto>
+ <param><ptype>GLsizei</ptype> <name>n</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>semaphores</name></param>
+ </command>
+ <command>
<proto><ptype>GLuint</ptype> <name>glGenSymbolsEXT</name></proto>
<param group="DataTypeEXT"><ptype>GLenum</ptype> <name>datatype</name></param>
<param group="VertexShaderStorageTypeEXT"><ptype>GLenum</ptype> <name>storagetype</name></param>
@@ -14015,18 +15787,18 @@
</command>
<command>
<proto>void <name>glGenerateMipmap</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<glx type="render" opcode="4325"/>
</command>
<command>
<proto>void <name>glGenerateMipmapEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<alias name="glGenerateMipmap"/>
<glx type="render" opcode="4325"/>
</command>
<command>
<proto>void <name>glGenerateMipmapOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
</command>
<command>
<proto>void <name>glGenerateMultiTexMipmapEXT</name></proto>
@@ -14046,7 +15818,7 @@
<proto>void <name>glGetActiveAtomicCounterBufferiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLuint</ptype> <name>bufferIndex</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="AtomicCounterBufferPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -14056,7 +15828,7 @@
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="1"><ptype>GLint</ptype> *<name>size</name></param>
- <param len="1"><ptype>GLenum</ptype> *<name>type</name></param>
+ <param group="AttributeType" len="1"><ptype>GLenum</ptype> *<name>type</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
@@ -14066,14 +15838,14 @@
<param><ptype>GLsizei</ptype> <name>maxLength</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="1"><ptype>GLint</ptype> *<name>size</name></param>
- <param len="1"><ptype>GLenum</ptype> *<name>type</name></param>
+ <param len="1" group="AttributeType"><ptype>GLenum</ptype> *<name>type</name></param>
<param len="maxLength"><ptype>GLcharARB</ptype> *<name>name</name></param>
<alias name="glGetActiveAttrib"/>
</command>
<command>
<proto>void <name>glGetActiveSubroutineName</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLsizei</ptype> <name>bufsize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
@@ -14082,7 +15854,7 @@
<command>
<proto>void <name>glGetActiveSubroutineUniformName</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLsizei</ptype> <name>bufsize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
@@ -14091,9 +15863,9 @@
<command>
<proto>void <name>glGetActiveSubroutineUniformiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SubroutineParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>values</name></param>
</command>
<command>
@@ -14103,7 +15875,7 @@
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="1"><ptype>GLint</ptype> *<name>size</name></param>
- <param len="1"><ptype>GLenum</ptype> *<name>type</name></param>
+ <param len="1" group="AttributeType"><ptype>GLenum</ptype> *<name>type</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
@@ -14113,7 +15885,7 @@
<param><ptype>GLsizei</ptype> <name>maxLength</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="1"><ptype>GLint</ptype> *<name>size</name></param>
- <param len="1"><ptype>GLenum</ptype> *<name>type</name></param>
+ <param len="1" group="AttributeType"><ptype>GLenum</ptype> *<name>type</name></param>
<param len="maxLength"><ptype>GLcharARB</ptype> *<name>name</name></param>
<alias name="glGetActiveUniform"/>
</command>
@@ -14124,13 +15896,15 @@
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>uniformBlockName</name></param>
+ <glx type="single" opcode="220"/>
</command>
<command>
<proto>void <name>glGetActiveUniformBlockiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLuint</ptype> <name>uniformBlockIndex</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="UniformBlockPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(program,uniformBlockIndex,pname)"><ptype>GLint</ptype> *<name>params</name></param>
+ <glx type="single" opcode="219"/>
</command>
<command>
<proto>void <name>glGetActiveUniformName</name></proto>
@@ -14139,14 +15913,16 @@
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>uniformName</name></param>
+ <glx type="single" opcode="217"/>
</command>
<command>
<proto>void <name>glGetActiveUniformsiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLsizei</ptype> <name>uniformCount</name></param>
<param len="uniformCount">const <ptype>GLuint</ptype> *<name>uniformIndices</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="UniformPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(uniformCount,pname)"><ptype>GLint</ptype> *<name>params</name></param>
+ <glx type="single" opcode="216"/>
</command>
<command>
<proto>void <name>glGetActiveVaryingNV</name></proto>
@@ -14197,14 +15973,15 @@
</command>
<command>
<proto>void <name>glGetBooleanIndexedvEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param group="Boolean" len="COMPSIZE(target)"><ptype>GLboolean</ptype> *<name>data</name></param>
<alias name="glGetBooleani_v"/>
+ <glx type="single" opcode="210"/>
</command>
<command>
<proto>void <name>glGetBooleani_v</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param group="Boolean" len="COMPSIZE(target)"><ptype>GLboolean</ptype> *<name>data</name></param>
</command>
@@ -14235,7 +16012,7 @@
</command>
<command>
<proto>void <name>glGetBufferParameterui64vNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint64EXT</ptype> *<name>params</name></param>
</command>
@@ -14254,8 +16031,8 @@
</command>
<command>
<proto>void <name>glGetBufferPointervOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferPointerNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param>void **<name>params</name></param>
<alias name="glGetBufferPointerv"/>
</command>
@@ -14282,23 +16059,23 @@
</command>
<command>
<proto>void <name>glGetClipPlanef</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4"><ptype>GLfloat</ptype> *<name>equation</name></param>
</command>
<command>
<proto>void <name>glGetClipPlanefOES</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4"><ptype>GLfloat</ptype> *<name>equation</name></param>
<glx type="vendor" opcode="1421"/>
</command>
<command>
<proto>void <name>glGetClipPlanex</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4"><ptype>GLfixed</ptype> *<name>equation</name></param>
</command>
<command>
<proto>void <name>glGetClipPlanexOES</name></proto>
- <param><ptype>GLenum</ptype> <name>plane</name></param>
+ <param group="ClipPlaneName"><ptype>GLenum</ptype> <name>plane</name></param>
<param len="4"><ptype>GLfixed</ptype> *<name>equation</name></param>
</command>
<command>
@@ -14321,14 +16098,14 @@
<command>
<proto>void <name>glGetColorTableParameterfv</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetColorTableParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetColorTableParameterPNameSGI"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="single" opcode="148"/>
</command>
<command>
<proto>void <name>glGetColorTableParameterfvEXT</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetColorTableParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetColorTableParameterPNameSGI"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
<alias name="glGetColorTableParameterfv"/>
</command>
@@ -14342,14 +16119,14 @@
<command>
<proto>void <name>glGetColorTableParameteriv</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetColorTableParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetColorTableParameterPNameSGI"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="149"/>
</command>
<command>
<proto>void <name>glGetColorTableParameterivEXT</name></proto>
<param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetColorTableParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetColorTableParameterPNameSGI"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetColorTableParameteriv"/>
</command>
@@ -14483,7 +16260,7 @@
<command>
<proto>void <name>glGetConvolutionParameterfv</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetConvolutionParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="single" opcode="151"/>
</command>
@@ -14497,7 +16274,7 @@
<command>
<proto>void <name>glGetConvolutionParameteriv</name></proto>
<param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetConvolutionParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ConvolutionParameterEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="152"/>
</command>
@@ -14523,10 +16300,10 @@
<proto><ptype>GLuint</ptype> <name>glGetDebugMessageLog</name></proto>
<param><ptype>GLuint</ptype> <name>count</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>sources</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>types</name></param>
+ <param len="count" group="DebugSource"><ptype>GLenum</ptype> *<name>sources</name></param>
+ <param len="count" group="DebugType"><ptype>GLenum</ptype> *<name>types</name></param>
<param len="count"><ptype>GLuint</ptype> *<name>ids</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>severities</name></param>
+ <param len="count" group="DebugSeverity"><ptype>GLenum</ptype> *<name>severities</name></param>
<param len="count"><ptype>GLsizei</ptype> *<name>lengths</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>messageLog</name></param>
</command>
@@ -14535,7 +16312,7 @@
<param><ptype>GLuint</ptype> <name>count</name></param>
<param><ptype>GLsizei</ptype> <name>bufsize</name></param>
<param len="count"><ptype>GLenum</ptype> *<name>categories</name></param>
- <param len="count"><ptype>GLuint</ptype> *<name>severities</name></param>
+ <param len="count" group="DebugSeverity"><ptype>GLuint</ptype> *<name>severities</name></param>
<param len="count"><ptype>GLuint</ptype> *<name>ids</name></param>
<param len="count"><ptype>GLsizei</ptype> *<name>lengths</name></param>
<param len="bufsize"><ptype>GLchar</ptype> *<name>message</name></param>
@@ -14544,10 +16321,10 @@
<proto><ptype>GLuint</ptype> <name>glGetDebugMessageLogARB</name></proto>
<param><ptype>GLuint</ptype> <name>count</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>sources</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>types</name></param>
+ <param len="count" group="DebugSource"><ptype>GLenum</ptype> *<name>sources</name></param>
+ <param len="count" group="DebugType"><ptype>GLenum</ptype> *<name>types</name></param>
<param len="count"><ptype>GLuint</ptype> *<name>ids</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>severities</name></param>
+ <param len="count" group="DebugSeverity"><ptype>GLenum</ptype> *<name>severities</name></param>
<param len="count"><ptype>GLsizei</ptype> *<name>lengths</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>messageLog</name></param>
<alias name="glGetDebugMessageLog"/>
@@ -14556,10 +16333,10 @@
<proto><ptype>GLuint</ptype> <name>glGetDebugMessageLogKHR</name></proto>
<param><ptype>GLuint</ptype> <name>count</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>sources</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>types</name></param>
+ <param len="count" group="DebugSource"><ptype>GLenum</ptype> *<name>sources</name></param>
+ <param len="count" group="DebugType"><ptype>GLenum</ptype> *<name>types</name></param>
<param len="count"><ptype>GLuint</ptype> *<name>ids</name></param>
- <param len="count"><ptype>GLenum</ptype> *<name>severities</name></param>
+ <param len="count" group="DebugSeverity"><ptype>GLenum</ptype> *<name>severities</name></param>
<param len="count"><ptype>GLsizei</ptype> *<name>lengths</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>messageLog</name></param>
<alias name="glGetDebugMessageLog"/>
@@ -14579,7 +16356,7 @@
</command>
<command>
<proto>void <name>glGetDoublei_v</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="COMPSIZE(target)"><ptype>GLdouble</ptype> *<name>data</name></param>
</command>
@@ -14640,12 +16417,12 @@
</command>
<command>
<proto>void <name>glGetFixedv</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetFixedvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -14676,6 +16453,13 @@
<alias name="glGetFloati_v"/>
</command>
<command>
+ <proto>void <name>glGetFloati_vOES</name></proto>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param len="COMPSIZE(target)"><ptype>GLfloat</ptype> *<name>data</name></param>
+ <alias name="glGetFloati_v"/>
+ </command>
+ <command>
<proto>void <name>glGetFloatv</name></proto>
<param group="GetPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>data</name></param>
@@ -14735,7 +16519,7 @@
<proto>void <name>glGetFramebufferAttachmentParameteriv</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="vendor" opcode="1428"/>
</command>
@@ -14743,22 +16527,31 @@
<proto>void <name>glGetFramebufferAttachmentParameterivEXT</name></proto>
<param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetFramebufferAttachmentParameteriv"/>
<glx type="vendor" opcode="1428"/>
</command>
<command>
<proto>void <name>glGetFramebufferAttachmentParameterivOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
+ <proto>void <name>glGetFramebufferParameterfvAMD</name></proto>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLuint</ptype> <name>numsamples</name></param>
+ <param><ptype>GLuint</ptype> <name>pixelindex</name></param>
+ <param><ptype>GLsizei</ptype> <name>size</name></param>
+ <param><ptype>GLfloat</ptype> *<name>values</name></param>
+ </command>
+ <command>
<proto>void <name>glGetFramebufferParameteriv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -14768,16 +16561,20 @@
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glGetGraphicsResetStatus</name></proto>
+ <proto><ptype>GLsizei</ptype> <name>glGetFramebufferPixelLocalStorageSizeEXT</name></proto>
+ <param group="FramebufferTarget"><ptype>GLuint</ptype> <name>target</name></param>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glGetGraphicsResetStatusARB</name></proto>
+ <proto group="GraphicsResetStatus"><ptype>GLenum</ptype> <name>glGetGraphicsResetStatus</name></proto>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glGetGraphicsResetStatusEXT</name></proto>
+ <proto group="GraphicsResetStatus"><ptype>GLenum</ptype> <name>glGetGraphicsResetStatusARB</name></proto>
</command>
<command>
- <proto><ptype>GLenum</ptype> <name>glGetGraphicsResetStatusKHR</name></proto>
+ <proto group="GraphicsResetStatus"><ptype>GLenum</ptype> <name>glGetGraphicsResetStatusEXT</name></proto>
+ </command>
+ <command>
+ <proto group="GraphicsResetStatus"><ptype>GLenum</ptype> <name>glGetGraphicsResetStatusKHR</name></proto>
<alias name="glGetGraphicsResetStatus"/>
</command>
<command>
@@ -14786,7 +16583,7 @@
</command>
<command>
<proto>void <name>glGetHistogram</name></proto>
- <param group="HistogramTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>reset</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -14805,8 +16602,8 @@
</command>
<command>
<proto>void <name>glGetHistogramParameterfv</name></proto>
- <param group="HistogramTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetHistogramParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetHistogramParameterPNameEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="single" opcode="155"/>
</command>
@@ -14819,8 +16616,8 @@
</command>
<command>
<proto>void <name>glGetHistogramParameteriv</name></proto>
- <param group="HistogramTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetHistogramParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetHistogramParameterPNameEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="156"/>
</command>
@@ -14833,8 +16630,8 @@
</command>
<command>
<proto>void <name>glGetHistogramParameterxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetHistogramParameterPNameEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -14843,7 +16640,7 @@
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLboolean</ptype> <name>layered</name></param>
<param><ptype>GLint</ptype> <name>layer</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
</command>
<command>
<proto><ptype>GLuint64</ptype> <name>glGetImageHandleNV</name></proto>
@@ -14851,7 +16648,7 @@
<param><ptype>GLint</ptype> <name>level</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>layered</name></param>
<param><ptype>GLint</ptype> <name>layer</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
</command>
<command>
<proto>void <name>glGetImageTransformParameterfvHP</name></proto>
@@ -14878,18 +16675,18 @@
</command>
<command>
<proto>void <name>glGetInteger64i_v</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="COMPSIZE(target)"><ptype>GLint64</ptype> *<name>data</name></param>
</command>
<command>
<proto>void <name>glGetInteger64v</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint64</ptype> *<name>data</name></param>
</command>
<command>
<proto>void <name>glGetInteger64vAPPLE</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint64</ptype> *<name>params</name></param>
<alias name="glGetInteger64v"/>
</command>
@@ -14899,16 +16696,17 @@
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="COMPSIZE(target)"><ptype>GLint</ptype> *<name>data</name></param>
<alias name="glGetIntegeri_v"/>
+ <glx type="single" opcode="211"/>
</command>
<command>
<proto>void <name>glGetIntegeri_v</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="COMPSIZE(target)"><ptype>GLint</ptype> *<name>data</name></param>
</command>
<command>
<proto>void <name>glGetIntegeri_vEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> *<name>data</name></param>
</command>
@@ -14931,26 +16729,26 @@
</command>
<command>
<proto>void <name>glGetInternalformatSampleivNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="InternalFormatPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetInternalformati64v</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormatPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetInternalformativ</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormatPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
</command>
@@ -14988,20 +16786,20 @@
</command>
<command>
<proto>void <name>glGetLightxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetLightxv</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetLightxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -15093,8 +16891,8 @@
</command>
<command>
<proto>void <name>glGetMapxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetMapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param len="COMPSIZE(query)"><ptype>GLfixed</ptype> *<name>v</name></param>
</command>
<command>
@@ -15113,25 +16911,31 @@
</command>
<command>
<proto>void <name>glGetMaterialxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glGetMaterialxv</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetMaterialxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
+ <proto>void <name>glGetMemoryObjectParameterivEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memoryObject</name></param>
+ <param group="MemoryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLint</ptype> *<name>params</name></param>
+ </command>
+ <command>
<proto>void <name>glGetMinmax</name></proto>
- <param group="MinmaxTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>reset</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
@@ -15150,8 +16954,8 @@
</command>
<command>
<proto>void <name>glGetMinmaxParameterfv</name></proto>
- <param group="MinmaxTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetMinmaxParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetMinmaxParameterPNameEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="single" opcode="158"/>
</command>
@@ -15164,8 +16968,8 @@
</command>
<command>
<proto>void <name>glGetMinmaxParameteriv</name></proto>
- <param group="MinmaxTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="GetMinmaxParameterPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetMinmaxParameterPNameEXT"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="159"/>
</command>
@@ -15266,7 +17070,7 @@
</command>
<command>
<proto>void <name>glGetMultisamplefv</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetMultisamplePNameNV"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>val</name></param>
</command>
@@ -15280,13 +17084,13 @@
<command>
<proto>void <name>glGetNamedBufferParameteri64v</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetNamedBufferParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -15304,7 +17108,7 @@
<command>
<proto>void <name>glGetNamedBufferPointerv</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexBufferObjectParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param>void **<name>params</name></param>
</command>
<command>
@@ -15328,10 +17132,19 @@
<param len="COMPSIZE(size)">void *<name>data</name></param>
</command>
<command>
+ <proto>void <name>glGetNamedFramebufferParameterfvAMD</name></proto>
+ <param><ptype>GLuint</ptype> <name>framebuffer</name></param>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLuint</ptype> <name>numsamples</name></param>
+ <param><ptype>GLuint</ptype> <name>pixelindex</name></param>
+ <param><ptype>GLsizei</ptype> <name>size</name></param>
+ <param><ptype>GLfloat</ptype> *<name>values</name></param>
+ </command>
+ <command>
<proto>void <name>glGetNamedFramebufferAttachmentParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="FramebufferAttachmentParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -15344,7 +17157,7 @@
<command>
<proto>void <name>glGetNamedFramebufferParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetFramebufferParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
@@ -15392,13 +17205,13 @@
<proto>void <name>glGetNamedProgramivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param group="ProgramTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="ProgramProperty"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ProgramPropertyARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="1"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetNamedRenderbufferParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="RenderbufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -15660,7 +17473,7 @@
<param><ptype>GLuint</ptype> <name>queryHandle</name></param>
<param><ptype>GLuint</ptype> <name>flags</name></param>
<param><ptype>GLsizei</ptype> <name>dataSize</name></param>
- <param><ptype>GLvoid</ptype> *<name>data</name></param>
+ <param>void *<name>data</name></param>
<param><ptype>GLuint</ptype> *<name>bytesWritten</name></param>
</command>
<command>
@@ -15701,7 +17514,7 @@
</command>
<command>
<proto>void <name>glGetPixelMapxv</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
<param len="size"><ptype>GLfixed</ptype> *<name>values</name></param>
</command>
@@ -15717,14 +17530,14 @@
</command>
<command>
<proto>void <name>glGetPixelTransformParameterfvEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
<glx type="vendor" opcode="2051"/>
</command>
<command>
<proto>void <name>glGetPixelTransformParameterivEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TypeEnum"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="vendor" opcode="2052"/>
@@ -15817,8 +17630,8 @@
<command>
<proto>void <name>glGetProgramInterfaceiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterfacePName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -15894,43 +17707,43 @@
<command>
<proto>void <name>glGetProgramPipelineiv</name></proto>
<param><ptype>GLuint</ptype> <name>pipeline</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PipelineParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetProgramPipelineivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>pipeline</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PipelineParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glGetProgramResourceIndex</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param len="COMPSIZE(name)">const <ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetProgramResourceLocation</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param len="COMPSIZE(name)">const <ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetProgramResourceLocationIndex</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param len="COMPSIZE(name)">const <ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetProgramResourceLocationIndexEXT</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param len="COMPSIZE(name)">const <ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
<proto>void <name>glGetProgramResourceName</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
@@ -15939,7 +17752,7 @@
<command>
<proto>void <name>glGetProgramResourcefvNV</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLsizei</ptype> <name>propCount</name></param>
<param>const <ptype>GLenum</ptype> *<name>props</name></param>
@@ -15950,7 +17763,7 @@
<command>
<proto>void <name>glGetProgramResourceiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>programInterface</name></param>
+ <param group="ProgramInterface"><ptype>GLenum</ptype> <name>programInterface</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLsizei</ptype> <name>propCount</name></param>
<param len="propCount">const <ptype>GLenum</ptype> *<name>props</name></param>
@@ -15961,8 +17774,8 @@
<command>
<proto>void <name>glGetProgramStageiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ProgramStagePName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="1"><ptype>GLint</ptype> *<name>values</name></param>
</command>
<command>
@@ -15987,7 +17800,7 @@
<command>
<proto>void <name>glGetProgramiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ProgramPropertyARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="199"/>
</command>
@@ -16008,47 +17821,47 @@
<proto>void <name>glGetQueryBufferObjecti64v</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
</command>
<command>
<proto>void <name>glGetQueryBufferObjectiv</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
</command>
<command>
<proto>void <name>glGetQueryBufferObjectui64v</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
</command>
<command>
<proto>void <name>glGetQueryBufferObjectuiv</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
</command>
<command>
<proto>void <name>glGetQueryIndexediv</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetQueryObjecti64v</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetQueryObjecti64vEXT</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint64</ptype> *<name>params</name></param>
<glx type="vendor" opcode="1328"/>
<alias name="glGetQueryObjecti64v"/>
@@ -16056,34 +17869,34 @@
<command>
<proto>void <name>glGetQueryObjectiv</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="165"/>
</command>
<command>
<proto>void <name>glGetQueryObjectivARB</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetQueryObjectiv"/>
</command>
<command>
<proto>void <name>glGetQueryObjectivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetQueryObjectiv"/>
</command>
<command>
<proto>void <name>glGetQueryObjectui64v</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetQueryObjectui64vEXT</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint64</ptype> *<name>params</name></param>
<glx type="vendor" opcode="1329"/>
<alias name="glGetQueryObjectui64v"/>
@@ -16091,119 +17904,125 @@
<command>
<proto>void <name>glGetQueryObjectuiv</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint</ptype> *<name>params</name></param>
<glx type="single" opcode="166"/>
</command>
<command>
<proto>void <name>glGetQueryObjectuivARB</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint</ptype> *<name>params</name></param>
<alias name="glGetQueryObjectuiv"/>
</command>
<command>
<proto>void <name>glGetQueryObjectuivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLuint</ptype> *<name>params</name></param>
+ <param group="QueryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetQueryiv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="164"/>
</command>
<command>
<proto>void <name>glGetQueryivARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetQueryiv"/>
</command>
<command>
<proto>void <name>glGetQueryivEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetRenderbufferParameteriv</name></proto>
<param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="RenderbufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="vendor" opcode="1424"/>
</command>
<command>
<proto>void <name>glGetRenderbufferParameterivEXT</name></proto>
<param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="RenderbufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetRenderbufferParameteriv"/>
<glx type="vendor" opcode="1424"/>
</command>
<command>
<proto>void <name>glGetRenderbufferParameterivOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetSamplerParameterIiv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetSamplerParameterIivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetSamplerParameterIiv"/>
</command>
<command>
<proto>void <name>glGetSamplerParameterIivOES</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetSamplerParameterIiv"/>
</command>
<command>
<proto>void <name>glGetSamplerParameterIuiv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetSamplerParameterIuivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint</ptype> *<name>params</name></param>
<alias name="glGetSamplerParameterIuiv"/>
</command>
<command>
<proto>void <name>glGetSamplerParameterIuivOES</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint</ptype> *<name>params</name></param>
<alias name="glGetSamplerParameterIuiv"/>
</command>
<command>
<proto>void <name>glGetSamplerParameterfv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetSamplerParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
+ <proto>void <name>glGetSemaphoreParameterui64vEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param group="SemaphoreParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLuint64</ptype> *<name>params</name></param>
+ </command>
+ <command>
<proto>void <name>glGetSeparableFilter</name></proto>
- <param group="SeparableTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="SeparableTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
<param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(target,format,type)">void *<name>row</name></param>
@@ -16232,10 +18051,10 @@
</command>
<command>
<proto>void <name>glGetShaderPrecisionFormat</name></proto>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
- <param><ptype>GLenum</ptype> <name>precisiontype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="PrecisionType"><ptype>GLenum</ptype> <name>precisiontype</name></param>
<param len="2"><ptype>GLint</ptype> *<name>range</name></param>
- <param len="2"><ptype>GLint</ptype> *<name>precision</name></param>
+ <param len="1"><ptype>GLint</ptype> *<name>precision</name></param>
</command>
<command>
<proto>void <name>glGetShaderSource</name></proto>
@@ -16255,7 +18074,7 @@
<command>
<proto>void <name>glGetShaderiv</name></proto>
<param><ptype>GLuint</ptype> <name>shader</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="ShaderParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
<glx type="single" opcode="198"/>
</command>
@@ -16267,7 +18086,7 @@
</command>
<command>
<proto><ptype>GLushort</ptype> <name>glGetStageIndexNV</name></proto>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
</command>
<command>
<proto group="String">const <ptype>GLubyte</ptype> *<name>glGetString</name></proto>
@@ -16276,25 +18095,26 @@
</command>
<command>
<proto group="String">const <ptype>GLubyte</ptype> *<name>glGetStringi</name></proto>
- <param><ptype>GLenum</ptype> <name>name</name></param>
+ <param group="StringName"><ptype>GLenum</ptype> <name>name</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
+ <glx type="single" opcode="214"/>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glGetSubroutineIndex</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param>const <ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetSubroutineUniformLocation</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param>const <ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
<proto>void <name>glGetSynciv</name></proto>
<param group="sync"><ptype>GLsync</ptype> <name>sync</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SyncParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>values</name></param>
@@ -16302,7 +18122,7 @@
<command>
<proto>void <name>glGetSyncivAPPLE</name></proto>
<param><ptype>GLsync</ptype> <name>sync</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SyncParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>values</name></param>
@@ -16334,14 +18154,14 @@
</command>
<command>
<proto>void <name>glGetTexEnvxv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureEnvTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureEnvParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexEnvxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureEnvTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureEnvParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -16367,8 +18187,8 @@
</command>
<command>
<proto>void <name>glGetTexGenfvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
@@ -16380,14 +18200,14 @@
</command>
<command>
<proto>void <name>glGetTexGenivOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexGenxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -16418,9 +18238,9 @@
</command>
<command>
<proto>void <name>glGetTexLevelParameterxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -16487,14 +18307,14 @@
</command>
<command>
<proto>void <name>glGetTexParameterxv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexParameterxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -16502,6 +18322,11 @@
<param><ptype>GLuint</ptype> <name>texture</name></param>
</command>
<command>
+ <proto><ptype>GLuint64</ptype> <name>glGetTextureHandleIMG</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <alias name="glGetTextureHandleARB"/>
+ </command>
+ <command>
<proto><ptype>GLuint64</ptype> <name>glGetTextureHandleNV</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
</command>
@@ -16509,8 +18334,8 @@
<proto>void <name>glGetTextureImage</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>pixels</name></param>
</command>
@@ -16527,7 +18352,7 @@
<proto>void <name>glGetTextureLevelParameterfv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
@@ -16542,7 +18367,7 @@
<proto>void <name>glGetTextureLevelParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -16556,7 +18381,7 @@
<command>
<proto>void <name>glGetTextureParameterIiv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -16569,7 +18394,7 @@
<command>
<proto>void <name>glGetTextureParameterIuiv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
@@ -16582,7 +18407,7 @@
<command>
<proto>void <name>glGetTextureParameterfv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
@@ -16595,7 +18420,7 @@
<command>
<proto>void <name>glGetTextureParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -16611,6 +18436,12 @@
<param><ptype>GLuint</ptype> <name>sampler</name></param>
</command>
<command>
+ <proto><ptype>GLuint64</ptype> <name>glGetTextureSamplerHandleIMG</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLuint</ptype> <name>sampler</name></param>
+ <alias name="glGetTextureSamplerHandleARB"/>
+ </command>
+ <command>
<proto><ptype>GLuint64</ptype> <name>glGetTextureSamplerHandleNV</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
@@ -16625,8 +18456,8 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>pixels</name></param>
</command>
@@ -16647,6 +18478,7 @@
<param len="1"><ptype>GLsizei</ptype> *<name>size</name></param>
<param len="1"><ptype>GLenum</ptype> *<name>type</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param>
+ <glx type="single" opcode="213"/>
</command>
<command>
<proto>void <name>glGetTransformFeedbackVaryingEXT</name></proto>
@@ -16668,21 +18500,21 @@
<command>
<proto>void <name>glGetTransformFeedbacki64_v</name></proto>
<param><ptype>GLuint</ptype> <name>xfb</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TransformFeedbackPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint64</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glGetTransformFeedbacki_v</name></proto>
<param><ptype>GLuint</ptype> <name>xfb</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TransformFeedbackPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glGetTransformFeedbackiv</name></proto>
<param><ptype>GLuint</ptype> <name>xfb</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TransformFeedbackPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
@@ -16696,6 +18528,7 @@
<proto><ptype>GLuint</ptype> <name>glGetUniformBlockIndex</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param len="COMPSIZE()">const <ptype>GLchar</ptype> *<name>uniformBlockName</name></param>
+ <glx type="single" opcode="218"/>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetUniformBufferSizeEXT</name></proto>
@@ -16708,6 +18541,7 @@
<param><ptype>GLsizei</ptype> <name>uniformCount</name></param>
<param len="COMPSIZE(uniformCount)">const <ptype>GLchar</ptype> *const*<name>uniformNames</name></param>
<param len="COMPSIZE(uniformCount)"><ptype>GLuint</ptype> *<name>uniformIndices</name></param>
+ <glx type="single" opcode="215"/>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetUniformLocation</name></proto>
@@ -16727,7 +18561,7 @@
</command>
<command>
<proto>void <name>glGetUniformSubroutineuiv</name></proto>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param len="1"><ptype>GLuint</ptype> *<name>params</name></param>
</command>
@@ -16801,6 +18635,17 @@
<alias name="glGetUniformuiv"/>
</command>
<command>
+ <proto>void <name>glGetUnsignedBytevEXT</name></proto>
+ <param group="GetPName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLubyte</ptype> *<name>data</name></param>
+ </command>
+ <command>
+ <proto>void <name>glGetUnsignedBytei_vEXT</name></proto>
+ <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param len="COMPSIZE(target)"><ptype>GLubyte</ptype> *<name>data</name></param>
+ </command>
+ <command>
<proto>void <name>glGetVariantArrayObjectfvATI</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param group="ArrayObjectPNameATI"><ptype>GLenum</ptype> <name>pname</name></param>
@@ -16845,46 +18690,46 @@
<proto>void <name>glGetVertexArrayIndexed64iv</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint64</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexArrayIndexediv</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexArrayIntegeri_vEXT</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexArrayIntegervEXT</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexArrayPointeri_vEXT</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param>void **<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexArrayPointervEXT</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="1">void **<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexArrayiv</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexArrayPName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
@@ -16928,32 +18773,32 @@
<command>
<proto>void <name>glGetVertexAttribLdv</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLdouble</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetVertexAttribLdvEXT</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLdouble</ptype> *<name>params</name></param>
<alias name="glGetVertexAttribLdv"/>
</command>
<command>
<proto>void <name>glGetVertexAttribLi64vNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLint64EXT</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetVertexAttribLui64vARB</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLuint64EXT</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetVertexAttribLui64vNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)"><ptype>GLuint64EXT</ptype> *<name>params</name></param>
</command>
<command>
@@ -17099,161 +18944,161 @@
</command>
<command>
<proto>void <name>glGetnColorTable</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>table</name></param>
</command>
<command>
<proto>void <name>glGetnColorTableARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorTableTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>table</name></param>
</command>
<command>
<proto>void <name>glGetnCompressedTexImage</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>lod</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>pixels</name></param>
</command>
<command>
<proto>void <name>glGetnCompressedTexImageARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>lod</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>img</name></param>
</command>
<command>
<proto>void <name>glGetnConvolutionFilter</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>image</name></param>
</command>
<command>
<proto>void <name>glGetnConvolutionFilterARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ConvolutionTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>image</name></param>
</command>
<command>
<proto>void <name>glGetnHistogram</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLboolean</ptype> <name>reset</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnHistogramARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>reset</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnMapdv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLdouble</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMapdvARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLdouble</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMapfv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMapfvARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMapiv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLint</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMapivARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>query</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>v</name></param>
</command>
<command>
<proto>void <name>glGetnMinmax</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLboolean</ptype> <name>reset</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param>void *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnMinmaxARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>reset</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapfv</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLfloat</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapfvARB</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLfloat</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapuiv</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLuint</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapuivARB</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLuint</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapusv</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLushort</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glGetnPixelMapusvARB</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLushort</ptype> *<name>values</name></param>
</command>
@@ -17269,9 +19114,9 @@
</command>
<command>
<proto>void <name>glGetnSeparableFilter</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="SeparableTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>rowBufSize</name></param>
<param>void *<name>row</name></param>
<param><ptype>GLsizei</ptype> <name>columnBufSize</name></param>
@@ -17280,9 +19125,9 @@
</command>
<command>
<proto>void <name>glGetnSeparableFilterARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="SeparableTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>rowBufSize</name></param>
<param len="rowBufSize">void *<name>row</name></param>
<param><ptype>GLsizei</ptype> <name>columnBufSize</name></param>
@@ -17291,19 +19136,19 @@
</command>
<command>
<proto>void <name>glGetnTexImage</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param>void *<name>pixels</name></param>
+ <param len="bufSize">void *<name>pixels</name></param>
</command>
<command>
<proto>void <name>glGetnTexImageARB</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>img</name></param>
</command>
@@ -17312,7 +19157,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLdouble</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLdouble</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformdvARB</name></proto>
@@ -17326,7 +19171,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformfvARB</name></proto>
@@ -17341,13 +19186,14 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+ <alias name="glGetnUniformfv"/>
</command>
<command>
<proto>void <name>glGetnUniformfvKHR</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
<alias name="glGetnUniformfv"/>
</command>
<command>
@@ -17355,14 +19201,14 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLint64</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformivARB</name></proto>
@@ -17377,13 +19223,14 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+ <alias name="glGetnUniformiv"/>
</command>
<command>
<proto>void <name>glGetnUniformivKHR</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
<alias name="glGetnUniformiv"/>
</command>
<command>
@@ -17391,14 +19238,14 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLuint64</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLuint64</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformuiv</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLuint</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetnUniformuivARB</name></proto>
@@ -17412,7 +19259,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLuint</ptype> *<name>params</name></param>
+ <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
<alias name="glGetnUniformuiv"/>
</command>
<command>
@@ -17460,9 +19307,9 @@
</command>
<command>
<proto>void <name>glHistogram</name></proto>
- <param group="HistogramTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>sink</name></param>
<glx type="render" opcode="4110"/>
</command>
@@ -17470,7 +19317,7 @@
<proto>void <name>glHistogramEXT</name></proto>
<param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>sink</name></param>
<alias name="glHistogram"/>
<glx type="render" opcode="4110"/>
@@ -17506,6 +19353,45 @@
<param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
+ <proto>void <name>glImportMemoryFdEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>size</name></param>
+ <param group="ExternalHandleType"><ptype>GLenum</ptype> <name>handleType</name></param>
+ <param><ptype>GLint</ptype> <name>fd</name></param>
+ </command>
+ <command>
+ <proto>void <name>glImportMemoryWin32HandleEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>size</name></param>
+ <param group="ExternalHandleType"><ptype>GLenum</ptype> <name>handleType</name></param>
+ <param>void *<name>handle</name></param>
+ </command>
+ <command>
+ <proto>void <name>glImportMemoryWin32NameEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>size</name></param>
+ <param group="ExternalHandleType"><ptype>GLenum</ptype> <name>handleType</name></param>
+ <param>const void *<name>name</name></param>
+ </command>
+ <command>
+ <proto>void <name>glImportSemaphoreFdEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param group="ExternalHandleType"><ptype>GLenum</ptype> <name>handleType</name></param>
+ <param><ptype>GLint</ptype> <name>fd</name></param>
+ </command>
+ <command>
+ <proto>void <name>glImportSemaphoreWin32HandleEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param group="ExternalHandleType"><ptype>GLenum</ptype> <name>handleType</name></param>
+ <param>void *<name>handle</name></param>
+ </command>
+ <command>
+ <proto>void <name>glImportSemaphoreWin32NameEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param group="ExternalHandleType"><ptype>GLenum</ptype> <name>handleType</name></param>
+ <param>const void *<name>name</name></param>
+ </command>
+ <command>
<proto group="sync"><ptype>GLsync</ptype> <name>glImportSyncEXT</name></proto>
<param><ptype>GLenum</ptype> <name>external_sync_type</name></param>
<param><ptype>GLintptr</ptype> <name>external_sync</name></param>
@@ -17655,7 +19541,7 @@
</command>
<command>
<proto>void <name>glInvalidateFramebuffer</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="FramebufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>numAttachments</name></param>
<param len="numAttachments">const <ptype>GLenum</ptype> *<name>attachments</name></param>
</command>
@@ -17663,13 +19549,13 @@
<proto>void <name>glInvalidateNamedFramebufferData</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
<param><ptype>GLsizei</ptype> <name>numAttachments</name></param>
- <param>const <ptype>GLenum</ptype> *<name>attachments</name></param>
+ <param group="FramebufferAttachment">const <ptype>GLenum</ptype> *<name>attachments</name></param>
</command>
<command>
<proto>void <name>glInvalidateNamedFramebufferSubData</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
<param><ptype>GLsizei</ptype> <name>numAttachments</name></param>
- <param>const <ptype>GLenum</ptype> *<name>attachments</name></param>
+ <param group="FramebufferAttachment">const <ptype>GLenum</ptype> *<name>attachments</name></param>
<param><ptype>GLint</ptype> <name>x</name></param>
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -17679,7 +19565,7 @@
<proto>void <name>glInvalidateSubFramebuffer</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>numAttachments</name></param>
- <param len="numAttachments">const <ptype>GLenum</ptype> *<name>attachments</name></param>
+ <param len="numAttachments" group="FramebufferAttachment">const <ptype>GLenum</ptype> *<name>attachments</name></param>
<param><ptype>GLint</ptype> <name>x</name></param>
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -17729,30 +19615,31 @@
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsEnabledIndexedEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glIsEnabledi"/>
+ <glx type="single" opcode="212"/>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsEnabledi</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsEnablediEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glIsEnabledi"/>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsEnablediNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glIsEnabledi"/>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsEnablediOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="EnableCap"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<alias name="glIsEnabledi"/>
</command>
@@ -17794,6 +19681,10 @@
<glx type="single" opcode="141"/>
</command>
<command>
+ <proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsMemoryObjectEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memoryObject</name></param>
+ </command>
+ <command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsNameAMD</name></proto>
<param><ptype>GLenum</ptype> <name>identifier</name></param>
<param><ptype>GLuint</ptype> <name>name</name></param>
@@ -17886,6 +19777,10 @@
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
</command>
<command>
+ <proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsSemaphoreEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ </command>
+ <command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsSampler</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
</command>
@@ -17960,6 +19855,37 @@
<param><ptype>GLenum</ptype> <name>pname</name></param>
</command>
<command>
+ <proto>void <name>glLGPUCopyImageSubDataNVX</name></proto>
+ <param><ptype>GLuint</ptype> <name>sourceGpu</name></param>
+ <param><ptype>GLbitfield</ptype> <name>destinationGpuMask</name></param>
+ <param><ptype>GLuint</ptype> <name>srcName</name></param>
+ <param><ptype>GLenum</ptype> <name>srcTarget</name></param>
+ <param><ptype>GLint</ptype> <name>srcLevel</name></param>
+ <param><ptype>GLint</ptype> <name>srcX</name></param>
+ <param><ptype>GLint</ptype> <name>srxY</name></param>
+ <param><ptype>GLint</ptype> <name>srcZ</name></param>
+ <param><ptype>GLuint</ptype> <name>dstName</name></param>
+ <param><ptype>GLenum</ptype> <name>dstTarget</name></param>
+ <param><ptype>GLint</ptype> <name>dstLevel</name></param>
+ <param><ptype>GLint</ptype> <name>dstX</name></param>
+ <param><ptype>GLint</ptype> <name>dstY</name></param>
+ <param><ptype>GLint</ptype> <name>dstZ</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLsizei</ptype> <name>depth</name></param>
+ </command>
+ <command>
+ <proto>void <name>glLGPUInterlockNVX</name></proto>
+ </command>
+ <command>
+ <proto>void <name>glLGPUNamedBufferSubDataNVX</name></proto>
+ <param><ptype>GLbitfield</ptype> <name>gpuMask</name></param>
+ <param><ptype>GLuint</ptype> <name>buffer</name></param>
+ <param><ptype>GLintptr</ptype> <name>offset</name></param>
+ <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param>const void *<name>data</name></param>
+ </command>
+ <command>
<proto>void <name>glLabelObjectEXT</name></proto>
<param><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>object</name></param>
@@ -17997,22 +19923,22 @@
</command>
<command>
<proto>void <name>glLightModelx</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightModelParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glLightModelxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightModelParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glLightModelxv</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightModelParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glLightModelxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightModelParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
@@ -18045,26 +19971,26 @@
</command>
<command>
<proto>void <name>glLightx</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glLightxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glLightxv</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glLightxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>light</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="LightName"><ptype>GLenum</ptype> <name>light</name></param>
+ <param group="LightParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -18287,7 +20213,7 @@
</command>
<command>
<proto>void <name>glMap1xOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLfixed</ptype> <name>u1</name></param>
<param><ptype>GLfixed</ptype> <name>u2</name></param>
<param><ptype>GLint</ptype> <name>stride</name></param>
@@ -18324,7 +20250,7 @@
</command>
<command>
<proto>void <name>glMap2xOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLfixed</ptype> <name>u1</name></param>
<param><ptype>GLfixed</ptype> <name>u2</name></param>
<param><ptype>GLint</ptype> <name>ustride</name></param>
@@ -18348,8 +20274,8 @@
</command>
<command>
<proto>void *<name>glMapBufferOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>access</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferAccessARB"><ptype>GLenum</ptype> <name>access</name></param>
<alias name="glMapBuffer"/>
</command>
<command>
@@ -18362,10 +20288,10 @@
</command>
<command>
<proto>void *<name>glMapBufferRangeEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="BufferTargetARB"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param><ptype>GLsizeiptr</ptype> <name>length</name></param>
- <param><ptype>GLbitfield</ptype> <name>access</name></param>
+ <param group="BufferAccessMask"><ptype>GLbitfield</ptype> <name>access</name></param>
<alias name="glMapBufferRange"/>
</command>
<command>
@@ -18431,19 +20357,19 @@
<command>
<proto>void *<name>glMapNamedBuffer</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param><ptype>GLenum</ptype> <name>access</name></param>
+ <param group="BufferAccessARB"><ptype>GLenum</ptype> <name>access</name></param>
</command>
<command>
<proto>void *<name>glMapNamedBufferEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
- <param group="VertexBufferObjectAccess"><ptype>GLenum</ptype> <name>access</name></param>
+ <param group="BufferAccessARB"><ptype>GLenum</ptype> <name>access</name></param>
</command>
<command>
<proto>void *<name>glMapNamedBufferRange</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>length</name></param>
- <param><ptype>GLbitfield</ptype> <name>access</name></param>
+ <param group="BufferAccessMask"><ptype>GLbitfield</ptype> <name>access</name></param>
</command>
<command>
<proto>void *<name>glMapNamedBufferRangeEXT</name></proto>
@@ -18554,26 +20480,26 @@
</command>
<command>
<proto>void <name>glMaterialx</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glMaterialxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glMaterialxv</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glMaterialxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>face</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="MaterialFace"><ptype>GLenum</ptype> <name>face</name></param>
+ <param group="MaterialParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
@@ -18596,7 +20522,7 @@
<command>
<proto>void <name>glMatrixIndexPointerOES</name></proto>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="MatrixIndexPointerTypeARB"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
</command>
@@ -18760,23 +20686,34 @@
<param><ptype>GLfloat</ptype> <name>z</name></param>
</command>
<command>
- <proto>void <name>glMaxShaderCompilerThreadsARB</name></proto>
+ <proto>void <name>glMaxShaderCompilerThreadsKHR</name></proto>
<param><ptype>GLuint</ptype> <name>count</name></param>
</command>
<command>
+ <proto>void <name>glMaxShaderCompilerThreadsARB</name></proto>
+ <param><ptype>GLuint</ptype> <name>count</name></param>
+ <alias name="glMaxShaderCompilerThreadsKHR"/>
+ </command>
+ <command>
<proto>void <name>glMemoryBarrier</name></proto>
- <param><ptype>GLbitfield</ptype> <name>barriers</name></param>
+ <param group="MemoryBarrierMask"><ptype>GLbitfield</ptype> <name>barriers</name></param>
</command>
<command>
<proto>void <name>glMemoryBarrierByRegion</name></proto>
- <param><ptype>GLbitfield</ptype> <name>barriers</name></param>
+ <param group="MemoryBarrierMask"><ptype>GLbitfield</ptype> <name>barriers</name></param>
</command>
<command>
<proto>void <name>glMemoryBarrierEXT</name></proto>
- <param><ptype>GLbitfield</ptype> <name>barriers</name></param>
+ <param group="MemoryBarrierMask"><ptype>GLbitfield</ptype> <name>barriers</name></param>
<alias name="glMemoryBarrier"/>
</command>
<command>
+ <proto>void <name>glMemoryObjectParameterivEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memoryObject</name></param>
+ <param group="MemoryObjectParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param>const <ptype>GLint</ptype> *<name>params</name></param>
+ </command>
+ <command>
<proto>void <name>glMinSampleShading</name></proto>
<param group="ColorF"><ptype>GLfloat</ptype> <name>value</name></param>
</command>
@@ -18792,15 +20729,15 @@
</command>
<command>
<proto>void <name>glMinmax</name></proto>
- <param group="MinmaxTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>sink</name></param>
<glx type="render" opcode="4111"/>
</command>
<command>
<proto>void <name>glMinmaxEXT</name></proto>
<param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>sink</name></param>
<alias name="glMinmax"/>
<glx type="render" opcode="4111"/>
@@ -18862,14 +20799,14 @@
</command>
<command>
<proto>void <name>glMultiDrawArraysIndirect</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param len="COMPSIZE(drawcount,stride)">const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
<proto>void <name>glMultiDrawArraysIndirectAMD</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param>const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
@@ -18877,7 +20814,7 @@
</command>
<command>
<proto>void <name>glMultiDrawArraysIndirectBindlessCountNV</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param>const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawCount</name></param>
<param><ptype>GLsizei</ptype> <name>maxDrawCount</name></param>
@@ -18886,23 +20823,32 @@
</command>
<command>
<proto>void <name>glMultiDrawArraysIndirectBindlessNV</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param>const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawCount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param><ptype>GLint</ptype> <name>vertexBufferCount</name></param>
</command>
<command>
- <proto>void <name>glMultiDrawArraysIndirectCountARB</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLintptr</ptype> <name>indirect</name></param>
+ <proto>void <name>glMultiDrawArraysIndirectCount</name></proto>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param>const void *<name>indirect</name></param>
<param><ptype>GLintptr</ptype> <name>drawcount</name></param>
<param><ptype>GLsizei</ptype> <name>maxdrawcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
+ <proto>void <name>glMultiDrawArraysIndirectCountARB</name></proto>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param>const void *<name>indirect</name></param>
+ <param><ptype>GLintptr</ptype> <name>drawcount</name></param>
+ <param><ptype>GLsizei</ptype> <name>maxdrawcount</name></param>
+ <param><ptype>GLsizei</ptype> <name>stride</name></param>
+ <alias name="glMultiDrawArraysIndirectCount"/>
+ </command>
+ <command>
<proto>void <name>glMultiDrawArraysIndirectEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param len="COMPSIZE(drawcount,stride)">const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
@@ -18925,7 +20871,7 @@
</command>
<command>
<proto>void <name>glMultiDrawElementsBaseVertex</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param len="COMPSIZE(drawcount)">const <ptype>GLsizei</ptype> *<name>count</name></param>
<param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(drawcount)">const void *const*<name>indices</name></param>
@@ -18934,17 +20880,7 @@
</command>
<command>
<proto>void <name>glMultiDrawElementsBaseVertexEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param len="COMPSIZE(drawcount)">const <ptype>GLsizei</ptype> *<name>count</name></param>
- <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
- <param len="COMPSIZE(drawcount)">const void *const*<name>indices</name></param>
- <param><ptype>GLsizei</ptype> <name>primcount</name></param>
- <param len="COMPSIZE(drawcount)">const <ptype>GLint</ptype> *<name>basevertex</name></param>
- <alias name="glMultiDrawElementsBaseVertex"/>
- </command>
- <command>
- <proto>void <name>glMultiDrawElementsBaseVertexOES</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param len="COMPSIZE(drawcount)">const <ptype>GLsizei</ptype> *<name>count</name></param>
<param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(drawcount)">const void *const*<name>indices</name></param>
@@ -18963,16 +20899,16 @@
</command>
<command>
<proto>void <name>glMultiDrawElementsIndirect</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(drawcount,stride)">const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
<proto>void <name>glMultiDrawElementsIndirectAMD</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
@@ -18980,8 +20916,8 @@
</command>
<command>
<proto>void <name>glMultiDrawElementsIndirectBindlessCountNV</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawCount</name></param>
<param><ptype>GLsizei</ptype> <name>maxDrawCount</name></param>
@@ -18990,26 +20926,36 @@
</command>
<command>
<proto>void <name>glMultiDrawElementsIndirectBindlessNV</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawCount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param><ptype>GLint</ptype> <name>vertexBufferCount</name></param>
</command>
<command>
- <proto>void <name>glMultiDrawElementsIndirectCountARB</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <proto>void <name>glMultiDrawElementsIndirectCount</name></proto>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param><ptype>GLintptr</ptype> <name>indirect</name></param>
+ <param>const void *<name>indirect</name></param>
<param><ptype>GLintptr</ptype> <name>drawcount</name></param>
<param><ptype>GLsizei</ptype> <name>maxdrawcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
+ <proto>void <name>glMultiDrawElementsIndirectCountARB</name></proto>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
+ <param>const void *<name>indirect</name></param>
+ <param><ptype>GLintptr</ptype> <name>drawcount</name></param>
+ <param><ptype>GLsizei</ptype> <name>maxdrawcount</name></param>
+ <param><ptype>GLsizei</ptype> <name>stride</name></param>
+ <alias name="glMultiDrawElementsIndirectCount"/>
+ </command>
+ <command>
<proto>void <name>glMultiDrawElementsIndirectEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(drawcount,stride)">const void *<name>indirect</name></param>
<param><ptype>GLsizei</ptype> <name>drawcount</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
@@ -19050,12 +20996,12 @@
</command>
<command>
<proto>void <name>glMultiTexCoord1bOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLbyte</ptype> <name>s</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord1bvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="1">const <ptype>GLbyte</ptype> *<name>coords</name></param>
</command>
<command>
@@ -19176,23 +21122,23 @@
</command>
<command>
<proto>void <name>glMultiTexCoord1xOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLfixed</ptype> <name>s</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord1xvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="1">const <ptype>GLfixed</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord2bOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLbyte</ptype> <name>s</name></param>
<param><ptype>GLbyte</ptype> <name>t</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord2bvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="2">const <ptype>GLbyte</ptype> *<name>coords</name></param>
</command>
<command>
@@ -19322,25 +21268,25 @@
</command>
<command>
<proto>void <name>glMultiTexCoord2xOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLfixed</ptype> <name>s</name></param>
<param><ptype>GLfixed</ptype> <name>t</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord2xvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="2">const <ptype>GLfixed</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord3bOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLbyte</ptype> <name>s</name></param>
<param><ptype>GLbyte</ptype> <name>t</name></param>
<param><ptype>GLbyte</ptype> <name>r</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord3bvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="3">const <ptype>GLbyte</ptype> *<name>coords</name></param>
</command>
<command>
@@ -19479,19 +21425,19 @@
</command>
<command>
<proto>void <name>glMultiTexCoord3xOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLfixed</ptype> <name>s</name></param>
<param><ptype>GLfixed</ptype> <name>t</name></param>
<param><ptype>GLfixed</ptype> <name>r</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord3xvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="3">const <ptype>GLfixed</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoord4bOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLbyte</ptype> <name>s</name></param>
<param><ptype>GLbyte</ptype> <name>t</name></param>
<param><ptype>GLbyte</ptype> <name>r</name></param>
@@ -19499,7 +21445,7 @@
</command>
<command>
<proto>void <name>glMultiTexCoord4bvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="4">const <ptype>GLbyte</ptype> *<name>coords</name></param>
</command>
<command>
@@ -19647,7 +21593,7 @@
</command>
<command>
<proto>void <name>glMultiTexCoord4x</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLfixed</ptype> <name>s</name></param>
<param><ptype>GLfixed</ptype> <name>t</name></param>
<param><ptype>GLfixed</ptype> <name>r</name></param>
@@ -19655,7 +21601,7 @@
</command>
<command>
<proto>void <name>glMultiTexCoord4xOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param><ptype>GLfixed</ptype> <name>s</name></param>
<param><ptype>GLfixed</ptype> <name>t</name></param>
<param><ptype>GLfixed</ptype> <name>r</name></param>
@@ -19663,55 +21609,55 @@
</command>
<command>
<proto>void <name>glMultiTexCoord4xvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
<param len="4">const <ptype>GLfixed</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP1ui</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP1uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP2ui</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP2uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP3ui</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP3uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP4ui</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glMultiTexCoordP4uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TextureUnit"><ptype>GLenum</ptype> <name>texture</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
@@ -19802,7 +21748,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -19814,7 +21760,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -19827,7 +21773,7 @@
<param group="TextureUnit"><ptype>GLenum</ptype> <name>texunit</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -19926,11 +21872,108 @@
<param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param>
</command>
<command>
+ <proto>void <name>glMulticastBarrierNV</name></proto>
+ </command>
+ <command>
+ <proto>void <name>glMulticastBlitFramebufferNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>srcGpu</name></param>
+ <param><ptype>GLuint</ptype> <name>dstGpu</name></param>
+ <param><ptype>GLint</ptype> <name>srcX0</name></param>
+ <param><ptype>GLint</ptype> <name>srcY0</name></param>
+ <param><ptype>GLint</ptype> <name>srcX1</name></param>
+ <param><ptype>GLint</ptype> <name>srcY1</name></param>
+ <param><ptype>GLint</ptype> <name>dstX0</name></param>
+ <param><ptype>GLint</ptype> <name>dstY0</name></param>
+ <param><ptype>GLint</ptype> <name>dstX1</name></param>
+ <param><ptype>GLint</ptype> <name>dstY1</name></param>
+ <param group="ClearBufferMask"><ptype>GLbitfield</ptype> <name>mask</name></param>
+ <param><ptype>GLenum</ptype> <name>filter</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastBufferSubDataNV</name></proto>
+ <param><ptype>GLbitfield</ptype> <name>gpuMask</name></param>
+ <param><ptype>GLuint</ptype> <name>buffer</name></param>
+ <param><ptype>GLintptr</ptype> <name>offset</name></param>
+ <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param>const void *<name>data</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastCopyBufferSubDataNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>readGpu</name></param>
+ <param><ptype>GLbitfield</ptype> <name>writeGpuMask</name></param>
+ <param><ptype>GLuint</ptype> <name>readBuffer</name></param>
+ <param><ptype>GLuint</ptype> <name>writeBuffer</name></param>
+ <param><ptype>GLintptr</ptype> <name>readOffset</name></param>
+ <param><ptype>GLintptr</ptype> <name>writeOffset</name></param>
+ <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastCopyImageSubDataNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>srcGpu</name></param>
+ <param><ptype>GLbitfield</ptype> <name>dstGpuMask</name></param>
+ <param><ptype>GLuint</ptype> <name>srcName</name></param>
+ <param><ptype>GLenum</ptype> <name>srcTarget</name></param>
+ <param><ptype>GLint</ptype> <name>srcLevel</name></param>
+ <param><ptype>GLint</ptype> <name>srcX</name></param>
+ <param><ptype>GLint</ptype> <name>srcY</name></param>
+ <param><ptype>GLint</ptype> <name>srcZ</name></param>
+ <param><ptype>GLuint</ptype> <name>dstName</name></param>
+ <param><ptype>GLenum</ptype> <name>dstTarget</name></param>
+ <param><ptype>GLint</ptype> <name>dstLevel</name></param>
+ <param><ptype>GLint</ptype> <name>dstX</name></param>
+ <param><ptype>GLint</ptype> <name>dstY</name></param>
+ <param><ptype>GLint</ptype> <name>dstZ</name></param>
+ <param><ptype>GLsizei</ptype> <name>srcWidth</name></param>
+ <param><ptype>GLsizei</ptype> <name>srcHeight</name></param>
+ <param><ptype>GLsizei</ptype> <name>srcDepth</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastFramebufferSampleLocationsfvNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>gpu</name></param>
+ <param><ptype>GLuint</ptype> <name>framebuffer</name></param>
+ <param><ptype>GLuint</ptype> <name>start</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param>const <ptype>GLfloat</ptype> *<name>v</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastGetQueryObjecti64vNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>gpu</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLint64</ptype> *<name>params</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastGetQueryObjectivNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>gpu</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLint</ptype> *<name>params</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastGetQueryObjectui64vNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>gpu</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLuint64</ptype> *<name>params</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastGetQueryObjectuivNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>gpu</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param><ptype>GLuint</ptype> *<name>params</name></param>
+ </command>
+ <command>
+ <proto>void <name>glMulticastWaitSyncNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>signalGpu</name></param>
+ <param><ptype>GLbitfield</ptype> <name>waitGpuMask</name></param>
+ </command>
+ <command>
<proto>void <name>glNamedBufferData</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
<param>const void *<name>data</name></param>
- <param><ptype>GLenum</ptype> <name>usage</name></param>
+ <param group="VertexBufferObjectUsage"><ptype>GLenum</ptype> <name>usage</name></param>
</command>
<command>
<proto>void <name>glNamedBufferDataEXT</name></proto>
@@ -19958,17 +22001,32 @@
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
<param len="size">const void *<name>data</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="MapBufferUsageMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
+ </command>
+ <command>
+ <proto>void <name>glNamedBufferStorageExternalEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>buffer</name></param>
+ <param><ptype>GLintptr</ptype> <name>offset</name></param>
+ <param><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param><ptype>GLeglClientBufferEXT</ptype> <name>clientBuffer</name></param>
+ <param group="MapBufferUsageMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
<proto>void <name>glNamedBufferStorageEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
<param len="size">const void *<name>data</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="MapBufferUsageMask"><ptype>GLbitfield</ptype> <name>flags</name></param>
<alias name="glNamedBufferStorage"/>
</command>
<command>
+ <proto>void <name>glNamedBufferStorageMemEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>buffer</name></param>
+ <param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
<proto>void <name>glNamedBufferSubData</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
@@ -19994,18 +22052,18 @@
<command>
<proto>void <name>glNamedFramebufferDrawBuffer</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>buf</name></param>
+ <param group="ColorBuffer"><ptype>GLenum</ptype> <name>buf</name></param>
</command>
<command>
<proto>void <name>glNamedFramebufferDrawBuffers</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLenum</ptype> *<name>bufs</name></param>
+ <param group="ColorBuffer">const <ptype>GLenum</ptype> *<name>bufs</name></param>
</command>
<command>
<proto>void <name>glNamedFramebufferParameteri</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="FramebufferParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>param</name></param>
</command>
<command>
@@ -20017,13 +22075,13 @@
<command>
<proto>void <name>glNamedFramebufferReadBuffer</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>src</name></param>
+ <param group="ColorBuffer"><ptype>GLenum</ptype> <name>src</name></param>
</command>
<command>
<proto>void <name>glNamedFramebufferRenderbuffer</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
- <param><ptype>GLenum</ptype> <name>renderbuffertarget</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>renderbuffertarget</name></param>
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
</command>
<command>
@@ -20050,11 +22108,18 @@
<command>
<proto>void <name>glNamedFramebufferTexture</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
</command>
<command>
+ <proto>void <name>glNamedFramebufferSamplePositionsfvAMD</name></proto>
+ <param><ptype>GLuint</ptype> <name>framebuffer</name></param>
+ <param><ptype>GLuint</ptype> <name>numsamples</name></param>
+ <param><ptype>GLuint</ptype> <name>pixelindex</name></param>
+ <param>const <ptype>GLfloat</ptype> *<name>values</name></param>
+ </command>
+ <command>
<proto>void <name>glNamedFramebufferTexture1DEXT</name></proto>
<param group="Framebuffer"><ptype>GLuint</ptype> <name>framebuffer</name></param>
<param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
@@ -20097,7 +22162,7 @@
<command>
<proto>void <name>glNamedFramebufferTextureLayer</name></proto>
<param><ptype>GLuint</ptype> <name>framebuffer</name></param>
- <param><ptype>GLenum</ptype> <name>attachment</name></param>
+ <param group="FramebufferAttachment"><ptype>GLenum</ptype> <name>attachment</name></param>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>layer</name></param>
@@ -20217,14 +22282,14 @@
<command>
<proto>void <name>glNamedRenderbufferStorage</name></proto>
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
<command>
<proto>void <name>glNamedRenderbufferStorageEXT</name></proto>
<param group="Renderbuffer"><ptype>GLuint</ptype> <name>renderbuffer</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -20232,7 +22297,7 @@
<proto>void <name>glNamedRenderbufferStorageMultisample</name></proto>
<param><ptype>GLuint</ptype> <name>renderbuffer</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -20241,7 +22306,7 @@
<param group="Renderbuffer"><ptype>GLuint</ptype> <name>renderbuffer</name></param>
<param><ptype>GLsizei</ptype> <name>coverageSamples</name></param>
<param><ptype>GLsizei</ptype> <name>colorSamples</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -20249,7 +22314,7 @@
<proto>void <name>glNamedRenderbufferStorageMultisampleEXT</name></proto>
<param group="Renderbuffer"><ptype>GLuint</ptype> <name>renderbuffer</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -20382,12 +22447,12 @@
</command>
<command>
<proto>void <name>glNormalP3ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="NormalPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glNormalP3uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="NormalPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
@@ -20477,14 +22542,14 @@
</command>
<command>
<proto>void <name>glObjectLabel</name></proto>
- <param><ptype>GLenum</ptype> <name>identifier</name></param>
+ <param group="ObjectIdentifier"><ptype>GLenum</ptype> <name>identifier</name></param>
<param><ptype>GLuint</ptype> <name>name</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param len="COMPSIZE(label,length)">const <ptype>GLchar</ptype> *<name>label</name></param>
</command>
<command>
<proto>void <name>glObjectLabelKHR</name></proto>
- <param><ptype>GLenum</ptype> <name>identifier</name></param>
+ <param group="ObjectIdentifier"><ptype>GLenum</ptype> <name>identifier</name></param>
<param><ptype>GLuint</ptype> <name>name</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param>const <ptype>GLchar</ptype> *<name>label</name></param>
@@ -20589,23 +22654,23 @@
</command>
<command>
<proto>void <name>glPatchParameterfv</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PatchParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glPatchParameteri</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PatchParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glPatchParameteriEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PatchParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>value</name></param>
<alias name="glPatchParameteri"/>
</command>
<command>
<proto>void <name>glPatchParameteriOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PatchParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>value</name></param>
<alias name="glPatchParameteri"/>
</command>
@@ -20651,7 +22716,7 @@
<param><ptype>GLuint</ptype> <name>firstPathName</name></param>
<param><ptype>GLenum</ptype> <name>fontTarget</name></param>
<param>const void *<name>fontName</name></param>
- <param><ptype>GLbitfield</ptype> <name>fontStyle</name></param>
+ <param group="PathFontStyle"><ptype>GLbitfield</ptype> <name>fontStyle</name></param>
<param><ptype>GLuint</ptype> <name>firstGlyphIndex</name></param>
<param><ptype>GLsizei</ptype> <name>numGlyphs</name></param>
<param><ptype>GLuint</ptype> <name>pathParameterTemplate</name></param>
@@ -20661,7 +22726,7 @@
<proto><ptype>GLenum</ptype> <name>glPathGlyphIndexRangeNV</name></proto>
<param><ptype>GLenum</ptype> <name>fontTarget</name></param>
<param>const void *<name>fontName</name></param>
- <param><ptype>GLbitfield</ptype> <name>fontStyle</name></param>
+ <param group="PathFontStyle"><ptype>GLbitfield</ptype> <name>fontStyle</name></param>
<param><ptype>GLuint</ptype> <name>pathParameterTemplate</name></param>
<param><ptype>GLfloat</ptype> <name>emScale</name></param>
<param><ptype>GLuint</ptype> <name>baseAndCount</name>[2]</param>
@@ -20810,7 +22875,7 @@
</command>
<command>
<proto>void <name>glPixelMapx</name></proto>
- <param><ptype>GLenum</ptype> <name>map</name></param>
+ <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
<param len="size">const <ptype>GLfixed</ptype> *<name>values</name></param>
</command>
@@ -20828,7 +22893,7 @@
</command>
<command>
<proto>void <name>glPixelStorex</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PixelStoreParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
@@ -20870,7 +22935,7 @@
</command>
<command>
<proto>void <name>glPixelTransferxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PixelTransferParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
@@ -20999,22 +23064,22 @@
</command>
<command>
<proto>void <name>glPointParameterx</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PointParameterNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glPointParameterxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PointParameterNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glPointParameterxv</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PointParameterNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glPointParameterxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="PointParameterNameARB"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -21064,13 +23129,20 @@
<glx type="render" opcode="192"/>
</command>
<command>
- <proto>void <name>glPolygonOffsetClampEXT</name></proto>
+ <proto>void <name>glPolygonOffsetClamp</name></proto>
<param><ptype>GLfloat</ptype> <name>factor</name></param>
<param><ptype>GLfloat</ptype> <name>units</name></param>
<param><ptype>GLfloat</ptype> <name>clamp</name></param>
<glx type="render" opcode="4225"/>
</command>
<command>
+ <proto>void <name>glPolygonOffsetClampEXT</name></proto>
+ <param><ptype>GLfloat</ptype> <name>factor</name></param>
+ <param><ptype>GLfloat</ptype> <name>units</name></param>
+ <param><ptype>GLfloat</ptype> <name>clamp</name></param>
+ <alias name="glPolygonOffsetClamp"/>
+ </command>
+ <command>
<proto>void <name>glPolygonOffsetEXT</name></proto>
<param><ptype>GLfloat</ptype> <name>factor</name></param>
<param><ptype>GLfloat</ptype> <name>bias</name></param>
@@ -21201,9 +23273,11 @@
<command>
<proto>void <name>glPrimitiveRestartIndexNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
+ <glx type="render" opcode="365"/>
</command>
<command>
<proto>void <name>glPrimitiveRestartNV</name></proto>
+ <glx type="render" opcode="364"/>
</command>
<command>
<proto>void <name>glPrioritizeTextures</name></proto>
@@ -21583,7 +23657,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="1">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform1dvEXT</name></proto>
@@ -21610,7 +23684,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="1">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform1fvEXT</name></proto>
@@ -21664,7 +23738,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="1">const <ptype>GLint</ptype> *<name>value</name></param>
+ <param len="count">const <ptype>GLint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform1ivEXT</name></proto>
@@ -21718,7 +23792,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform1uivEXT</name></proto>
@@ -21747,14 +23821,14 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="2">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2dvEXT</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2f</name></proto>
@@ -21776,7 +23850,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="2">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2fvEXT</name></proto>
@@ -21834,7 +23908,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="2">const <ptype>GLint</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2ivEXT</name></proto>
@@ -21892,7 +23966,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="2">const <ptype>GLuint</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2uivEXT</name></proto>
@@ -21923,14 +23997,14 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="3">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3dvEXT</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3f</name></proto>
@@ -21954,7 +24028,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="3">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3fvEXT</name></proto>
@@ -22016,7 +24090,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="3">const <ptype>GLint</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3ivEXT</name></proto>
@@ -22078,7 +24152,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="3">const <ptype>GLuint</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3uivEXT</name></proto>
@@ -22111,14 +24185,14 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="4">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4dvEXT</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4f</name></proto>
@@ -22144,7 +24218,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="4">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4fvEXT</name></proto>
@@ -22210,7 +24284,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="4">const <ptype>GLint</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4ivEXT</name></proto>
@@ -22276,7 +24350,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="4">const <ptype>GLuint</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4uivEXT</name></proto>
@@ -22293,6 +24367,13 @@
<param><ptype>GLuint64</ptype> <name>value</name></param>
</command>
<command>
+ <proto>void <name>glProgramUniformHandleui64IMG</name></proto>
+ <param><ptype>GLuint</ptype> <name>program</name></param>
+ <param><ptype>GLint</ptype> <name>location</name></param>
+ <param><ptype>GLuint64</ptype> <name>value</name></param>
+ <alias name="glProgramUniformHandleui64ARB"/>
+ </command>
+ <command>
<proto>void <name>glProgramUniformHandleui64NV</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
@@ -22306,6 +24387,14 @@
<param len="count">const <ptype>GLuint64</ptype> *<name>values</name></param>
</command>
<command>
+ <proto>void <name>glProgramUniformHandleui64vIMG</name></proto>
+ <param><ptype>GLuint</ptype> <name>program</name></param>
+ <param><ptype>GLint</ptype> <name>location</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param len="count">const <ptype>GLuint64</ptype> *<name>values</name></param>
+ <alias name="glProgramUniformHandleui64vARB"/>
+ </command>
+ <command>
<proto>void <name>glProgramUniformHandleui64vNV</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
@@ -22318,7 +24407,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="2">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2dvEXT</name></proto>
@@ -22326,7 +24415,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2fv</name></proto>
@@ -22334,7 +24423,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="2">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2fvEXT</name></proto>
@@ -22351,7 +24440,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*6">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2x3dvEXT</name></proto>
@@ -22359,7 +24448,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*6">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2x3fv</name></proto>
@@ -22367,7 +24456,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*6">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2x3fvEXT</name></proto>
@@ -22384,7 +24473,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*8">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2x4dvEXT</name></proto>
@@ -22392,7 +24481,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*8">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2x4fv</name></proto>
@@ -22400,7 +24489,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*8">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix2x4fvEXT</name></proto>
@@ -22417,7 +24506,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="3">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*9">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3dvEXT</name></proto>
@@ -22425,7 +24514,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*9">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3fv</name></proto>
@@ -22433,7 +24522,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="3">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*9">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3fvEXT</name></proto>
@@ -22450,7 +24539,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*6">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3x2dvEXT</name></proto>
@@ -22458,7 +24547,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*6">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3x2fv</name></proto>
@@ -22466,7 +24555,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*6">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3x2fvEXT</name></proto>
@@ -22483,7 +24572,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*12">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3x4dvEXT</name></proto>
@@ -22491,7 +24580,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*12">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3x4fv</name></proto>
@@ -22499,7 +24588,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*12">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix3x4fvEXT</name></proto>
@@ -22516,7 +24605,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="4">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*16">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4dvEXT</name></proto>
@@ -22524,7 +24613,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*16">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4fv</name></proto>
@@ -22532,7 +24621,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="4">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*16">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4fvEXT</name></proto>
@@ -22549,7 +24638,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*8">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4x2dvEXT</name></proto>
@@ -22557,7 +24646,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*8">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4x2fv</name></proto>
@@ -22565,7 +24654,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*8">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4x2fvEXT</name></proto>
@@ -22582,7 +24671,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*12">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4x3dvEXT</name></proto>
@@ -22590,7 +24679,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLdouble</ptype> *<name>value</name></param>
+ <param len="count*12">const <ptype>GLdouble</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4x3fv</name></proto>
@@ -22598,7 +24687,7 @@
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
- <param len="count">const <ptype>GLfloat</ptype> *<name>value</name></param>
+ <param len="count*12">const <ptype>GLfloat</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniformMatrix4x3fvEXT</name></proto>
@@ -22629,11 +24718,11 @@
</command>
<command>
<proto>void <name>glProvokingVertex</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="VertexProvokingMode"><ptype>GLenum</ptype> <name>mode</name></param>
</command>
<command>
<proto>void <name>glProvokingVertexEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param group="VertexProvokingMode"><ptype>GLenum</ptype> <name>mode</name></param>
<alias name="glProvokingVertex"/>
</command>
<command>
@@ -22651,14 +24740,14 @@
</command>
<command>
<proto>void <name>glPushDebugGroup</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param len="COMPSIZE(message,length)">const <ptype>GLchar</ptype> *<name>message</name></param>
</command>
<command>
<proto>void <name>glPushDebugGroupKHR</name></proto>
- <param><ptype>GLenum</ptype> <name>source</name></param>
+ <param group="DebugSource"><ptype>GLenum</ptype> <name>source</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLsizei</ptype> <name>length</name></param>
<param>const <ptype>GLchar</ptype> *<name>message</name></param>
@@ -22681,12 +24770,12 @@
<command>
<proto>void <name>glQueryCounter</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
</command>
<command>
<proto>void <name>glQueryCounterEXT</name></proto>
<param><ptype>GLuint</ptype> <name>id</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<alias name="glQueryCounter"/>
</command>
<command>
@@ -22696,12 +24785,24 @@
</command>
<command>
<proto>void <name>glQueryObjectParameteruiAMD</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="QueryTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param group="OcclusionQueryEventMaskAMD"><ptype>GLuint</ptype> <name>param</name></param>
</command>
<command>
+ <proto><ptype>GLint</ptype> <name>glQueryResourceNV</name></proto>
+ <param><ptype>GLenum</ptype> <name>queryType</name></param>
+ <param><ptype>GLint</ptype> <name>tagId</name></param>
+ <param><ptype>GLuint</ptype> <name>bufSize</name></param>
+ <param><ptype>GLint</ptype> *<name>buffer</name></param>
+ </command>
+ <command>
+ <proto>void <name>glQueryResourceTagNV</name></proto>
+ <param><ptype>GLint</ptype> <name>tagId</name></param>
+ <param>const <ptype>GLchar</ptype> *<name>tagString</name></param>
+ </command>
+ <command>
<proto>void <name>glRasterPos2d</name></proto>
<param group="CoordD"><ptype>GLdouble</ptype> <name>x</name></param>
<param group="CoordD"><ptype>GLdouble</ptype> <name>y</name></param>
@@ -22887,7 +24988,7 @@
</command>
<command>
<proto>void <name>glReadBufferIndexedEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>src</name></param>
+ <param group="ReadBufferMode"><ptype>GLenum</ptype> <name>src</name></param>
<param><ptype>GLint</ptype> <name>index</name></param>
</command>
<command>
@@ -22917,10 +25018,10 @@
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param>void *<name>data</name></param>
+ <param len="bufSize">void *<name>data</name></param>
</command>
<command>
<proto>void <name>glReadnPixelsARB</name></proto>
@@ -22928,8 +25029,8 @@
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>data</name></param>
<alias name="glReadnPixels"/>
@@ -22940,8 +25041,8 @@
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param len="bufSize">void *<name>data</name></param>
<alias name="glReadnPixels"/>
@@ -22959,6 +25060,11 @@
<alias name="glReadnPixels"/>
</command>
<command>
+ <proto><ptype>GLboolean</ptype> <name>glReleaseKeyedMutexWin32EXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>key</name></param>
+ </command>
+ <command>
<proto>void <name>glRectd</name></proto>
<param group="CoordD"><ptype>GLdouble</ptype> <name>x1</name></param>
<param group="CoordD"><ptype>GLdouble</ptype> <name>y1</name></param>
@@ -23035,6 +25141,10 @@
<proto>void <name>glReleaseShaderCompiler</name></proto>
</command>
<command>
+ <proto>void <name>glRenderGpuMaskNV</name></proto>
+ <param><ptype>GLbitfield</ptype> <name>mask</name></param>
+ </command>
+ <command>
<proto><ptype>GLint</ptype> <name>glRenderMode</name></proto>
<param group="RenderingMode"><ptype>GLenum</ptype> <name>mode</name></param>
<glx type="single" opcode="107"/>
@@ -23042,7 +25152,7 @@
<command>
<proto>void <name>glRenderbufferStorage</name></proto>
<param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<glx type="render" opcode="4318"/>
@@ -23050,7 +25160,7 @@
<command>
<proto>void <name>glRenderbufferStorageEXT</name></proto>
<param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<alias name="glRenderbufferStorage"/>
@@ -23058,26 +25168,26 @@
</command>
<command>
<proto>void <name>glRenderbufferStorageMultisample</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<glx type="render" opcode="4331"/>
</command>
<command>
<proto>void <name>glRenderbufferStorageMultisampleANGLE</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
<command>
<proto>void <name>glRenderbufferStorageMultisampleAPPLE</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -23086,15 +25196,15 @@
<param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>coverageSamples</name></param>
<param><ptype>GLsizei</ptype> <name>colorSamples</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
<command>
<proto>void <name>glRenderbufferStorageMultisampleEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<alias name="glRenderbufferStorageMultisample"/>
@@ -23102,25 +25212,25 @@
</command>
<command>
<proto>void <name>glRenderbufferStorageMultisampleIMG</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
<command>
<proto>void <name>glRenderbufferStorageMultisampleNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<alias name="glRenderbufferStorageMultisample"/>
</command>
<command>
<proto>void <name>glRenderbufferStorageOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="RenderbufferTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -23302,7 +25412,7 @@
</command>
<command>
<proto>void <name>glResetHistogram</name></proto>
- <param group="HistogramTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="HistogramTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<glx type="render" opcode="4112"/>
</command>
<command>
@@ -23313,7 +25423,7 @@
</command>
<command>
<proto>void <name>glResetMinmax</name></proto>
- <param group="MinmaxTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="MinmaxTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
<glx type="render" opcode="4113"/>
</command>
<command>
@@ -23431,65 +25541,65 @@
<command>
<proto>void <name>glSamplerParameterIiv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glSamplerParameterIivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>param</name></param>
<alias name="glSamplerParameterIiv"/>
</command>
<command>
<proto>void <name>glSamplerParameterIivOES</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>param</name></param>
<alias name="glSamplerParameterIiv"/>
</command>
<command>
<proto>void <name>glSamplerParameterIuiv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLuint</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glSamplerParameterIuivEXT</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLuint</ptype> *<name>param</name></param>
<alias name="glSamplerParameterIuiv"/>
</command>
<command>
<proto>void <name>glSamplerParameterIuivOES</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLuint</ptype> *<name>param</name></param>
<alias name="glSamplerParameterIuiv"/>
</command>
<command>
<proto>void <name>glSamplerParameterf</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfloat</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glSamplerParameterfv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glSamplerParameteri</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glSamplerParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>sampler</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="SamplerParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
@@ -23540,6 +25650,13 @@
<alias name="glScissorArrayv"/>
</command>
<command>
+ <proto>void <name>glScissorArrayvOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>first</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param len="COMPSIZE(count)">const <ptype>GLint</ptype> *<name>v</name></param>
+ <alias name="glScissorArrayv"/>
+ </command>
+ <command>
<proto>void <name>glScissorIndexed</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> <name>left</name></param>
@@ -23557,6 +25674,15 @@
<alias name="glScissorIndexed"/>
</command>
<command>
+ <proto>void <name>glScissorIndexedOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param><ptype>GLint</ptype> <name>left</name></param>
+ <param><ptype>GLint</ptype> <name>bottom</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <alias name="glScissorIndexed"/>
+ </command>
+ <command>
<proto>void <name>glScissorIndexedv</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="4">const <ptype>GLint</ptype> *<name>v</name></param>
@@ -23568,6 +25694,12 @@
<alias name="glScissorIndexedv"/>
</command>
<command>
+ <proto>void <name>glScissorIndexedvOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param len="4">const <ptype>GLint</ptype> *<name>v</name></param>
+ <alias name="glScissorIndexedv"/>
+ </command>
+ <command>
<proto>void <name>glSecondaryColor3b</name></proto>
<param group="ColorB"><ptype>GLbyte</ptype> <name>red</name></param>
<param group="ColorB"><ptype>GLbyte</ptype> <name>green</name></param>
@@ -23790,17 +25922,17 @@
<command>
<proto>void <name>glSecondaryColorFormatNV</name></proto>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
<proto>void <name>glSecondaryColorP3ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>color</name></param>
</command>
<command>
<proto>void <name>glSecondaryColorP3uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="ColorPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>color</name></param>
</command>
<command>
@@ -23841,9 +25973,15 @@
<param len="numCounters"><ptype>GLuint</ptype> *<name>counterList</name></param>
</command>
<command>
+ <proto>void <name>glSemaphoreParameterui64vEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param group="SemaphoreParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
+ <param>const <ptype>GLuint64</ptype> *<name>params</name></param>
+ </command>
+ <command>
<proto>void <name>glSeparableFilter2D</name></proto>
- <param group="SeparableTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="SeparableTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -23856,7 +25994,7 @@
<command>
<proto>void <name>glSeparableFilter2DEXT</name></proto>
<param group="SeparableTargetEXT"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -23961,6 +26099,32 @@
<glx type="render" opcode="2052"/>
</command>
<command>
+ <proto>void <name>glSignalSemaphoreEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param><ptype>GLuint</ptype> <name>numBufferBarriers</name></param>
+ <param len="COMPSIZE(numBufferBarriers)">const <ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param><ptype>GLuint</ptype> <name>numTextureBarriers</name></param>
+ <param len="COMPSIZE(numTextureBarriers)">const <ptype>GLuint</ptype> *<name>textures</name></param>
+ <param group="TextureLayout" len="COMPSIZE(numTextureBarriers)">const <ptype>GLenum</ptype> *<name>dstLayouts</name></param>
+ </command>
+ <command>
+ <proto>void <name>glSpecializeShader</name></proto>
+ <param><ptype>GLuint</ptype> <name>shader</name></param>
+ <param>const <ptype>GLchar</ptype> *<name>pEntryPoint</name></param>
+ <param><ptype>GLuint</ptype> <name>numSpecializationConstants</name></param>
+ <param>const <ptype>GLuint</ptype> *<name>pConstantIndex</name></param>
+ <param>const <ptype>GLuint</ptype> *<name>pConstantValue</name></param>
+ </command>
+ <command>
+ <proto>void <name>glSpecializeShaderARB</name></proto>
+ <param><ptype>GLuint</ptype> <name>shader</name></param>
+ <param>const <ptype>GLchar</ptype> *<name>pEntryPoint</name></param>
+ <param><ptype>GLuint</ptype> <name>numSpecializationConstants</name></param>
+ <param>const <ptype>GLuint</ptype> *<name>pConstantIndex</name></param>
+ <param>const <ptype>GLuint</ptype> *<name>pConstantValue</name></param>
+ <alias name="glSpecializeShader"/>
+ </command>
+ <command>
<proto>void <name>glSpriteParameterfSGIX</name></proto>
<param group="SpriteParameterNameSGIX"><ptype>GLenum</ptype> <name>pname</name></param>
<param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>param</name></param>
@@ -23994,7 +26158,7 @@
<param><ptype>GLuint</ptype> <name>y</name></param>
<param><ptype>GLuint</ptype> <name>width</name></param>
<param><ptype>GLuint</ptype> <name>height</name></param>
- <param><ptype>GLbitfield</ptype> <name>preserveMask</name></param>
+ <param group="BufferBitQCOM"><ptype>GLbitfield</ptype> <name>preserveMask</name></param>
</command>
<command>
<proto>void <name>glStateCaptureNV</name></proto>
@@ -24259,42 +26423,43 @@
<command>
<proto>void <name>glTexBuffer</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
</command>
<command>
<proto>void <name>glTexBufferARB</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<alias name="glTexBuffer"/>
+ <glx type="render" opcode="367"/>
</command>
<command>
<proto>void <name>glTexBufferEXT</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<alias name="glTexBuffer"/>
</command>
<command>
<proto>void <name>glTexBufferOES</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<alias name="glTexBuffer"/>
</command>
<command>
<proto>void <name>glTexBufferRange</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
</command>
<command>
<proto>void <name>glTexBufferRangeEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
@@ -24302,8 +26467,8 @@
</command>
<command>
<proto>void <name>glTexBufferRangeOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
@@ -24761,42 +26926,42 @@
</command>
<command>
<proto>void <name>glTexCoordP1ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP1uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP2ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP2uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP3ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP3uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP4ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>coords</name></param>
</command>
<command>
<proto>void <name>glTexCoordP4uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="TexCoordPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>coords</name></param>
</command>
<command>
@@ -24858,26 +27023,26 @@
</command>
<command>
<proto>void <name>glTexEnvx</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureEnvTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureEnvParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glTexEnvxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureEnvTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureEnvParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glTexEnvxv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureEnvTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureEnvParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexEnvxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureEnvTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureEnvParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -24911,8 +27076,8 @@
</command>
<command>
<proto>void <name>glTexGenfOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfloat</ptype> <name>param</name></param>
</command>
<command>
@@ -24924,8 +27089,8 @@
</command>
<command>
<proto>void <name>glTexGenfvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
@@ -24937,8 +27102,8 @@
</command>
<command>
<proto>void <name>glTexGeniOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>param</name></param>
</command>
<command>
@@ -24950,27 +27115,27 @@
</command>
<command>
<proto>void <name>glTexGenivOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexGenxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glTexGenxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>coord</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureCoordName"><ptype>GLenum</ptype> <name>coord</name></param>
+ <param group="TextureGenParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexImage1D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -24983,7 +27148,7 @@
<proto>void <name>glTexImage2D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -24995,16 +27160,16 @@
</command>
<command>
<proto>void <name>glTexImage2DMultisample</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>fixedsamplelocations</name></param>
</command>
<command>
<proto>void <name>glTexImage2DMultisampleCoverageNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>coverageSamples</name></param>
<param><ptype>GLsizei</ptype> <name>colorSamples</name></param>
<param><ptype>GLint</ptype> <name>internalFormat</name></param>
@@ -25016,7 +27181,7 @@
<proto>void <name>glTexImage3D</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25031,7 +27196,7 @@
<proto>void <name>glTexImage3DEXT</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25044,9 +27209,9 @@
</command>
<command>
<proto>void <name>glTexImage3DMultisample</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25054,7 +27219,7 @@
</command>
<command>
<proto>void <name>glTexImage3DMultisampleCoverageNV</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>coverageSamples</name></param>
<param><ptype>GLsizei</ptype> <name>colorSamples</name></param>
<param><ptype>GLint</ptype> <name>internalFormat</name></param>
@@ -25065,23 +27230,22 @@
</command>
<command>
<proto>void <name>glTexImage3DOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLint</ptype> <name>border</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param>
- <alias name="glTexImage3D"/>
</command>
<command>
<proto>void <name>glTexImage4DSGIS</name></proto>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="PixelInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25189,26 +27353,26 @@
</command>
<command>
<proto>void <name>glTexParameterx</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glTexParameterxOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> <name>param</name></param>
</command>
<command>
<proto>void <name>glTexParameterxv</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexParameterxvOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="GetTextureParameter"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
@@ -25218,59 +27382,59 @@
</command>
<command>
<proto>void <name>glTexStorage1D</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
</command>
<command>
<proto>void <name>glTexStorage1DEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<alias name="glTexStorage1D"/>
</command>
<command>
<proto>void <name>glTexStorage2D</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
<command>
<proto>void <name>glTexStorage2DEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<alias name="glTexStorage2D"/>
</command>
<command>
<proto>void <name>glTexStorage2DMultisample</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>fixedsamplelocations</name></param>
</command>
<command>
<proto>void <name>glTexStorage3D</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
</command>
<command>
<proto>void <name>glTexStorage3DEXT</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25278,9 +27442,9 @@
</command>
<command>
<proto>void <name>glTexStorage3DMultisample</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25288,9 +27452,9 @@
</command>
<command>
<proto>void <name>glTexStorage3DMultisampleOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25298,14 +27462,67 @@
<alias name="glTexStorage3DMultisample"/>
</command>
<command>
- <proto>void <name>glTexStorageSparseAMD</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <proto>void <name>glTexStorageMem1DEXT</name></proto>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>levels</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTexStorageMem2DEXT</name></proto>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>levels</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTexStorageMem2DMultisampleEXT</name></proto>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>samples</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLboolean</ptype> <name>fixedSampleLocations</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTexStorageMem3DEXT</name></proto>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>levels</name></param>
<param><ptype>GLenum</ptype> <name>internalFormat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTexStorageMem3DMultisampleEXT</name></proto>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>samples</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLsizei</ptype> <name>depth</name></param>
+ <param><ptype>GLboolean</ptype> <name>fixedSampleLocations</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTexStorageSparseAMD</name></proto>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLsizei</ptype> <name>layers</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="TextureStorageMaskAMD"><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
<proto>void <name>glTexSubImage1D</name></proto>
@@ -25393,7 +27610,7 @@
</command>
<command>
<proto>void <name>glTexSubImage3DOES</name></proto>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>xoffset</name></param>
<param><ptype>GLint</ptype> <name>yoffset</name></param>
@@ -25401,10 +27618,9 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param>
- <alias name="glTexSubImage3D"/>
</command>
<command>
<proto>void <name>glTexSubImage4DSGIS</name></proto>
@@ -25433,20 +27649,20 @@
<command>
<proto>void <name>glTextureBuffer</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
</command>
<command>
<proto>void <name>glTextureBufferEXT</name></proto>
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
</command>
<command>
<proto>void <name>glTextureBufferRange</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
@@ -25455,7 +27671,7 @@
<proto>void <name>glTextureBufferRangeEXT</name></proto>
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="BufferOffset"><ptype>GLintptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
@@ -25469,11 +27685,22 @@
<glx type="render" opcode="2082"/>
</command>
<command>
+ <proto>void <name>glTextureFoveationParametersQCOM</name></proto>
+ <param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLuint</ptype> <name>layer</name></param>
+ <param><ptype>GLuint</ptype> <name>focalPoint</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>focalX</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>focalY</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>gainX</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>gainY</name></param>
+ <param group="CheckedFloat32"><ptype>GLfloat</ptype> <name>foveaArea</name></param>
+ </command>
+ <command>
<proto>void <name>glTextureImage1DEXT</name></proto>
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
<param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
@@ -25485,7 +27712,7 @@
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>border</name></param>
@@ -25496,7 +27723,7 @@
<command>
<proto>void <name>glTextureImage2DMultisampleCoverageNV</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>coverageSamples</name></param>
<param><ptype>GLsizei</ptype> <name>colorSamples</name></param>
<param><ptype>GLint</ptype> <name>internalFormat</name></param>
@@ -25507,7 +27734,7 @@
<command>
<proto>void <name>glTextureImage2DMultisampleNV</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
<param><ptype>GLint</ptype> <name>internalFormat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -25519,7 +27746,7 @@
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param group="CheckedInt32"><ptype>GLint</ptype> <name>level</name></param>
- <param group="TextureComponentCount"><ptype>GLint</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLint</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25531,7 +27758,7 @@
<command>
<proto>void <name>glTextureImage3DMultisampleCoverageNV</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>coverageSamples</name></param>
<param><ptype>GLsizei</ptype> <name>colorSamples</name></param>
<param><ptype>GLint</ptype> <name>internalFormat</name></param>
@@ -25543,7 +27770,7 @@
<command>
<proto>void <name>glTextureImage3DMultisampleNV</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
<param><ptype>GLint</ptype> <name>internalFormat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
@@ -25579,7 +27806,7 @@
<command>
<proto>void <name>glTextureParameterIiv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param>const <ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -25592,7 +27819,7 @@
<command>
<proto>void <name>glTextureParameterIuiv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param>const <ptype>GLuint</ptype> *<name>params</name></param>
</command>
<command>
@@ -25605,7 +27832,7 @@
<command>
<proto>void <name>glTextureParameterf</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfloat</ptype> <name>param</name></param>
</command>
<command>
@@ -25619,7 +27846,7 @@
<command>
<proto>void <name>glTextureParameterfv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param>const <ptype>GLfloat</ptype> *<name>param</name></param>
</command>
<command>
@@ -25632,7 +27859,7 @@
<command>
<proto>void <name>glTextureParameteri</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint</ptype> <name>param</name></param>
</command>
<command>
@@ -25646,7 +27873,7 @@
<command>
<proto>void <name>glTextureParameteriv</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="TextureParameterName"><ptype>GLenum</ptype> <name>pname</name></param>
<param>const <ptype>GLint</ptype> *<name>param</name></param>
</command>
<command>
@@ -25672,7 +27899,7 @@
<proto>void <name>glTextureStorage1D</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
</command>
<command>
@@ -25680,14 +27907,14 @@
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
</command>
<command>
<proto>void <name>glTextureStorage2D</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -25696,7 +27923,7 @@
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
</command>
@@ -25704,7 +27931,7 @@
<proto>void <name>glTextureStorage2DMultisample</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLboolean</ptype> <name>fixedsamplelocations</name></param>
@@ -25714,7 +27941,7 @@
<param group="Texture"><ptype>GLuint</ptype> <name>texture</name></param>
<param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param group="TextureInternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>fixedsamplelocations</name></param>
@@ -25723,7 +27950,7 @@
<proto>void <name>glTextureStorage3D</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25733,7 +27960,7 @@
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>levels</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25742,7 +27969,7 @@
<proto>void <name>glTextureStorage3DMultisample</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
@@ -25753,22 +27980,75 @@
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>samples</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>fixedsamplelocations</name></param>
</command>
<command>
- <proto>void <name>glTextureStorageSparseAMD</name></proto>
+ <proto>void <name>glTextureStorageMem1DEXT</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLsizei</ptype> <name>levels</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTextureStorageMem2DEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLsizei</ptype> <name>levels</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTextureStorageMem2DMultisampleEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLsizei</ptype> <name>samples</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLboolean</ptype> <name>fixedSampleLocations</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTextureStorageMem3DEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLsizei</ptype> <name>levels</name></param>
<param><ptype>GLenum</ptype> <name>internalFormat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTextureStorageMem3DMultisampleEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLsizei</ptype> <name>samples</name></param>
+ <param><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLsizei</ptype> <name>depth</name></param>
+ <param><ptype>GLboolean</ptype> <name>fixedSampleLocations</name></param>
+ <param><ptype>GLuint</ptype> <name>memory</name></param>
+ <param><ptype>GLuint64</ptype> <name>offset</name></param>
+ </command>
+ <command>
+ <proto>void <name>glTextureStorageSparseAMD</name></proto>
+ <param><ptype>GLuint</ptype> <name>texture</name></param>
+ <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalFormat</name></param>
+ <param><ptype>GLsizei</ptype> <name>width</name></param>
+ <param><ptype>GLsizei</ptype> <name>height</name></param>
+ <param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLsizei</ptype> <name>layers</name></param>
- <param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <param group="TextureStorageMaskAMD"><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
<proto>void <name>glTextureSubImage1D</name></proto>
@@ -25776,8 +28056,8 @@
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>xoffset</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>pixels</name></param>
</command>
<command>
@@ -25799,8 +28079,8 @@
<param><ptype>GLint</ptype> <name>yoffset</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>pixels</name></param>
</command>
<command>
@@ -25826,8 +28106,8 @@
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
- <param><ptype>GLenum</ptype> <name>format</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param>const void *<name>pixels</name></param>
</command>
<command>
@@ -25848,9 +28128,9 @@
<command>
<proto>void <name>glTextureView</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>origtexture</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>minlevel</name></param>
<param><ptype>GLuint</ptype> <name>numlevels</name></param>
<param><ptype>GLuint</ptype> <name>minlayer</name></param>
@@ -25859,9 +28139,9 @@
<command>
<proto>void <name>glTextureViewEXT</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>origtexture</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>minlevel</name></param>
<param><ptype>GLuint</ptype> <name>numlevels</name></param>
<param><ptype>GLuint</ptype> <name>minlayer</name></param>
@@ -25871,9 +28151,9 @@
<command>
<proto>void <name>glTextureViewOES</name></proto>
<param><ptype>GLuint</ptype> <name>texture</name></param>
- <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>origtexture</name></param>
- <param><ptype>GLenum</ptype> <name>internalformat</name></param>
+ <param group="InternalFormat"><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLuint</ptype> <name>minlevel</name></param>
<param><ptype>GLuint</ptype> <name>numlevels</name></param>
<param><ptype>GLuint</ptype> <name>minlayer</name></param>
@@ -25922,6 +28202,7 @@
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLchar</ptype> *const*<name>varyings</name></param>
<param><ptype>GLenum</ptype> <name>bufferMode</name></param>
+ <glx type="render" opcode="359"/>
</command>
<command>
<proto>void <name>glTransformFeedbackVaryingsEXT</name></proto>
@@ -26550,6 +28831,7 @@
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLuint</ptype> <name>uniformBlockIndex</name></param>
<param><ptype>GLuint</ptype> <name>uniformBlockBinding</name></param>
+ <glx type="render" opcode="366"/>
</command>
<command>
<proto>void <name>glUniformBufferEXT</name></proto>
@@ -26563,6 +28845,12 @@
<param><ptype>GLuint64</ptype> <name>value</name></param>
</command>
<command>
+ <proto>void <name>glUniformHandleui64IMG</name></proto>
+ <param><ptype>GLint</ptype> <name>location</name></param>
+ <param><ptype>GLuint64</ptype> <name>value</name></param>
+ <alias name="glUniformHandleui64ARB"/>
+ </command>
+ <command>
<proto>void <name>glUniformHandleui64NV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLuint64</ptype> <name>value</name></param>
@@ -26574,6 +28862,13 @@
<param len="count">const <ptype>GLuint64</ptype> *<name>value</name></param>
</command>
<command>
+ <proto>void <name>glUniformHandleui64vIMG</name></proto>
+ <param><ptype>GLint</ptype> <name>location</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param len="count">const <ptype>GLuint64</ptype> *<name>value</name></param>
+ <alias name="glUniformHandleui64vARB"/>
+ </command>
+ <command>
<proto>void <name>glUniformHandleui64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
@@ -26785,7 +29080,7 @@
</command>
<command>
<proto>void <name>glUniformSubroutinesuiv</name></proto>
- <param><ptype>GLenum</ptype> <name>shadertype</name></param>
+ <param group="ShaderType"><ptype>GLenum</ptype> <name>shadertype</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param len="count">const <ptype>GLuint</ptype> *<name>indices</name></param>
</command>
@@ -26854,13 +29149,13 @@
<command>
<proto>void <name>glUseProgramStages</name></proto>
<param><ptype>GLuint</ptype> <name>pipeline</name></param>
- <param><ptype>GLbitfield</ptype> <name>stages</name></param>
+ <param group="UseProgramStageMask"><ptype>GLbitfield</ptype> <name>stages</name></param>
<param><ptype>GLuint</ptype> <name>program</name></param>
</command>
<command>
<proto>void <name>glUseProgramStagesEXT</name></proto>
<param><ptype>GLuint</ptype> <name>pipeline</name></param>
- <param><ptype>GLbitfield</ptype> <name>stages</name></param>
+ <param group="UseProgramStageMask"><ptype>GLbitfield</ptype> <name>stages</name></param>
<param><ptype>GLuint</ptype> <name>program</name></param>
</command>
<command>
@@ -27241,7 +29536,7 @@
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>attribindex</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLboolean</ptype> <name>normalized</name></param>
<param><ptype>GLuint</ptype> <name>relativeoffset</name></param>
</command>
@@ -27250,7 +29545,7 @@
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>attribindex</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>relativeoffset</name></param>
</command>
<command>
@@ -27258,7 +29553,7 @@
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLuint</ptype> <name>attribindex</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>relativeoffset</name></param>
</command>
<command>
@@ -28546,7 +30841,7 @@
<proto>void <name>glVertexAttribIPointer</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
</command>
@@ -28554,7 +30849,7 @@
<proto>void <name>glVertexAttribIPointerEXT</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param group="VertexAttribEnum"><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
<alias name="glVertexAttribIPointer"/>
@@ -28765,21 +31060,21 @@
<proto>void <name>glVertexAttribLFormat</name></proto>
<param><ptype>GLuint</ptype> <name>attribindex</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>relativeoffset</name></param>
</command>
<command>
<proto>void <name>glVertexAttribLFormatNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
<proto>void <name>glVertexAttribLPointer</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param len="size">const void *<name>pointer</name></param>
</command>
@@ -28787,7 +31082,7 @@
<proto>void <name>glVertexAttribLPointerEXT</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
<param len="size">const void *<name>pointer</name></param>
<alias name="glVertexAttribLPointer"/>
@@ -28795,56 +31090,56 @@
<command>
<proto>void <name>glVertexAttribP1ui</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP1uiv</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP2ui</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP2uiv</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP3ui</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP3uiv</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP4ui</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexAttribP4uiv</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexAttribPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>normalized</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
@@ -29023,37 +31318,37 @@
<command>
<proto>void <name>glVertexFormatNV</name></proto>
<param><ptype>GLint</ptype> <name>size</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
</command>
<command>
<proto>void <name>glVertexP2ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexP2uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glVertexP3ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexP3uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glVertexP4ui</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>value</name></param>
</command>
<command>
<proto>void <name>glVertexP4uiv</name></proto>
- <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param group="VertexPointerType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="1">const <ptype>GLuint</ptype> *<name>value</name></param>
</command>
<command>
@@ -29345,6 +31640,13 @@
<alias name="glViewportArrayv"/>
</command>
<command>
+ <proto>void <name>glViewportArrayvOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>first</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param len="COMPSIZE(count)">const <ptype>GLfloat</ptype> *<name>v</name></param>
+ <alias name="glViewportArrayv"/>
+ </command>
+ <command>
<proto>void <name>glViewportIndexedf</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLfloat</ptype> <name>x</name></param>
@@ -29353,6 +31655,15 @@
<param><ptype>GLfloat</ptype> <name>h</name></param>
</command>
<command>
+ <proto>void <name>glViewportIndexedfOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param><ptype>GLfloat</ptype> <name>x</name></param>
+ <param><ptype>GLfloat</ptype> <name>y</name></param>
+ <param><ptype>GLfloat</ptype> <name>w</name></param>
+ <param><ptype>GLfloat</ptype> <name>h</name></param>
+ <alias name="glViewportIndexedf"/>
+ </command>
+ <command>
<proto>void <name>glViewportIndexedfNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLfloat</ptype> <name>x</name></param>
@@ -29367,12 +31678,41 @@
<param len="4">const <ptype>GLfloat</ptype> *<name>v</name></param>
</command>
<command>
+ <proto>void <name>glViewportIndexedfvOES</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param len="4">const <ptype>GLfloat</ptype> *<name>v</name></param>
+ <alias name="glViewportIndexedfv"/>
+ </command>
+ <command>
<proto>void <name>glViewportIndexedfvNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param len="4">const <ptype>GLfloat</ptype> *<name>v</name></param>
<alias name="glViewportIndexedfv"/>
</command>
<command>
+ <proto>void <name>glViewportPositionWScaleNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param><ptype>GLfloat</ptype> <name>xcoeff</name></param>
+ <param><ptype>GLfloat</ptype> <name>ycoeff</name></param>
+ </command>
+ <command>
+ <proto>void <name>glViewportSwizzleNV</name></proto>
+ <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param><ptype>GLenum</ptype> <name>swizzlex</name></param>
+ <param><ptype>GLenum</ptype> <name>swizzley</name></param>
+ <param><ptype>GLenum</ptype> <name>swizzlez</name></param>
+ <param><ptype>GLenum</ptype> <name>swizzlew</name></param>
+ </command>
+ <command>
+ <proto>void <name>glWaitSemaphoreEXT</name></proto>
+ <param><ptype>GLuint</ptype> <name>semaphore</name></param>
+ <param><ptype>GLuint</ptype> <name>numBufferBarriers</name></param>
+ <param len="COMPSIZE(numBufferBarriers)">const <ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param><ptype>GLuint</ptype> <name>numTextureBarriers</name></param>
+ <param len="COMPSIZE(numTextureBarriers)">const <ptype>GLuint</ptype> *<name>textures</name></param>
+ <param group="TextureLayout" len="COMPSIZE(numTextureBarriers)">const <ptype>GLenum</ptype> *<name>srcLayouts</name></param>
+ </command>
+ <command>
<proto>void <name>glWaitSync</name></proto>
<param group="sync"><ptype>GLsync</ptype> <name>sync</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
@@ -29803,6 +32143,12 @@
<param group="CoordS" len="4">const <ptype>GLshort</ptype> *<name>v</name></param>
</command>
<command>
+ <proto>void <name>glWindowRectanglesEXT</name></proto>
+ <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param><ptype>GLsizei</ptype> <name>count</name></param>
+ <param len="COMPSIZE(count)">const <ptype>GLint</ptype> *<name>box</name></param>
+ </command>
+ <command>
<proto>void <name>glWriteMaskEXT</name></proto>
<param><ptype>GLuint</ptype> <name>res</name></param>
<param><ptype>GLuint</ptype> <name>in</name></param>
@@ -29811,6 +32157,36 @@
<param group="VertexShaderWriteMaskEXT"><ptype>GLenum</ptype> <name>outZ</name></param>
<param group="VertexShaderWriteMaskEXT"><ptype>GLenum</ptype> <name>outW</name></param>
</command>
+ <command>
+ <proto>void <name>glDrawVkImageNV</name></proto>
+ <param><ptype>GLuint64</ptype> <name>vkImage</name></param>
+ <param><ptype>GLuint</ptype> <name>sampler</name></param>
+ <param><ptype>GLfloat</ptype> <name>x0</name></param>
+ <param><ptype>GLfloat</ptype> <name>y0</name></param>
+ <param><ptype>GLfloat</ptype> <name>x1</name></param>
+ <param><ptype>GLfloat</ptype> <name>y1</name></param>
+ <param><ptype>GLfloat</ptype> <name>z</name></param>
+ <param><ptype>GLfloat</ptype> <name>s0</name></param>
+ <param><ptype>GLfloat</ptype> <name>t0</name></param>
+ <param><ptype>GLfloat</ptype> <name>s1</name></param>
+ <param><ptype>GLfloat</ptype> <name>t1</name></param>
+ </command>
+ <command>
+ <proto><ptype>GLVULKANPROCNV</ptype> <name>glGetVkProcAddrNV</name></proto>
+ <param len="COMPSIZE(name)">const <ptype>GLchar</ptype> *<name>name</name></param>
+ </command>
+ <command>
+ <proto>void <name>glWaitVkSemaphoreNV</name></proto>
+ <param><ptype>GLuint64</ptype> <name>vkSemaphore</name></param>
+ </command>
+ <command>
+ <proto>void <name>glSignalVkSemaphoreNV</name></proto>
+ <param><ptype>GLuint64</ptype> <name>vkSemaphore</name></param>
+ </command>
+ <command>
+ <proto>void <name>glSignalVkFenceNV</name></proto>
+ <param><ptype>GLuint64</ptype> <name>vkFence</name></param>
+ </command>
</commands>
@@ -29818,6 +32194,430 @@
<feature api="gl" name="GL_VERSION_1_0" number="1.0">
<require>
<type name="GLvoid" comment="No longer used in headers"/>
+ <enum name="GL_DEPTH_BUFFER_BIT"/>
+ <enum name="GL_STENCIL_BUFFER_BIT"/>
+ <enum name="GL_COLOR_BUFFER_BIT"/>
+ <enum name="GL_FALSE"/>
+ <enum name="GL_TRUE"/>
+ <enum name="GL_POINTS"/>
+ <enum name="GL_LINES"/>
+ <enum name="GL_LINE_LOOP"/>
+ <enum name="GL_LINE_STRIP"/>
+ <enum name="GL_TRIANGLES"/>
+ <enum name="GL_TRIANGLE_STRIP"/>
+ <enum name="GL_TRIANGLE_FAN"/>
+ <enum name="GL_QUADS"/>
+ <enum name="GL_NEVER"/>
+ <enum name="GL_LESS"/>
+ <enum name="GL_EQUAL"/>
+ <enum name="GL_LEQUAL"/>
+ <enum name="GL_GREATER"/>
+ <enum name="GL_NOTEQUAL"/>
+ <enum name="GL_GEQUAL"/>
+ <enum name="GL_ALWAYS"/>
+ <enum name="GL_ZERO"/>
+ <enum name="GL_ONE"/>
+ <enum name="GL_SRC_COLOR"/>
+ <enum name="GL_ONE_MINUS_SRC_COLOR"/>
+ <enum name="GL_SRC_ALPHA"/>
+ <enum name="GL_ONE_MINUS_SRC_ALPHA"/>
+ <enum name="GL_DST_ALPHA"/>
+ <enum name="GL_ONE_MINUS_DST_ALPHA"/>
+ <enum name="GL_DST_COLOR"/>
+ <enum name="GL_ONE_MINUS_DST_COLOR"/>
+ <enum name="GL_SRC_ALPHA_SATURATE"/>
+ <enum name="GL_NONE"/>
+ <enum name="GL_FRONT_LEFT"/>
+ <enum name="GL_FRONT_RIGHT"/>
+ <enum name="GL_BACK_LEFT"/>
+ <enum name="GL_BACK_RIGHT"/>
+ <enum name="GL_FRONT"/>
+ <enum name="GL_BACK"/>
+ <enum name="GL_LEFT"/>
+ <enum name="GL_RIGHT"/>
+ <enum name="GL_FRONT_AND_BACK"/>
+ <enum name="GL_NO_ERROR"/>
+ <enum name="GL_INVALID_ENUM"/>
+ <enum name="GL_INVALID_VALUE"/>
+ <enum name="GL_INVALID_OPERATION"/>
+ <enum name="GL_OUT_OF_MEMORY"/>
+ <enum name="GL_CW"/>
+ <enum name="GL_CCW"/>
+ <enum name="GL_POINT_SIZE"/>
+ <enum name="GL_POINT_SIZE_RANGE"/>
+ <enum name="GL_POINT_SIZE_GRANULARITY"/>
+ <enum name="GL_LINE_SMOOTH"/>
+ <enum name="GL_LINE_WIDTH"/>
+ <enum name="GL_LINE_WIDTH_RANGE"/>
+ <enum name="GL_LINE_WIDTH_GRANULARITY"/>
+ <enum name="GL_POLYGON_MODE"/>
+ <enum name="GL_POLYGON_SMOOTH"/>
+ <enum name="GL_CULL_FACE"/>
+ <enum name="GL_CULL_FACE_MODE"/>
+ <enum name="GL_FRONT_FACE"/>
+ <enum name="GL_DEPTH_RANGE"/>
+ <enum name="GL_DEPTH_TEST"/>
+ <enum name="GL_DEPTH_WRITEMASK"/>
+ <enum name="GL_DEPTH_CLEAR_VALUE"/>
+ <enum name="GL_DEPTH_FUNC"/>
+ <enum name="GL_STENCIL_TEST"/>
+ <enum name="GL_STENCIL_CLEAR_VALUE"/>
+ <enum name="GL_STENCIL_FUNC"/>
+ <enum name="GL_STENCIL_VALUE_MASK"/>
+ <enum name="GL_STENCIL_FAIL"/>
+ <enum name="GL_STENCIL_PASS_DEPTH_FAIL"/>
+ <enum name="GL_STENCIL_PASS_DEPTH_PASS"/>
+ <enum name="GL_STENCIL_REF"/>
+ <enum name="GL_STENCIL_WRITEMASK"/>
+ <enum name="GL_VIEWPORT"/>
+ <enum name="GL_DITHER"/>
+ <enum name="GL_BLEND_DST"/>
+ <enum name="GL_BLEND_SRC"/>
+ <enum name="GL_BLEND"/>
+ <enum name="GL_LOGIC_OP_MODE"/>
+ <enum name="GL_DRAW_BUFFER"/>
+ <enum name="GL_READ_BUFFER"/>
+ <enum name="GL_SCISSOR_BOX"/>
+ <enum name="GL_SCISSOR_TEST"/>
+ <enum name="GL_COLOR_CLEAR_VALUE"/>
+ <enum name="GL_COLOR_WRITEMASK"/>
+ <enum name="GL_DOUBLEBUFFER"/>
+ <enum name="GL_STEREO"/>
+ <enum name="GL_LINE_SMOOTH_HINT"/>
+ <enum name="GL_POLYGON_SMOOTH_HINT"/>
+ <enum name="GL_UNPACK_SWAP_BYTES"/>
+ <enum name="GL_UNPACK_LSB_FIRST"/>
+ <enum name="GL_UNPACK_ROW_LENGTH"/>
+ <enum name="GL_UNPACK_SKIP_ROWS"/>
+ <enum name="GL_UNPACK_SKIP_PIXELS"/>
+ <enum name="GL_UNPACK_ALIGNMENT"/>
+ <enum name="GL_PACK_SWAP_BYTES"/>
+ <enum name="GL_PACK_LSB_FIRST"/>
+ <enum name="GL_PACK_ROW_LENGTH"/>
+ <enum name="GL_PACK_SKIP_ROWS"/>
+ <enum name="GL_PACK_SKIP_PIXELS"/>
+ <enum name="GL_PACK_ALIGNMENT"/>
+ <enum name="GL_MAX_TEXTURE_SIZE"/>
+ <enum name="GL_MAX_VIEWPORT_DIMS"/>
+ <enum name="GL_SUBPIXEL_BITS"/>
+ <enum name="GL_TEXTURE_1D"/>
+ <enum name="GL_TEXTURE_2D"/>
+ <enum name="GL_TEXTURE_WIDTH"/>
+ <enum name="GL_TEXTURE_HEIGHT"/>
+ <enum name="GL_TEXTURE_BORDER_COLOR"/>
+ <enum name="GL_DONT_CARE"/>
+ <enum name="GL_FASTEST"/>
+ <enum name="GL_NICEST"/>
+ <enum name="GL_BYTE"/>
+ <enum name="GL_UNSIGNED_BYTE"/>
+ <enum name="GL_SHORT"/>
+ <enum name="GL_UNSIGNED_SHORT"/>
+ <enum name="GL_INT"/>
+ <enum name="GL_UNSIGNED_INT"/>
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_STACK_OVERFLOW"/>
+ <enum name="GL_STACK_UNDERFLOW"/>
+ <enum name="GL_CLEAR"/>
+ <enum name="GL_AND"/>
+ <enum name="GL_AND_REVERSE"/>
+ <enum name="GL_COPY"/>
+ <enum name="GL_AND_INVERTED"/>
+ <enum name="GL_NOOP"/>
+ <enum name="GL_XOR"/>
+ <enum name="GL_OR"/>
+ <enum name="GL_NOR"/>
+ <enum name="GL_EQUIV"/>
+ <enum name="GL_INVERT"/>
+ <enum name="GL_OR_REVERSE"/>
+ <enum name="GL_COPY_INVERTED"/>
+ <enum name="GL_OR_INVERTED"/>
+ <enum name="GL_NAND"/>
+ <enum name="GL_SET"/>
+ <enum name="GL_TEXTURE"/>
+ <enum name="GL_COLOR"/>
+ <enum name="GL_DEPTH"/>
+ <enum name="GL_STENCIL"/>
+ <enum name="GL_STENCIL_INDEX"/>
+ <enum name="GL_DEPTH_COMPONENT"/>
+ <enum name="GL_RED"/>
+ <enum name="GL_GREEN"/>
+ <enum name="GL_BLUE"/>
+ <enum name="GL_ALPHA"/>
+ <enum name="GL_RGB"/>
+ <enum name="GL_RGBA"/>
+ <enum name="GL_POINT"/>
+ <enum name="GL_LINE"/>
+ <enum name="GL_FILL"/>
+ <enum name="GL_KEEP"/>
+ <enum name="GL_REPLACE"/>
+ <enum name="GL_INCR"/>
+ <enum name="GL_DECR"/>
+ <enum name="GL_VENDOR"/>
+ <enum name="GL_RENDERER"/>
+ <enum name="GL_VERSION"/>
+ <enum name="GL_EXTENSIONS"/>
+ <enum name="GL_NEAREST"/>
+ <enum name="GL_LINEAR"/>
+ <enum name="GL_NEAREST_MIPMAP_NEAREST"/>
+ <enum name="GL_LINEAR_MIPMAP_NEAREST"/>
+ <enum name="GL_NEAREST_MIPMAP_LINEAR"/>
+ <enum name="GL_LINEAR_MIPMAP_LINEAR"/>
+ <enum name="GL_TEXTURE_MAG_FILTER"/>
+ <enum name="GL_TEXTURE_MIN_FILTER"/>
+ <enum name="GL_TEXTURE_WRAP_S"/>
+ <enum name="GL_TEXTURE_WRAP_T"/>
+ <enum name="GL_REPEAT"/>
+ <enum name="GL_CURRENT_BIT"/>
+ <enum name="GL_POINT_BIT"/>
+ <enum name="GL_LINE_BIT"/>
+ <enum name="GL_POLYGON_BIT"/>
+ <enum name="GL_POLYGON_STIPPLE_BIT"/>
+ <enum name="GL_PIXEL_MODE_BIT"/>
+ <enum name="GL_LIGHTING_BIT"/>
+ <enum name="GL_FOG_BIT"/>
+ <enum name="GL_ACCUM_BUFFER_BIT"/>
+ <enum name="GL_VIEWPORT_BIT"/>
+ <enum name="GL_TRANSFORM_BIT"/>
+ <enum name="GL_ENABLE_BIT"/>
+ <enum name="GL_HINT_BIT"/>
+ <enum name="GL_EVAL_BIT"/>
+ <enum name="GL_LIST_BIT"/>
+ <enum name="GL_TEXTURE_BIT"/>
+ <enum name="GL_SCISSOR_BIT"/>
+ <enum name="GL_ALL_ATTRIB_BITS"/>
+ <enum name="GL_QUAD_STRIP"/>
+ <enum name="GL_POLYGON"/>
+ <enum name="GL_ACCUM"/>
+ <enum name="GL_LOAD"/>
+ <enum name="GL_RETURN"/>
+ <enum name="GL_MULT"/>
+ <enum name="GL_ADD"/>
+ <enum name="GL_AUX0"/>
+ <enum name="GL_AUX1"/>
+ <enum name="GL_AUX2"/>
+ <enum name="GL_AUX3"/>
+ <enum name="GL_2D"/>
+ <enum name="GL_3D"/>
+ <enum name="GL_3D_COLOR"/>
+ <enum name="GL_3D_COLOR_TEXTURE"/>
+ <enum name="GL_4D_COLOR_TEXTURE"/>
+ <enum name="GL_PASS_THROUGH_TOKEN"/>
+ <enum name="GL_POINT_TOKEN"/>
+ <enum name="GL_LINE_TOKEN"/>
+ <enum name="GL_POLYGON_TOKEN"/>
+ <enum name="GL_BITMAP_TOKEN"/>
+ <enum name="GL_DRAW_PIXEL_TOKEN"/>
+ <enum name="GL_COPY_PIXEL_TOKEN"/>
+ <enum name="GL_LINE_RESET_TOKEN"/>
+ <enum name="GL_EXP"/>
+ <enum name="GL_EXP2"/>
+ <enum name="GL_COEFF"/>
+ <enum name="GL_ORDER"/>
+ <enum name="GL_DOMAIN"/>
+ <enum name="GL_PIXEL_MAP_I_TO_I"/>
+ <enum name="GL_PIXEL_MAP_S_TO_S"/>
+ <enum name="GL_PIXEL_MAP_I_TO_R"/>
+ <enum name="GL_PIXEL_MAP_I_TO_G"/>
+ <enum name="GL_PIXEL_MAP_I_TO_B"/>
+ <enum name="GL_PIXEL_MAP_I_TO_A"/>
+ <enum name="GL_PIXEL_MAP_R_TO_R"/>
+ <enum name="GL_PIXEL_MAP_G_TO_G"/>
+ <enum name="GL_PIXEL_MAP_B_TO_B"/>
+ <enum name="GL_PIXEL_MAP_A_TO_A"/>
+ <enum name="GL_CURRENT_COLOR"/>
+ <enum name="GL_CURRENT_INDEX"/>
+ <enum name="GL_CURRENT_NORMAL"/>
+ <enum name="GL_CURRENT_TEXTURE_COORDS"/>
+ <enum name="GL_CURRENT_RASTER_COLOR"/>
+ <enum name="GL_CURRENT_RASTER_INDEX"/>
+ <enum name="GL_CURRENT_RASTER_TEXTURE_COORDS"/>
+ <enum name="GL_CURRENT_RASTER_POSITION"/>
+ <enum name="GL_CURRENT_RASTER_POSITION_VALID"/>
+ <enum name="GL_CURRENT_RASTER_DISTANCE"/>
+ <enum name="GL_POINT_SMOOTH"/>
+ <enum name="GL_LINE_STIPPLE"/>
+ <enum name="GL_LINE_STIPPLE_PATTERN"/>
+ <enum name="GL_LINE_STIPPLE_REPEAT"/>
+ <enum name="GL_LIST_MODE"/>
+ <enum name="GL_MAX_LIST_NESTING"/>
+ <enum name="GL_LIST_BASE"/>
+ <enum name="GL_LIST_INDEX"/>
+ <enum name="GL_POLYGON_STIPPLE"/>
+ <enum name="GL_EDGE_FLAG"/>
+ <enum name="GL_LIGHTING"/>
+ <enum name="GL_LIGHT_MODEL_LOCAL_VIEWER"/>
+ <enum name="GL_LIGHT_MODEL_TWO_SIDE"/>
+ <enum name="GL_LIGHT_MODEL_AMBIENT"/>
+ <enum name="GL_SHADE_MODEL"/>
+ <enum name="GL_COLOR_MATERIAL_FACE"/>
+ <enum name="GL_COLOR_MATERIAL_PARAMETER"/>
+ <enum name="GL_COLOR_MATERIAL"/>
+ <enum name="GL_FOG"/>
+ <enum name="GL_FOG_INDEX"/>
+ <enum name="GL_FOG_DENSITY"/>
+ <enum name="GL_FOG_START"/>
+ <enum name="GL_FOG_END"/>
+ <enum name="GL_FOG_MODE"/>
+ <enum name="GL_FOG_COLOR"/>
+ <enum name="GL_ACCUM_CLEAR_VALUE"/>
+ <enum name="GL_MATRIX_MODE"/>
+ <enum name="GL_NORMALIZE"/>
+ <enum name="GL_MODELVIEW_STACK_DEPTH"/>
+ <enum name="GL_PROJECTION_STACK_DEPTH"/>
+ <enum name="GL_TEXTURE_STACK_DEPTH"/>
+ <enum name="GL_MODELVIEW_MATRIX"/>
+ <enum name="GL_PROJECTION_MATRIX"/>
+ <enum name="GL_TEXTURE_MATRIX"/>
+ <enum name="GL_ATTRIB_STACK_DEPTH"/>
+ <enum name="GL_ALPHA_TEST"/>
+ <enum name="GL_ALPHA_TEST_FUNC"/>
+ <enum name="GL_ALPHA_TEST_REF"/>
+ <enum name="GL_LOGIC_OP"/>
+ <enum name="GL_AUX_BUFFERS"/>
+ <enum name="GL_INDEX_CLEAR_VALUE"/>
+ <enum name="GL_INDEX_WRITEMASK"/>
+ <enum name="GL_INDEX_MODE"/>
+ <enum name="GL_RGBA_MODE"/>
+ <enum name="GL_RENDER_MODE"/>
+ <enum name="GL_PERSPECTIVE_CORRECTION_HINT"/>
+ <enum name="GL_POINT_SMOOTH_HINT"/>
+ <enum name="GL_FOG_HINT"/>
+ <enum name="GL_TEXTURE_GEN_S"/>
+ <enum name="GL_TEXTURE_GEN_T"/>
+ <enum name="GL_TEXTURE_GEN_R"/>
+ <enum name="GL_TEXTURE_GEN_Q"/>
+ <enum name="GL_PIXEL_MAP_I_TO_I_SIZE"/>
+ <enum name="GL_PIXEL_MAP_S_TO_S_SIZE"/>
+ <enum name="GL_PIXEL_MAP_I_TO_R_SIZE"/>
+ <enum name="GL_PIXEL_MAP_I_TO_G_SIZE"/>
+ <enum name="GL_PIXEL_MAP_I_TO_B_SIZE"/>
+ <enum name="GL_PIXEL_MAP_I_TO_A_SIZE"/>
+ <enum name="GL_PIXEL_MAP_R_TO_R_SIZE"/>
+ <enum name="GL_PIXEL_MAP_G_TO_G_SIZE"/>
+ <enum name="GL_PIXEL_MAP_B_TO_B_SIZE"/>
+ <enum name="GL_PIXEL_MAP_A_TO_A_SIZE"/>
+ <enum name="GL_MAP_COLOR"/>
+ <enum name="GL_MAP_STENCIL"/>
+ <enum name="GL_INDEX_SHIFT"/>
+ <enum name="GL_INDEX_OFFSET"/>
+ <enum name="GL_RED_SCALE"/>
+ <enum name="GL_RED_BIAS"/>
+ <enum name="GL_ZOOM_X"/>
+ <enum name="GL_ZOOM_Y"/>
+ <enum name="GL_GREEN_SCALE"/>
+ <enum name="GL_GREEN_BIAS"/>
+ <enum name="GL_BLUE_SCALE"/>
+ <enum name="GL_BLUE_BIAS"/>
+ <enum name="GL_ALPHA_SCALE"/>
+ <enum name="GL_ALPHA_BIAS"/>
+ <enum name="GL_DEPTH_SCALE"/>
+ <enum name="GL_DEPTH_BIAS"/>
+ <enum name="GL_MAX_EVAL_ORDER"/>
+ <enum name="GL_MAX_LIGHTS"/>
+ <enum name="GL_MAX_CLIP_PLANES"/>
+ <enum name="GL_MAX_PIXEL_MAP_TABLE"/>
+ <enum name="GL_MAX_ATTRIB_STACK_DEPTH"/>
+ <enum name="GL_MAX_MODELVIEW_STACK_DEPTH"/>
+ <enum name="GL_MAX_NAME_STACK_DEPTH"/>
+ <enum name="GL_MAX_PROJECTION_STACK_DEPTH"/>
+ <enum name="GL_MAX_TEXTURE_STACK_DEPTH"/>
+ <enum name="GL_INDEX_BITS"/>
+ <enum name="GL_RED_BITS"/>
+ <enum name="GL_GREEN_BITS"/>
+ <enum name="GL_BLUE_BITS"/>
+ <enum name="GL_ALPHA_BITS"/>
+ <enum name="GL_DEPTH_BITS"/>
+ <enum name="GL_STENCIL_BITS"/>
+ <enum name="GL_ACCUM_RED_BITS"/>
+ <enum name="GL_ACCUM_GREEN_BITS"/>
+ <enum name="GL_ACCUM_BLUE_BITS"/>
+ <enum name="GL_ACCUM_ALPHA_BITS"/>
+ <enum name="GL_NAME_STACK_DEPTH"/>
+ <enum name="GL_AUTO_NORMAL"/>
+ <enum name="GL_MAP1_COLOR_4"/>
+ <enum name="GL_MAP1_INDEX"/>
+ <enum name="GL_MAP1_NORMAL"/>
+ <enum name="GL_MAP1_TEXTURE_COORD_1"/>
+ <enum name="GL_MAP1_TEXTURE_COORD_2"/>
+ <enum name="GL_MAP1_TEXTURE_COORD_3"/>
+ <enum name="GL_MAP1_TEXTURE_COORD_4"/>
+ <enum name="GL_MAP1_VERTEX_3"/>
+ <enum name="GL_MAP1_VERTEX_4"/>
+ <enum name="GL_MAP2_COLOR_4"/>
+ <enum name="GL_MAP2_INDEX"/>
+ <enum name="GL_MAP2_NORMAL"/>
+ <enum name="GL_MAP2_TEXTURE_COORD_1"/>
+ <enum name="GL_MAP2_TEXTURE_COORD_2"/>
+ <enum name="GL_MAP2_TEXTURE_COORD_3"/>
+ <enum name="GL_MAP2_TEXTURE_COORD_4"/>
+ <enum name="GL_MAP2_VERTEX_3"/>
+ <enum name="GL_MAP2_VERTEX_4"/>
+ <enum name="GL_MAP1_GRID_DOMAIN"/>
+ <enum name="GL_MAP1_GRID_SEGMENTS"/>
+ <enum name="GL_MAP2_GRID_DOMAIN"/>
+ <enum name="GL_MAP2_GRID_SEGMENTS"/>
+ <enum name="GL_TEXTURE_COMPONENTS"/>
+ <enum name="GL_TEXTURE_BORDER"/>
+ <enum name="GL_AMBIENT"/>
+ <enum name="GL_DIFFUSE"/>
+ <enum name="GL_SPECULAR"/>
+ <enum name="GL_POSITION"/>
+ <enum name="GL_SPOT_DIRECTION"/>
+ <enum name="GL_SPOT_EXPONENT"/>
+ <enum name="GL_SPOT_CUTOFF"/>
+ <enum name="GL_CONSTANT_ATTENUATION"/>
+ <enum name="GL_LINEAR_ATTENUATION"/>
+ <enum name="GL_QUADRATIC_ATTENUATION"/>
+ <enum name="GL_COMPILE"/>
+ <enum name="GL_COMPILE_AND_EXECUTE"/>
+ <enum name="GL_2_BYTES"/>
+ <enum name="GL_3_BYTES"/>
+ <enum name="GL_4_BYTES"/>
+ <enum name="GL_EMISSION"/>
+ <enum name="GL_SHININESS"/>
+ <enum name="GL_AMBIENT_AND_DIFFUSE"/>
+ <enum name="GL_COLOR_INDEXES"/>
+ <enum name="GL_MODELVIEW"/>
+ <enum name="GL_PROJECTION"/>
+ <enum name="GL_COLOR_INDEX"/>
+ <enum name="GL_LUMINANCE"/>
+ <enum name="GL_LUMINANCE_ALPHA"/>
+ <enum name="GL_BITMAP"/>
+ <enum name="GL_RENDER"/>
+ <enum name="GL_FEEDBACK"/>
+ <enum name="GL_SELECT"/>
+ <enum name="GL_FLAT"/>
+ <enum name="GL_SMOOTH"/>
+ <enum name="GL_S"/>
+ <enum name="GL_T"/>
+ <enum name="GL_R"/>
+ <enum name="GL_Q"/>
+ <enum name="GL_MODULATE"/>
+ <enum name="GL_DECAL"/>
+ <enum name="GL_TEXTURE_ENV_MODE"/>
+ <enum name="GL_TEXTURE_ENV_COLOR"/>
+ <enum name="GL_TEXTURE_ENV"/>
+ <enum name="GL_EYE_LINEAR"/>
+ <enum name="GL_OBJECT_LINEAR"/>
+ <enum name="GL_SPHERE_MAP"/>
+ <enum name="GL_TEXTURE_GEN_MODE"/>
+ <enum name="GL_OBJECT_PLANE"/>
+ <enum name="GL_EYE_PLANE"/>
+ <enum name="GL_CLAMP"/>
+ <enum name="GL_CLIP_PLANE0"/>
+ <enum name="GL_CLIP_PLANE1"/>
+ <enum name="GL_CLIP_PLANE2"/>
+ <enum name="GL_CLIP_PLANE3"/>
+ <enum name="GL_CLIP_PLANE4"/>
+ <enum name="GL_CLIP_PLANE5"/>
+ <enum name="GL_LIGHT0"/>
+ <enum name="GL_LIGHT1"/>
+ <enum name="GL_LIGHT2"/>
+ <enum name="GL_LIGHT3"/>
+ <enum name="GL_LIGHT4"/>
+ <enum name="GL_LIGHT5"/>
+ <enum name="GL_LIGHT6"/>
+ <enum name="GL_LIGHT7"/>
<command name="glCullFace"/>
<command name="glFrontFace"/>
<command name="glHint"/>
@@ -30130,116 +32930,7 @@
<require>
<type name="GLclampf" comment="No longer used in GL 1.1, but still defined in Mesa gl.h"/>
<type name="GLclampd" comment="No longer used in GL 1.1, but still defined in Mesa gl.h"/>
- <!-- Many of these are really VERSION_1_0 enums -->
- <enum name="GL_DEPTH_BUFFER_BIT"/>
- <enum name="GL_STENCIL_BUFFER_BIT"/>
- <enum name="GL_COLOR_BUFFER_BIT"/>
- <enum name="GL_FALSE"/>
- <enum name="GL_TRUE"/>
- <enum name="GL_POINTS"/>
- <enum name="GL_LINES"/>
- <enum name="GL_LINE_LOOP"/>
- <enum name="GL_LINE_STRIP"/>
- <enum name="GL_TRIANGLES"/>
- <enum name="GL_TRIANGLE_STRIP"/>
- <enum name="GL_TRIANGLE_FAN"/>
- <enum name="GL_QUADS"/>
- <enum name="GL_NEVER"/>
- <enum name="GL_LESS"/>
- <enum name="GL_EQUAL"/>
- <enum name="GL_LEQUAL"/>
- <enum name="GL_GREATER"/>
- <enum name="GL_NOTEQUAL"/>
- <enum name="GL_GEQUAL"/>
- <enum name="GL_ALWAYS"/>
- <enum name="GL_ZERO"/>
- <enum name="GL_ONE"/>
- <enum name="GL_SRC_COLOR"/>
- <enum name="GL_ONE_MINUS_SRC_COLOR"/>
- <enum name="GL_SRC_ALPHA"/>
- <enum name="GL_ONE_MINUS_SRC_ALPHA"/>
- <enum name="GL_DST_ALPHA"/>
- <enum name="GL_ONE_MINUS_DST_ALPHA"/>
- <enum name="GL_DST_COLOR"/>
- <enum name="GL_ONE_MINUS_DST_COLOR"/>
- <enum name="GL_SRC_ALPHA_SATURATE"/>
- <enum name="GL_NONE"/>
- <enum name="GL_FRONT_LEFT"/>
- <enum name="GL_FRONT_RIGHT"/>
- <enum name="GL_BACK_LEFT"/>
- <enum name="GL_BACK_RIGHT"/>
- <enum name="GL_FRONT"/>
- <enum name="GL_BACK"/>
- <enum name="GL_LEFT"/>
- <enum name="GL_RIGHT"/>
- <enum name="GL_FRONT_AND_BACK"/>
- <enum name="GL_NO_ERROR"/>
- <enum name="GL_INVALID_ENUM"/>
- <enum name="GL_INVALID_VALUE"/>
- <enum name="GL_INVALID_OPERATION"/>
- <enum name="GL_OUT_OF_MEMORY"/>
- <enum name="GL_CW"/>
- <enum name="GL_CCW"/>
- <enum name="GL_POINT_SIZE"/>
- <enum name="GL_POINT_SIZE_RANGE"/>
- <enum name="GL_POINT_SIZE_GRANULARITY"/>
- <enum name="GL_LINE_SMOOTH"/>
- <enum name="GL_LINE_WIDTH"/>
- <enum name="GL_LINE_WIDTH_RANGE"/>
- <enum name="GL_LINE_WIDTH_GRANULARITY"/>
- <enum name="GL_POLYGON_MODE"/>
- <enum name="GL_POLYGON_SMOOTH"/>
- <enum name="GL_CULL_FACE"/>
- <enum name="GL_CULL_FACE_MODE"/>
- <enum name="GL_FRONT_FACE"/>
- <enum name="GL_DEPTH_RANGE"/>
- <enum name="GL_DEPTH_TEST"/>
- <enum name="GL_DEPTH_WRITEMASK"/>
- <enum name="GL_DEPTH_CLEAR_VALUE"/>
- <enum name="GL_DEPTH_FUNC"/>
- <enum name="GL_STENCIL_TEST"/>
- <enum name="GL_STENCIL_CLEAR_VALUE"/>
- <enum name="GL_STENCIL_FUNC"/>
- <enum name="GL_STENCIL_VALUE_MASK"/>
- <enum name="GL_STENCIL_FAIL"/>
- <enum name="GL_STENCIL_PASS_DEPTH_FAIL"/>
- <enum name="GL_STENCIL_PASS_DEPTH_PASS"/>
- <enum name="GL_STENCIL_REF"/>
- <enum name="GL_STENCIL_WRITEMASK"/>
- <enum name="GL_VIEWPORT"/>
- <enum name="GL_DITHER"/>
- <enum name="GL_BLEND_DST"/>
- <enum name="GL_BLEND_SRC"/>
- <enum name="GL_BLEND"/>
- <enum name="GL_LOGIC_OP_MODE"/>
<enum name="GL_COLOR_LOGIC_OP"/>
- <enum name="GL_DRAW_BUFFER"/>
- <enum name="GL_READ_BUFFER"/>
- <enum name="GL_SCISSOR_BOX"/>
- <enum name="GL_SCISSOR_TEST"/>
- <enum name="GL_COLOR_CLEAR_VALUE"/>
- <enum name="GL_COLOR_WRITEMASK"/>
- <enum name="GL_DOUBLEBUFFER"/>
- <enum name="GL_STEREO"/>
- <enum name="GL_LINE_SMOOTH_HINT"/>
- <enum name="GL_POLYGON_SMOOTH_HINT"/>
- <enum name="GL_UNPACK_SWAP_BYTES"/>
- <enum name="GL_UNPACK_LSB_FIRST"/>
- <enum name="GL_UNPACK_ROW_LENGTH"/>
- <enum name="GL_UNPACK_SKIP_ROWS"/>
- <enum name="GL_UNPACK_SKIP_PIXELS"/>
- <enum name="GL_UNPACK_ALIGNMENT"/>
- <enum name="GL_PACK_SWAP_BYTES"/>
- <enum name="GL_PACK_LSB_FIRST"/>
- <enum name="GL_PACK_ROW_LENGTH"/>
- <enum name="GL_PACK_SKIP_ROWS"/>
- <enum name="GL_PACK_SKIP_PIXELS"/>
- <enum name="GL_PACK_ALIGNMENT"/>
- <enum name="GL_MAX_TEXTURE_SIZE"/>
- <enum name="GL_MAX_VIEWPORT_DIMS"/>
- <enum name="GL_SUBPIXEL_BITS"/>
- <enum name="GL_TEXTURE_1D"/>
- <enum name="GL_TEXTURE_2D"/>
<enum name="GL_POLYGON_OFFSET_UNITS"/>
<enum name="GL_POLYGON_OFFSET_POINT"/>
<enum name="GL_POLYGON_OFFSET_LINE"/>
@@ -30247,79 +32938,14 @@
<enum name="GL_POLYGON_OFFSET_FACTOR"/>
<enum name="GL_TEXTURE_BINDING_1D"/>
<enum name="GL_TEXTURE_BINDING_2D"/>
- <enum name="GL_TEXTURE_WIDTH"/>
- <enum name="GL_TEXTURE_HEIGHT"/>
<enum name="GL_TEXTURE_INTERNAL_FORMAT"/>
- <enum name="GL_TEXTURE_BORDER_COLOR"/>
<enum name="GL_TEXTURE_RED_SIZE"/>
<enum name="GL_TEXTURE_GREEN_SIZE"/>
<enum name="GL_TEXTURE_BLUE_SIZE"/>
<enum name="GL_TEXTURE_ALPHA_SIZE"/>
- <enum name="GL_DONT_CARE"/>
- <enum name="GL_FASTEST"/>
- <enum name="GL_NICEST"/>
- <enum name="GL_BYTE"/>
- <enum name="GL_UNSIGNED_BYTE"/>
- <enum name="GL_SHORT"/>
- <enum name="GL_UNSIGNED_SHORT"/>
- <enum name="GL_INT"/>
- <enum name="GL_UNSIGNED_INT"/>
- <enum name="GL_FLOAT"/>
<enum name="GL_DOUBLE"/>
- <enum name="GL_STACK_OVERFLOW"/>
- <enum name="GL_STACK_UNDERFLOW"/>
- <enum name="GL_CLEAR"/>
- <enum name="GL_AND"/>
- <enum name="GL_AND_REVERSE"/>
- <enum name="GL_COPY"/>
- <enum name="GL_AND_INVERTED"/>
- <enum name="GL_NOOP"/>
- <enum name="GL_XOR"/>
- <enum name="GL_OR"/>
- <enum name="GL_NOR"/>
- <enum name="GL_EQUIV"/>
- <enum name="GL_INVERT"/>
- <enum name="GL_OR_REVERSE"/>
- <enum name="GL_COPY_INVERTED"/>
- <enum name="GL_OR_INVERTED"/>
- <enum name="GL_NAND"/>
- <enum name="GL_SET"/>
- <enum name="GL_TEXTURE"/>
- <enum name="GL_COLOR"/>
- <enum name="GL_DEPTH"/>
- <enum name="GL_STENCIL"/>
- <enum name="GL_STENCIL_INDEX"/>
- <enum name="GL_DEPTH_COMPONENT"/>
- <enum name="GL_RED"/>
- <enum name="GL_GREEN"/>
- <enum name="GL_BLUE"/>
- <enum name="GL_ALPHA"/>
- <enum name="GL_RGB"/>
- <enum name="GL_RGBA"/>
- <enum name="GL_POINT"/>
- <enum name="GL_LINE"/>
- <enum name="GL_FILL"/>
- <enum name="GL_KEEP"/>
- <enum name="GL_REPLACE"/>
- <enum name="GL_INCR"/>
- <enum name="GL_DECR"/>
- <enum name="GL_VENDOR"/>
- <enum name="GL_RENDERER"/>
- <enum name="GL_VERSION"/>
- <enum name="GL_EXTENSIONS"/>
- <enum name="GL_NEAREST"/>
- <enum name="GL_LINEAR"/>
- <enum name="GL_NEAREST_MIPMAP_NEAREST"/>
- <enum name="GL_LINEAR_MIPMAP_NEAREST"/>
- <enum name="GL_NEAREST_MIPMAP_LINEAR"/>
- <enum name="GL_LINEAR_MIPMAP_LINEAR"/>
- <enum name="GL_TEXTURE_MAG_FILTER"/>
- <enum name="GL_TEXTURE_MIN_FILTER"/>
- <enum name="GL_TEXTURE_WRAP_S"/>
- <enum name="GL_TEXTURE_WRAP_T"/>
<enum name="GL_PROXY_TEXTURE_1D"/>
<enum name="GL_PROXY_TEXTURE_2D"/>
- <enum name="GL_REPEAT"/>
<enum name="GL_R3_G3_B2"/>
<enum name="GL_RGB4"/>
<enum name="GL_RGB5"/>
@@ -30334,66 +32960,9 @@
<enum name="GL_RGB10_A2"/>
<enum name="GL_RGBA12"/>
<enum name="GL_RGBA16"/>
- <enum name="GL_CURRENT_BIT"/>
- <enum name="GL_POINT_BIT"/>
- <enum name="GL_LINE_BIT"/>
- <enum name="GL_POLYGON_BIT"/>
- <enum name="GL_POLYGON_STIPPLE_BIT"/>
- <enum name="GL_PIXEL_MODE_BIT"/>
- <enum name="GL_LIGHTING_BIT"/>
- <enum name="GL_FOG_BIT"/>
- <enum name="GL_ACCUM_BUFFER_BIT"/>
- <enum name="GL_VIEWPORT_BIT"/>
- <enum name="GL_TRANSFORM_BIT"/>
- <enum name="GL_ENABLE_BIT"/>
- <enum name="GL_HINT_BIT"/>
- <enum name="GL_EVAL_BIT"/>
- <enum name="GL_LIST_BIT"/>
- <enum name="GL_TEXTURE_BIT"/>
- <enum name="GL_SCISSOR_BIT"/>
- <enum name="GL_ALL_ATTRIB_BITS"/>
<enum name="GL_CLIENT_PIXEL_STORE_BIT"/>
<enum name="GL_CLIENT_VERTEX_ARRAY_BIT"/>
<enum name="GL_CLIENT_ALL_ATTRIB_BITS"/>
- <enum name="GL_QUAD_STRIP"/>
- <enum name="GL_POLYGON"/>
- <enum name="GL_ACCUM"/>
- <enum name="GL_LOAD"/>
- <enum name="GL_RETURN"/>
- <enum name="GL_MULT"/>
- <enum name="GL_ADD"/>
- <enum name="GL_AUX0"/>
- <enum name="GL_AUX1"/>
- <enum name="GL_AUX2"/>
- <enum name="GL_AUX3"/>
- <enum name="GL_2D"/>
- <enum name="GL_3D"/>
- <enum name="GL_3D_COLOR"/>
- <enum name="GL_3D_COLOR_TEXTURE"/>
- <enum name="GL_4D_COLOR_TEXTURE"/>
- <enum name="GL_PASS_THROUGH_TOKEN"/>
- <enum name="GL_POINT_TOKEN"/>
- <enum name="GL_LINE_TOKEN"/>
- <enum name="GL_POLYGON_TOKEN"/>
- <enum name="GL_BITMAP_TOKEN"/>
- <enum name="GL_DRAW_PIXEL_TOKEN"/>
- <enum name="GL_COPY_PIXEL_TOKEN"/>
- <enum name="GL_LINE_RESET_TOKEN"/>
- <enum name="GL_EXP"/>
- <enum name="GL_EXP2"/>
- <enum name="GL_COEFF"/>
- <enum name="GL_ORDER"/>
- <enum name="GL_DOMAIN"/>
- <enum name="GL_PIXEL_MAP_I_TO_I"/>
- <enum name="GL_PIXEL_MAP_S_TO_S"/>
- <enum name="GL_PIXEL_MAP_I_TO_R"/>
- <enum name="GL_PIXEL_MAP_I_TO_G"/>
- <enum name="GL_PIXEL_MAP_I_TO_B"/>
- <enum name="GL_PIXEL_MAP_I_TO_A"/>
- <enum name="GL_PIXEL_MAP_R_TO_R"/>
- <enum name="GL_PIXEL_MAP_G_TO_G"/>
- <enum name="GL_PIXEL_MAP_B_TO_B"/>
- <enum name="GL_PIXEL_MAP_A_TO_A"/>
<enum name="GL_VERTEX_ARRAY_POINTER"/>
<enum name="GL_NORMAL_ARRAY_POINTER"/>
<enum name="GL_COLOR_ARRAY_POINTER"/>
@@ -30402,141 +32971,9 @@
<enum name="GL_EDGE_FLAG_ARRAY_POINTER"/>
<enum name="GL_FEEDBACK_BUFFER_POINTER"/>
<enum name="GL_SELECTION_BUFFER_POINTER"/>
- <enum name="GL_CURRENT_COLOR"/>
- <enum name="GL_CURRENT_INDEX"/>
- <enum name="GL_CURRENT_NORMAL"/>
- <enum name="GL_CURRENT_TEXTURE_COORDS"/>
- <enum name="GL_CURRENT_RASTER_COLOR"/>
- <enum name="GL_CURRENT_RASTER_INDEX"/>
- <enum name="GL_CURRENT_RASTER_TEXTURE_COORDS"/>
- <enum name="GL_CURRENT_RASTER_POSITION"/>
- <enum name="GL_CURRENT_RASTER_POSITION_VALID"/>
- <enum name="GL_CURRENT_RASTER_DISTANCE"/>
- <enum name="GL_POINT_SMOOTH"/>
- <enum name="GL_LINE_STIPPLE"/>
- <enum name="GL_LINE_STIPPLE_PATTERN"/>
- <enum name="GL_LINE_STIPPLE_REPEAT"/>
- <enum name="GL_LIST_MODE"/>
- <enum name="GL_MAX_LIST_NESTING"/>
- <enum name="GL_LIST_BASE"/>
- <enum name="GL_LIST_INDEX"/>
- <enum name="GL_POLYGON_STIPPLE"/>
- <enum name="GL_EDGE_FLAG"/>
- <enum name="GL_LIGHTING"/>
- <enum name="GL_LIGHT_MODEL_LOCAL_VIEWER"/>
- <enum name="GL_LIGHT_MODEL_TWO_SIDE"/>
- <enum name="GL_LIGHT_MODEL_AMBIENT"/>
- <enum name="GL_SHADE_MODEL"/>
- <enum name="GL_COLOR_MATERIAL_FACE"/>
- <enum name="GL_COLOR_MATERIAL_PARAMETER"/>
- <enum name="GL_COLOR_MATERIAL"/>
- <enum name="GL_FOG"/>
- <enum name="GL_FOG_INDEX"/>
- <enum name="GL_FOG_DENSITY"/>
- <enum name="GL_FOG_START"/>
- <enum name="GL_FOG_END"/>
- <enum name="GL_FOG_MODE"/>
- <enum name="GL_FOG_COLOR"/>
- <enum name="GL_ACCUM_CLEAR_VALUE"/>
- <enum name="GL_MATRIX_MODE"/>
- <enum name="GL_NORMALIZE"/>
- <enum name="GL_MODELVIEW_STACK_DEPTH"/>
- <enum name="GL_PROJECTION_STACK_DEPTH"/>
- <enum name="GL_TEXTURE_STACK_DEPTH"/>
- <enum name="GL_MODELVIEW_MATRIX"/>
- <enum name="GL_PROJECTION_MATRIX"/>
- <enum name="GL_TEXTURE_MATRIX"/>
- <enum name="GL_ATTRIB_STACK_DEPTH"/>
<enum name="GL_CLIENT_ATTRIB_STACK_DEPTH"/>
- <enum name="GL_ALPHA_TEST"/>
- <enum name="GL_ALPHA_TEST_FUNC"/>
- <enum name="GL_ALPHA_TEST_REF"/>
<enum name="GL_INDEX_LOGIC_OP"/>
- <enum name="GL_LOGIC_OP"/>
- <enum name="GL_AUX_BUFFERS"/>
- <enum name="GL_INDEX_CLEAR_VALUE"/>
- <enum name="GL_INDEX_WRITEMASK"/>
- <enum name="GL_INDEX_MODE"/>
- <enum name="GL_RGBA_MODE"/>
- <enum name="GL_RENDER_MODE"/>
- <enum name="GL_PERSPECTIVE_CORRECTION_HINT"/>
- <enum name="GL_POINT_SMOOTH_HINT"/>
- <enum name="GL_FOG_HINT"/>
- <enum name="GL_TEXTURE_GEN_S"/>
- <enum name="GL_TEXTURE_GEN_T"/>
- <enum name="GL_TEXTURE_GEN_R"/>
- <enum name="GL_TEXTURE_GEN_Q"/>
- <enum name="GL_PIXEL_MAP_I_TO_I_SIZE"/>
- <enum name="GL_PIXEL_MAP_S_TO_S_SIZE"/>
- <enum name="GL_PIXEL_MAP_I_TO_R_SIZE"/>
- <enum name="GL_PIXEL_MAP_I_TO_G_SIZE"/>
- <enum name="GL_PIXEL_MAP_I_TO_B_SIZE"/>
- <enum name="GL_PIXEL_MAP_I_TO_A_SIZE"/>
- <enum name="GL_PIXEL_MAP_R_TO_R_SIZE"/>
- <enum name="GL_PIXEL_MAP_G_TO_G_SIZE"/>
- <enum name="GL_PIXEL_MAP_B_TO_B_SIZE"/>
- <enum name="GL_PIXEL_MAP_A_TO_A_SIZE"/>
- <enum name="GL_MAP_COLOR"/>
- <enum name="GL_MAP_STENCIL"/>
- <enum name="GL_INDEX_SHIFT"/>
- <enum name="GL_INDEX_OFFSET"/>
- <enum name="GL_RED_SCALE"/>
- <enum name="GL_RED_BIAS"/>
- <enum name="GL_ZOOM_X"/>
- <enum name="GL_ZOOM_Y"/>
- <enum name="GL_GREEN_SCALE"/>
- <enum name="GL_GREEN_BIAS"/>
- <enum name="GL_BLUE_SCALE"/>
- <enum name="GL_BLUE_BIAS"/>
- <enum name="GL_ALPHA_SCALE"/>
- <enum name="GL_ALPHA_BIAS"/>
- <enum name="GL_DEPTH_SCALE"/>
- <enum name="GL_DEPTH_BIAS"/>
- <enum name="GL_MAX_EVAL_ORDER"/>
- <enum name="GL_MAX_LIGHTS"/>
- <enum name="GL_MAX_CLIP_PLANES"/>
- <enum name="GL_MAX_PIXEL_MAP_TABLE"/>
- <enum name="GL_MAX_ATTRIB_STACK_DEPTH"/>
- <enum name="GL_MAX_MODELVIEW_STACK_DEPTH"/>
- <enum name="GL_MAX_NAME_STACK_DEPTH"/>
- <enum name="GL_MAX_PROJECTION_STACK_DEPTH"/>
- <enum name="GL_MAX_TEXTURE_STACK_DEPTH"/>
<enum name="GL_MAX_CLIENT_ATTRIB_STACK_DEPTH"/>
- <enum name="GL_INDEX_BITS"/>
- <enum name="GL_RED_BITS"/>
- <enum name="GL_GREEN_BITS"/>
- <enum name="GL_BLUE_BITS"/>
- <enum name="GL_ALPHA_BITS"/>
- <enum name="GL_DEPTH_BITS"/>
- <enum name="GL_STENCIL_BITS"/>
- <enum name="GL_ACCUM_RED_BITS"/>
- <enum name="GL_ACCUM_GREEN_BITS"/>
- <enum name="GL_ACCUM_BLUE_BITS"/>
- <enum name="GL_ACCUM_ALPHA_BITS"/>
- <enum name="GL_NAME_STACK_DEPTH"/>
- <enum name="GL_AUTO_NORMAL"/>
- <enum name="GL_MAP1_COLOR_4"/>
- <enum name="GL_MAP1_INDEX"/>
- <enum name="GL_MAP1_NORMAL"/>
- <enum name="GL_MAP1_TEXTURE_COORD_1"/>
- <enum name="GL_MAP1_TEXTURE_COORD_2"/>
- <enum name="GL_MAP1_TEXTURE_COORD_3"/>
- <enum name="GL_MAP1_TEXTURE_COORD_4"/>
- <enum name="GL_MAP1_VERTEX_3"/>
- <enum name="GL_MAP1_VERTEX_4"/>
- <enum name="GL_MAP2_COLOR_4"/>
- <enum name="GL_MAP2_INDEX"/>
- <enum name="GL_MAP2_NORMAL"/>
- <enum name="GL_MAP2_TEXTURE_COORD_1"/>
- <enum name="GL_MAP2_TEXTURE_COORD_2"/>
- <enum name="GL_MAP2_TEXTURE_COORD_3"/>
- <enum name="GL_MAP2_TEXTURE_COORD_4"/>
- <enum name="GL_MAP2_VERTEX_3"/>
- <enum name="GL_MAP2_VERTEX_4"/>
- <enum name="GL_MAP1_GRID_DOMAIN"/>
- <enum name="GL_MAP1_GRID_SEGMENTS"/>
- <enum name="GL_MAP2_GRID_DOMAIN"/>
- <enum name="GL_MAP2_GRID_SEGMENTS"/>
<enum name="GL_FEEDBACK_BUFFER_SIZE"/>
<enum name="GL_FEEDBACK_BUFFER_TYPE"/>
<enum name="GL_SELECTION_BUFFER_SIZE"/>
@@ -30560,58 +32997,10 @@
<enum name="GL_TEXTURE_COORD_ARRAY_TYPE"/>
<enum name="GL_TEXTURE_COORD_ARRAY_STRIDE"/>
<enum name="GL_EDGE_FLAG_ARRAY_STRIDE"/>
- <enum name="GL_TEXTURE_COMPONENTS"/>
- <enum name="GL_TEXTURE_BORDER"/>
<enum name="GL_TEXTURE_LUMINANCE_SIZE"/>
<enum name="GL_TEXTURE_INTENSITY_SIZE"/>
<enum name="GL_TEXTURE_PRIORITY"/>
<enum name="GL_TEXTURE_RESIDENT"/>
- <enum name="GL_AMBIENT"/>
- <enum name="GL_DIFFUSE"/>
- <enum name="GL_SPECULAR"/>
- <enum name="GL_POSITION"/>
- <enum name="GL_SPOT_DIRECTION"/>
- <enum name="GL_SPOT_EXPONENT"/>
- <enum name="GL_SPOT_CUTOFF"/>
- <enum name="GL_CONSTANT_ATTENUATION"/>
- <enum name="GL_LINEAR_ATTENUATION"/>
- <enum name="GL_QUADRATIC_ATTENUATION"/>
- <enum name="GL_COMPILE"/>
- <enum name="GL_COMPILE_AND_EXECUTE"/>
- <enum name="GL_2_BYTES"/>
- <enum name="GL_3_BYTES"/>
- <enum name="GL_4_BYTES"/>
- <enum name="GL_EMISSION"/>
- <enum name="GL_SHININESS"/>
- <enum name="GL_AMBIENT_AND_DIFFUSE"/>
- <enum name="GL_COLOR_INDEXES"/>
- <enum name="GL_MODELVIEW"/>
- <enum name="GL_PROJECTION"/>
- <enum name="GL_COLOR_INDEX"/>
- <enum name="GL_LUMINANCE"/>
- <enum name="GL_LUMINANCE_ALPHA"/>
- <enum name="GL_BITMAP"/>
- <enum name="GL_RENDER"/>
- <enum name="GL_FEEDBACK"/>
- <enum name="GL_SELECT"/>
- <enum name="GL_FLAT"/>
- <enum name="GL_SMOOTH"/>
- <enum name="GL_S"/>
- <enum name="GL_T"/>
- <enum name="GL_R"/>
- <enum name="GL_Q"/>
- <enum name="GL_MODULATE"/>
- <enum name="GL_DECAL"/>
- <enum name="GL_TEXTURE_ENV_MODE"/>
- <enum name="GL_TEXTURE_ENV_COLOR"/>
- <enum name="GL_TEXTURE_ENV"/>
- <enum name="GL_EYE_LINEAR"/>
- <enum name="GL_OBJECT_LINEAR"/>
- <enum name="GL_SPHERE_MAP"/>
- <enum name="GL_TEXTURE_GEN_MODE"/>
- <enum name="GL_OBJECT_PLANE"/>
- <enum name="GL_EYE_PLANE"/>
- <enum name="GL_CLAMP"/>
<enum name="GL_ALPHA4"/>
<enum name="GL_ALPHA8"/>
<enum name="GL_ALPHA12"/>
@@ -30645,20 +33034,6 @@
<enum name="GL_T2F_N3F_V3F"/>
<enum name="GL_T2F_C4F_N3F_V3F"/>
<enum name="GL_T4F_C4F_N3F_V4F"/>
- <enum name="GL_CLIP_PLANE0"/>
- <enum name="GL_CLIP_PLANE1"/>
- <enum name="GL_CLIP_PLANE2"/>
- <enum name="GL_CLIP_PLANE3"/>
- <enum name="GL_CLIP_PLANE4"/>
- <enum name="GL_CLIP_PLANE5"/>
- <enum name="GL_LIGHT0"/>
- <enum name="GL_LIGHT1"/>
- <enum name="GL_LIGHT2"/>
- <enum name="GL_LIGHT3"/>
- <enum name="GL_LIGHT4"/>
- <enum name="GL_LIGHT5"/>
- <enum name="GL_LIGHT6"/>
- <enum name="GL_LIGHT7"/>
<command name="glDrawArrays"/>
<command name="glDrawElements"/>
<command name="glGetPointerv"/>
@@ -30738,7 +33113,7 @@
<command name="glTexImage3D"/>
<command name="glTexSubImage3D"/>
<command name="glCopyTexSubImage3D"/>
- </require>
+ </require>
</feature>
<feature api="gl" name="GL_VERSION_1_3" number="1.3">
<require>
@@ -30974,15 +33349,17 @@
<command name="glWindowPos3sv"/>
</require>
<require comment="Promoted from ARB_imaging subset to core">
- <enum name="GL_FUNC_ADD"/>
- <enum name="GL_FUNC_SUBTRACT"/>
- <enum name="GL_FUNC_REVERSE_SUBTRACT"/>
- <enum name="GL_MIN"/>
- <enum name="GL_MAX"/>
+ <enum name="GL_BLEND_COLOR"/>
+ <enum name="GL_BLEND_EQUATION"/>
<enum name="GL_CONSTANT_COLOR"/>
<enum name="GL_ONE_MINUS_CONSTANT_COLOR"/>
<enum name="GL_CONSTANT_ALPHA"/>
<enum name="GL_ONE_MINUS_CONSTANT_ALPHA"/>
+ <enum name="GL_FUNC_ADD"/>
+ <enum name="GL_FUNC_REVERSE_SUBTRACT"/>
+ <enum name="GL_FUNC_SUBTRACT"/>
+ <enum name="GL_MIN"/>
+ <enum name="GL_MAX"/>
<command name="glBlendColor"/>
<command name="glBlendEquation"/>
</require>
@@ -32935,6 +35312,7 @@
<command name="glGenProgramPipelines"/>
<command name="glIsProgramPipeline"/>
<command name="glGetProgramPipelineiv"/>
+ <command name="glProgramParameteri"/>
<command name="glProgramUniform1i"/>
<command name="glProgramUniform1iv"/>
<command name="glProgramUniform1f"/>
@@ -33596,7 +35974,6 @@
<require profile="core" comment="Restore functionality removed in GL 3.2 core to GL 4.3. Needed for debug interface.">
<enum name="GL_STACK_UNDERFLOW"/>
<enum name="GL_STACK_OVERFLOW"/>
- <command name="glGetPointerv"/>
</require>
<!-- Deprecated in OpenGL 4.3 core;
deprecate tag not defined/supported yet
@@ -33845,9 +36222,69 @@
<enum name="GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"/>
</require>
</feature>
+ <feature api="gl" name="GL_VERSION_4_6" number="4.6">
+ <require comment="Reuse GL_KHR_context_flush_control">
+ <enum name="GL_CONTEXT_RELEASE_BEHAVIOR"/>
+ <enum name="GL_NONE"/>
+ <enum name="GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"/>
+ </require>
+ <require comment="Reuse GL_ARB_gl_spirv">
+ <enum name="GL_SHADER_BINARY_FORMAT_SPIR_V"/>
+ <enum name="GL_SPIR_V_BINARY"/>
+ <command name="glSpecializeShader"/>
+ </require>
+ <require comment="Reuse GL_ARB_indirect_parameters">
+ <enum name="GL_PARAMETER_BUFFER"/>
+ <enum name="GL_PARAMETER_BUFFER_BINDING"/>
+ <command name="glMultiDrawArraysIndirectCount"/>
+ <command name="glMultiDrawElementsIndirectCount"/>
+ </require>
+ <require comment="Reuse GL_KHR_no_error">
+ <enum name="GL_CONTEXT_FLAG_NO_ERROR_BIT"/>
+ </require>
+ <require comment="Reuse GL_ARB_pipeline_statistics_query">
+ <enum name="GL_VERTICES_SUBMITTED"/>
+ <enum name="GL_PRIMITIVES_SUBMITTED"/>
+ <enum name="GL_VERTEX_SHADER_INVOCATIONS"/>
+ <enum name="GL_TESS_CONTROL_SHADER_PATCHES"/>
+ <enum name="GL_TESS_EVALUATION_SHADER_INVOCATIONS"/>
+ <enum name="GL_GEOMETRY_SHADER_INVOCATIONS"/>
+ <enum name="GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED"/>
+ <enum name="GL_FRAGMENT_SHADER_INVOCATIONS"/>
+ <enum name="GL_COMPUTE_SHADER_INVOCATIONS"/>
+ <enum name="GL_CLIPPING_INPUT_PRIMITIVES"/>
+ <enum name="GL_CLIPPING_OUTPUT_PRIMITIVES"/>
+ </require>
+ <require comment="Reuse GL_ARB_polygon_offset_clamp">
+ <enum name="GL_POLYGON_OFFSET_CLAMP"/>
+ <command name="glPolygonOffsetClamp"/>
+ </require>
+ <require comment="Reuse GL_ARB_shader_atomic_counter_ops (none)"/>
+ <require comment="Reuse GL_ARB_shader_draw_parameters (none)"/>
+ <require comment="Reuse GL_ARB_shader_group_vote (none)"/>
+ <require comment="Reuse GL_ARB_spirv_extensions">
+ <enum name="GL_SPIR_V_EXTENSIONS"/>
+ <enum name="GL_NUM_SPIR_V_EXTENSIONS"/>
+ </require>
+ <require comment="Reuse GL_ARB_texture_filter_anisotropic">
+ <enum name="GL_TEXTURE_MAX_ANISOTROPY"/>
+ <enum name="GL_MAX_TEXTURE_MAX_ANISOTROPY"/>
+ </require>
+ <require comment="Reuse GL_ARB_transform_feedback_overflow_query">
+ <enum name="GL_TRANSFORM_FEEDBACK_OVERFLOW"/>
+ <enum name="GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW"/>
+ </require>
+ </feature>
+
<!-- SECTION: OpenGL ES 1.0/1.1 API interface definitions. -->
<feature api="gles1" name="GL_VERSION_ES_CM_1_0" number="1.0">
+ <require comment="Not used by the API, for compatibility with old gl.h">
+ <type name="GLbyte"/>
+ <type name="GLclampf"/>
+ <type name="GLshort"/>
+ <type name="GLushort"/>
+ </require>
<require>
<!-- Additional API definition macros - ES 1.0/1.1, common/common-lite all in one header -->
<enum name="GL_VERSION_ES_CL_1_0"/>
@@ -35844,6 +38281,400 @@
<command name="glTexStorage3DMultisample"/>
</require>
</feature>
+ <feature api="glsc2" name="GL_SC_VERSION_2_0" number="2.0">
+ <require comment="Not used by the API, but could be used by applications">
+ <type name="GLbyte" comment="Used to define GL_BYTE data"/>
+ <type name="GLshort" comment="Used to define GL_SHORT data"/>
+ <type name="GLushort" comment="Used to define GL_UNSIGNED_SHORT data"/>
+ </require>
+ <require>
+ <enum name="GL_DEPTH_BUFFER_BIT"/>
+ <enum name="GL_STENCIL_BUFFER_BIT"/>
+ <enum name="GL_COLOR_BUFFER_BIT"/>
+ <enum name="GL_FALSE"/>
+ <enum name="GL_TRUE"/>
+ <enum name="GL_POINTS"/>
+ <enum name="GL_LINES"/>
+ <enum name="GL_LINE_LOOP"/>
+ <enum name="GL_LINE_STRIP"/>
+ <enum name="GL_TRIANGLES"/>
+ <enum name="GL_TRIANGLE_STRIP"/>
+ <enum name="GL_TRIANGLE_FAN"/>
+ <enum name="GL_ZERO"/>
+ <enum name="GL_ONE"/>
+ <enum name="GL_SRC_COLOR"/>
+ <enum name="GL_ONE_MINUS_SRC_COLOR"/>
+ <enum name="GL_SRC_ALPHA"/>
+ <enum name="GL_ONE_MINUS_SRC_ALPHA"/>
+ <enum name="GL_DST_ALPHA"/>
+ <enum name="GL_ONE_MINUS_DST_ALPHA"/>
+ <enum name="GL_DST_COLOR"/>
+ <enum name="GL_ONE_MINUS_DST_COLOR"/>
+ <enum name="GL_SRC_ALPHA_SATURATE"/>
+ <enum name="GL_FUNC_ADD"/>
+ <enum name="GL_BLEND_EQUATION"/>
+ <enum name="GL_BLEND_EQUATION_RGB"/>
+ <enum name="GL_BLEND_EQUATION_ALPHA"/>
+ <enum name="GL_FUNC_SUBTRACT"/>
+ <enum name="GL_FUNC_REVERSE_SUBTRACT"/>
+ <enum name="GL_BLEND_DST_RGB"/>
+ <enum name="GL_BLEND_SRC_RGB"/>
+ <enum name="GL_BLEND_DST_ALPHA"/>
+ <enum name="GL_BLEND_SRC_ALPHA"/>
+ <enum name="GL_CONSTANT_COLOR"/>
+ <enum name="GL_ONE_MINUS_CONSTANT_COLOR"/>
+ <enum name="GL_CONSTANT_ALPHA"/>
+ <enum name="GL_ONE_MINUS_CONSTANT_ALPHA"/>
+ <enum name="GL_BLEND_COLOR"/>
+ <enum name="GL_ARRAY_BUFFER"/>
+ <enum name="GL_ELEMENT_ARRAY_BUFFER"/>
+ <enum name="GL_ARRAY_BUFFER_BINDING"/>
+ <enum name="GL_ELEMENT_ARRAY_BUFFER_BINDING"/>
+ <enum name="GL_STREAM_DRAW"/>
+ <enum name="GL_STATIC_DRAW"/>
+ <enum name="GL_DYNAMIC_DRAW"/>
+ <enum name="GL_BUFFER_SIZE"/>
+ <enum name="GL_BUFFER_USAGE"/>
+ <enum name="GL_CURRENT_VERTEX_ATTRIB"/>
+ <enum name="GL_FRONT"/>
+ <enum name="GL_BACK"/>
+ <enum name="GL_FRONT_AND_BACK"/>
+ <enum name="GL_TEXTURE_2D"/>
+ <enum name="GL_CULL_FACE"/>
+ <enum name="GL_BLEND"/>
+ <enum name="GL_DITHER"/>
+ <enum name="GL_STENCIL_TEST"/>
+ <enum name="GL_DEPTH_TEST"/>
+ <enum name="GL_SCISSOR_TEST"/>
+ <enum name="GL_POLYGON_OFFSET_FILL"/>
+ <enum name="GL_SAMPLE_ALPHA_TO_COVERAGE"/>
+ <enum name="GL_SAMPLE_COVERAGE"/>
+ <enum name="GL_NO_ERROR"/>
+ <enum name="GL_INVALID_ENUM"/>
+ <enum name="GL_INVALID_VALUE"/>
+ <enum name="GL_INVALID_OPERATION"/>
+ <enum name="GL_OUT_OF_MEMORY"/>
+ <enum name="GL_INVALID_FRAMEBUFFER_OPERATION"/>
+ <enum name="GL_CONTEXT_LOST"/>
+ <enum name="GL_CW"/>
+ <enum name="GL_CCW"/>
+ <enum name="GL_LINE_WIDTH"/>
+ <enum name="GL_ALIASED_POINT_SIZE_RANGE"/>
+ <enum name="GL_ALIASED_LINE_WIDTH_RANGE"/>
+ <enum name="GL_CULL_FACE_MODE"/>
+ <enum name="GL_FRONT_FACE"/>
+ <enum name="GL_DEPTH_RANGE"/>
+ <enum name="GL_DEPTH_WRITEMASK"/>
+ <enum name="GL_DEPTH_CLEAR_VALUE"/>
+ <enum name="GL_DEPTH_FUNC"/>
+ <enum name="GL_STENCIL_CLEAR_VALUE"/>
+ <enum name="GL_STENCIL_FUNC"/>
+ <enum name="GL_STENCIL_FAIL"/>
+ <enum name="GL_STENCIL_PASS_DEPTH_FAIL"/>
+ <enum name="GL_STENCIL_PASS_DEPTH_PASS"/>
+ <enum name="GL_STENCIL_REF"/>
+ <enum name="GL_STENCIL_VALUE_MASK"/>
+ <enum name="GL_STENCIL_WRITEMASK"/>
+ <enum name="GL_STENCIL_BACK_FUNC"/>
+ <enum name="GL_STENCIL_BACK_FAIL"/>
+ <enum name="GL_STENCIL_BACK_PASS_DEPTH_FAIL"/>
+ <enum name="GL_STENCIL_BACK_PASS_DEPTH_PASS"/>
+ <enum name="GL_STENCIL_BACK_REF"/>
+ <enum name="GL_STENCIL_BACK_VALUE_MASK"/>
+ <enum name="GL_STENCIL_BACK_WRITEMASK"/>
+ <enum name="GL_VIEWPORT"/>
+ <enum name="GL_SCISSOR_BOX"/>
+ <enum name="GL_COLOR_CLEAR_VALUE"/>
+ <enum name="GL_COLOR_WRITEMASK"/>
+ <enum name="GL_UNPACK_ALIGNMENT"/>
+ <enum name="GL_PACK_ALIGNMENT"/>
+ <enum name="GL_MAX_TEXTURE_SIZE"/>
+ <enum name="GL_MAX_VIEWPORT_DIMS"/>
+ <enum name="GL_SUBPIXEL_BITS"/>
+ <enum name="GL_RED_BITS"/>
+ <enum name="GL_GREEN_BITS"/>
+ <enum name="GL_BLUE_BITS"/>
+ <enum name="GL_ALPHA_BITS"/>
+ <enum name="GL_DEPTH_BITS"/>
+ <enum name="GL_STENCIL_BITS"/>
+ <enum name="GL_POLYGON_OFFSET_UNITS"/>
+ <enum name="GL_POLYGON_OFFSET_FACTOR"/>
+ <enum name="GL_TEXTURE_BINDING_2D"/>
+ <enum name="GL_SAMPLE_BUFFERS"/>
+ <enum name="GL_SAMPLES"/>
+ <enum name="GL_SAMPLE_COVERAGE_VALUE"/>
+ <enum name="GL_SAMPLE_COVERAGE_INVERT"/>
+ <enum name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"/>
+ <enum name="GL_COMPRESSED_TEXTURE_FORMATS"/>
+ <enum name="GL_DONT_CARE"/>
+ <enum name="GL_FASTEST"/>
+ <enum name="GL_NICEST"/>
+ <enum name="GL_GENERATE_MIPMAP_HINT"/>
+ <enum name="GL_BYTE"/>
+ <enum name="GL_UNSIGNED_BYTE"/>
+ <enum name="GL_SHORT"/>
+ <enum name="GL_UNSIGNED_SHORT"/>
+ <enum name="GL_INT"/>
+ <enum name="GL_UNSIGNED_INT"/>
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_RED"/>
+ <enum name="GL_RG"/>
+ <enum name="GL_RGB"/>
+ <enum name="GL_RGBA"/>
+ <enum name="GL_UNSIGNED_SHORT_4_4_4_4"/>
+ <enum name="GL_UNSIGNED_SHORT_5_5_5_1"/>
+ <enum name="GL_UNSIGNED_SHORT_5_6_5"/>
+ <enum name="GL_MAX_VERTEX_ATTRIBS"/>
+ <enum name="GL_MAX_VERTEX_UNIFORM_VECTORS"/>
+ <enum name="GL_MAX_VARYING_VECTORS"/>
+ <enum name="GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS"/>
+ <enum name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS"/>
+ <enum name="GL_MAX_TEXTURE_IMAGE_UNITS"/>
+ <enum name="GL_MAX_FRAGMENT_UNIFORM_VECTORS"/>
+ <enum name="GL_LINK_STATUS"/>
+ <enum name="GL_SHADING_LANGUAGE_VERSION"/>
+ <enum name="GL_CURRENT_PROGRAM"/>
+ <enum name="GL_NEVER"/>
+ <enum name="GL_LESS"/>
+ <enum name="GL_EQUAL"/>
+ <enum name="GL_LEQUAL"/>
+ <enum name="GL_GREATER"/>
+ <enum name="GL_NOTEQUAL"/>
+ <enum name="GL_GEQUAL"/>
+ <enum name="GL_ALWAYS"/>
+ <enum name="GL_KEEP"/>
+ <enum name="GL_REPLACE"/>
+ <enum name="GL_INCR"/>
+ <enum name="GL_DECR"/>
+ <enum name="GL_INVERT"/>
+ <enum name="GL_INCR_WRAP"/>
+ <enum name="GL_DECR_WRAP"/>
+ <enum name="GL_VENDOR"/>
+ <enum name="GL_RENDERER"/>
+ <enum name="GL_VERSION"/>
+ <enum name="GL_EXTENSIONS"/>
+ <enum name="GL_NEAREST"/>
+ <enum name="GL_LINEAR"/>
+ <enum name="GL_NEAREST_MIPMAP_NEAREST"/>
+ <enum name="GL_LINEAR_MIPMAP_NEAREST"/>
+ <enum name="GL_NEAREST_MIPMAP_LINEAR"/>
+ <enum name="GL_LINEAR_MIPMAP_LINEAR"/>
+ <enum name="GL_TEXTURE_MAG_FILTER"/>
+ <enum name="GL_TEXTURE_MIN_FILTER"/>
+ <enum name="GL_TEXTURE_WRAP_S"/>
+ <enum name="GL_TEXTURE_WRAP_T"/>
+ <enum name="GL_TEXTURE_IMMUTABLE_FORMAT"/>
+ <enum name="GL_TEXTURE"/>
+ <enum name="GL_TEXTURE0"/>
+ <enum name="GL_TEXTURE1"/>
+ <enum name="GL_TEXTURE2"/>
+ <enum name="GL_TEXTURE3"/>
+ <enum name="GL_TEXTURE4"/>
+ <enum name="GL_TEXTURE5"/>
+ <enum name="GL_TEXTURE6"/>
+ <enum name="GL_TEXTURE7"/>
+ <enum name="GL_TEXTURE8"/>
+ <enum name="GL_TEXTURE9"/>
+ <enum name="GL_TEXTURE10"/>
+ <enum name="GL_TEXTURE11"/>
+ <enum name="GL_TEXTURE12"/>
+ <enum name="GL_TEXTURE13"/>
+ <enum name="GL_TEXTURE14"/>
+ <enum name="GL_TEXTURE15"/>
+ <enum name="GL_TEXTURE16"/>
+ <enum name="GL_TEXTURE17"/>
+ <enum name="GL_TEXTURE18"/>
+ <enum name="GL_TEXTURE19"/>
+ <enum name="GL_TEXTURE20"/>
+ <enum name="GL_TEXTURE21"/>
+ <enum name="GL_TEXTURE22"/>
+ <enum name="GL_TEXTURE23"/>
+ <enum name="GL_TEXTURE24"/>
+ <enum name="GL_TEXTURE25"/>
+ <enum name="GL_TEXTURE26"/>
+ <enum name="GL_TEXTURE27"/>
+ <enum name="GL_TEXTURE28"/>
+ <enum name="GL_TEXTURE29"/>
+ <enum name="GL_TEXTURE30"/>
+ <enum name="GL_TEXTURE31"/>
+ <enum name="GL_ACTIVE_TEXTURE"/>
+ <enum name="GL_REPEAT"/>
+ <enum name="GL_CLAMP_TO_EDGE"/>
+ <enum name="GL_MIRRORED_REPEAT"/>
+ <enum name="GL_SAMPLER_2D"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_ENABLED"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_SIZE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_STRIDE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_TYPE"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_POINTER"/>
+ <enum name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"/>
+ <enum name="GL_IMPLEMENTATION_COLOR_READ_TYPE"/>
+ <enum name="GL_IMPLEMENTATION_COLOR_READ_FORMAT"/>
+ <enum name="GL_NUM_PROGRAM_BINARY_FORMATS"/>
+ <enum name="GL_PROGRAM_BINARY_FORMATS"/>
+ <enum name="GL_LOW_FLOAT"/>
+ <enum name="GL_MEDIUM_FLOAT"/>
+ <enum name="GL_HIGH_FLOAT"/>
+ <enum name="GL_LOW_INT"/>
+ <enum name="GL_MEDIUM_INT"/>
+ <enum name="GL_HIGH_INT"/>
+ <enum name="GL_FRAMEBUFFER"/>
+ <enum name="GL_RENDERBUFFER"/>
+ <enum name="GL_R8"/>
+ <enum name="GL_RG8"/>
+ <enum name="GL_RGB8"/>
+ <enum name="GL_RGBA8"/>
+ <enum name="GL_RGBA4"/>
+ <enum name="GL_RGB5_A1"/>
+ <enum name="GL_RGB565"/>
+ <enum name="GL_DEPTH_COMPONENT16"/>
+ <enum name="GL_STENCIL_INDEX8"/>
+ <enum name="GL_RENDERBUFFER_WIDTH"/>
+ <enum name="GL_RENDERBUFFER_HEIGHT"/>
+ <enum name="GL_RENDERBUFFER_INTERNAL_FORMAT"/>
+ <enum name="GL_RENDERBUFFER_RED_SIZE"/>
+ <enum name="GL_RENDERBUFFER_GREEN_SIZE"/>
+ <enum name="GL_RENDERBUFFER_BLUE_SIZE"/>
+ <enum name="GL_RENDERBUFFER_ALPHA_SIZE"/>
+ <enum name="GL_RENDERBUFFER_DEPTH_SIZE"/>
+ <enum name="GL_RENDERBUFFER_STENCIL_SIZE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"/>
+ <enum name="GL_COLOR_ATTACHMENT0"/>
+ <enum name="GL_DEPTH_ATTACHMENT"/>
+ <enum name="GL_STENCIL_ATTACHMENT"/>
+ <enum name="GL_NONE"/>
+ <enum name="GL_FRAMEBUFFER_COMPLETE"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS"/>
+ <enum name="GL_FRAMEBUFFER_UNSUPPORTED"/>
+ <enum name="GL_FRAMEBUFFER_UNDEFINED"/>
+ <enum name="GL_FRAMEBUFFER_BINDING"/>
+ <enum name="GL_RENDERBUFFER_BINDING"/>
+ <enum name="GL_MAX_RENDERBUFFER_SIZE"/>
+ <enum name="GL_NO_ERROR"/>
+ <enum name="GL_GUILTY_CONTEXT_RESET"/>
+ <enum name="GL_INNOCENT_CONTEXT_RESET"/>
+ <enum name="GL_UNKNOWN_CONTEXT_RESET"/>
+ <enum name="GL_CONTEXT_ROBUST_ACCESS"/>
+ <enum name="GL_RESET_NOTIFICATION_STRATEGY"/>
+ <enum name="GL_LOSE_CONTEXT_ON_RESET"/>
+ <command name="glActiveTexture"/>
+ <command name="glBindBuffer"/>
+ <command name="glBindFramebuffer"/>
+ <command name="glBindRenderbuffer"/>
+ <command name="glBindTexture"/>
+ <command name="glBlendColor"/>
+ <command name="glBlendEquation"/>
+ <command name="glBlendEquationSeparate"/>
+ <command name="glBlendFunc"/>
+ <command name="glBlendFuncSeparate"/>
+ <command name="glBufferData"/>
+ <command name="glBufferSubData"/>
+ <command name="glCheckFramebufferStatus"/>
+ <command name="glClear"/>
+ <command name="glClearColor"/>
+ <command name="glClearDepthf"/>
+ <command name="glClearStencil"/>
+ <command name="glColorMask"/>
+ <command name="glCompressedTexSubImage2D"/>
+ <command name="glCreateProgram"/>
+ <command name="glCullFace"/>
+ <command name="glDepthFunc"/>
+ <command name="glDepthMask"/>
+ <command name="glDepthRangef"/>
+ <command name="glDisable"/>
+ <command name="glDisableVertexAttribArray"/>
+ <command name="glDrawArrays"/>
+ <command name="glDrawRangeElements"/>
+ <command name="glEnable"/>
+ <command name="glEnableVertexAttribArray"/>
+ <command name="glFinish"/>
+ <command name="glFlush"/>
+ <command name="glFramebufferRenderbuffer"/>
+ <command name="glFramebufferTexture2D"/>
+ <command name="glFrontFace"/>
+ <command name="glGenBuffers"/>
+ <command name="glGenerateMipmap"/>
+ <command name="glGenFramebuffers"/>
+ <command name="glGenRenderbuffers"/>
+ <command name="glGenTextures"/>
+ <command name="glGetAttribLocation"/>
+ <command name="glGetBooleanv"/>
+ <command name="glGetBufferParameteriv"/>
+ <command name="glGetError"/>
+ <command name="glGetFloatv"/>
+ <command name="glGetFramebufferAttachmentParameteriv"/>
+ <command name="glGetGraphicsResetStatus"/>
+ <command name="glGetIntegerv"/>
+ <command name="glGetProgramiv"/>
+ <command name="glGetRenderbufferParameteriv"/>
+ <command name="glGetString"/>
+ <command name="glGetTexParameterfv"/>
+ <command name="glGetTexParameteriv"/>
+ <command name="glGetnUniformfv"/>
+ <command name="glGetnUniformiv"/>
+ <command name="glGetUniformLocation"/>
+ <command name="glGetVertexAttribfv"/>
+ <command name="glGetVertexAttribiv"/>
+ <command name="glGetVertexAttribPointerv"/>
+ <command name="glHint"/>
+ <command name="glIsEnabled"/>
+ <command name="glLineWidth"/>
+ <command name="glPixelStorei"/>
+ <command name="glPolygonOffset"/>
+ <command name="glProgramBinary"/>
+ <command name="glReadnPixels"/>
+ <command name="glRenderbufferStorage"/>
+ <command name="glSampleCoverage"/>
+ <command name="glScissor"/>
+ <command name="glStencilFunc"/>
+ <command name="glStencilFuncSeparate"/>
+ <command name="glStencilMask"/>
+ <command name="glStencilMaskSeparate"/>
+ <command name="glStencilOp"/>
+ <command name="glStencilOpSeparate"/>
+ <command name="glTexStorage2D"/>
+ <command name="glTexParameterf"/>
+ <command name="glTexParameterfv"/>
+ <command name="glTexParameteri"/>
+ <command name="glTexParameteriv"/>
+ <command name="glTexSubImage2D"/>
+ <command name="glUniform1f"/>
+ <command name="glUniform1fv"/>
+ <command name="glUniform1i"/>
+ <command name="glUniform1iv"/>
+ <command name="glUniform2f"/>
+ <command name="glUniform2fv"/>
+ <command name="glUniform2i"/>
+ <command name="glUniform2iv"/>
+ <command name="glUniform3f"/>
+ <command name="glUniform3fv"/>
+ <command name="glUniform3i"/>
+ <command name="glUniform3iv"/>
+ <command name="glUniform4f"/>
+ <command name="glUniform4fv"/>
+ <command name="glUniform4i"/>
+ <command name="glUniform4iv"/>
+ <command name="glUniformMatrix2fv"/>
+ <command name="glUniformMatrix3fv"/>
+ <command name="glUniformMatrix4fv"/>
+ <command name="glUseProgram"/>
+ <command name="glVertexAttrib1f"/>
+ <command name="glVertexAttrib1fv"/>
+ <command name="glVertexAttrib2f"/>
+ <command name="glVertexAttrib2fv"/>
+ <command name="glVertexAttrib3f"/>
+ <command name="glVertexAttrib3fv"/>
+ <command name="glVertexAttrib4f"/>
+ <command name="glVertexAttrib4fv"/>
+ <command name="glVertexAttribPointer"/>
+ <command name="glViewport"/>
+ </require>
+ </feature>
<!-- SECTION: OpenGL / OpenGL ES extension interface definitions -->
<extensions>
@@ -35922,7 +38753,37 @@
<command name="glBlendEquationSeparateIndexedAMD"/>
</require>
</extension>
+ <extension name="GL_AMD_framebuffer_sample_positions" supported="gl">
+ <require>
+ <enum name="GL_SUBSAMPLE_DISTANCE_AMD"/>
+ <enum name="GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD"/>
+ <enum name="GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD"/>
+ <enum name="GL_ALL_PIXELS_AMD"/>
+ <command name="glFramebufferSamplePositionsfvAMD"/>
+ <command name="glNamedFramebufferSamplePositionsfvAMD"/>
+ <command name="glGetFramebufferParameterfvAMD"/>
+ <command name="glGetNamedFramebufferParameterfvAMD"/>
+ </require>
+ </extension>
<extension name="GL_AMD_gcn_shader" supported="gl"/>
+ <extension name="GL_AMD_gpu_shader_half_float" supported="gl">
+ <require>
+ <enum name="GL_FLOAT16_NV"/>
+ <enum name="GL_FLOAT16_VEC2_NV"/>
+ <enum name="GL_FLOAT16_VEC3_NV"/>
+ <enum name="GL_FLOAT16_VEC4_NV"/>
+ <enum name="GL_FLOAT16_MAT2_AMD"/>
+ <enum name="GL_FLOAT16_MAT3_AMD"/>
+ <enum name="GL_FLOAT16_MAT4_AMD"/>
+ <enum name="GL_FLOAT16_MAT2x3_AMD"/>
+ <enum name="GL_FLOAT16_MAT2x4_AMD"/>
+ <enum name="GL_FLOAT16_MAT3x2_AMD"/>
+ <enum name="GL_FLOAT16_MAT3x4_AMD"/>
+ <enum name="GL_FLOAT16_MAT4x2_AMD"/>
+ <enum name="GL_FLOAT16_MAT4x3_AMD"/>
+ </require>
+ </extension>
+ <extension name="GL_AMD_gpu_shader_int16" supported="gl"/>
<extension name="GL_AMD_gpu_shader_int64" supported="gl">
<require>
<enum name="GL_INT64_NV"/>
@@ -36034,7 +38895,7 @@
<command name="glQueryObjectParameteruiAMD"/>
</require>
</extension>
- <extension name="GL_AMD_performance_monitor" supported="gl|gles2">
+ <extension name="GL_AMD_performance_monitor" supported="gl|glcore|gles2">
<require>
<enum name="GL_COUNTER_TYPE_AMD"/>
<enum name="GL_COUNTER_RANGE_AMD"/>
@@ -36085,8 +38946,12 @@
</require>
</extension>
<extension name="GL_AMD_shader_atomic_counter_ops" supported="gl"/>
+ <extension name="GL_AMD_shader_ballot" supported="gl"/>
+ <extension name="GL_AMD_shader_gpu_shader_half_float_fetch" supported="gl"/>
+ <extension name="GL_AMD_shader_image_load_store_lod" supported="gl"/>
<extension name="GL_AMD_shader_stencil_export" supported="gl"/>
<extension name="GL_AMD_shader_trinary_minmax" supported="gl"/>
+ <extension name="GL_AMD_shader_explicit_vertex_parameter" supported="gl"/>
<extension name="GL_AMD_sparse_texture" supported="gl">
<require>
<enum name="GL_VIRTUAL_PAGE_SIZE_X_AMD"/>
@@ -36111,6 +38976,7 @@
<command name="glStencilOpValueAMD"/>
</require>
</extension>
+ <extension name="GL_AMD_texture_gather_bias_lod" supported="gl"/>
<extension name="GL_AMD_texture_texture4" supported="gl"/>
<extension name="GL_AMD_transform_feedback3_lines_triangles" supported="gl"/>
<extension name="GL_AMD_transform_feedback4" supported="gl">
@@ -36335,7 +39201,7 @@
<command name="glGetObjectParameterivAPPLE"/>
</require>
</extension>
- <extension name="GL_APPLE_rgb_422" supported="gl|gles2">
+ <extension name="GL_APPLE_rgb_422" supported="gl|glcore|gles2">
<require>
<enum name="GL_RGB_422_APPLE"/>
<enum name="GL_UNSIGNED_SHORT_8_8_APPLE"/>
@@ -36504,7 +39370,7 @@
<command name="glMemoryBarrierByRegion"/>
</require>
</extension>
- <extension name="GL_ARB_ES3_2_compatibility" supported="gl">
+ <extension name="GL_ARB_ES3_2_compatibility" supported="gl|glcore">
<require>
<enum name="GL_PRIMITIVE_BOUNDING_BOX_ARB"/>
<enum name="GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB"/>
@@ -36930,7 +39796,7 @@
<command name="glDrawElementsIndirect"/>
</require>
</extension>
- <extension name="GL_ARB_draw_instanced" supported="gl">
+ <extension name="GL_ARB_draw_instanced" supported="gl|glcore">
<require>
<command name="glDrawArraysInstancedARB"/>
<command name="glDrawElementsInstancedARB"/>
@@ -37063,7 +39929,7 @@
<enum name="GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB"/>
</require>
</extension>
- <extension name="GL_ARB_fragment_shader_interlock" supported="gl"/>
+ <extension name="GL_ARB_fragment_shader_interlock" supported="gl|glcore"/>
<extension name="GL_ARB_framebuffer_no_attachments" supported="gl|glcore">
<require>
<enum name="GL_FRAMEBUFFER_DEFAULT_WIDTH"/>
@@ -37183,7 +40049,7 @@
<enum name="GL_FRAMEBUFFER_SRGB"/>
</require>
</extension>
- <extension name="GL_ARB_geometry_shader4" supported="gl">
+ <extension name="GL_ARB_geometry_shader4" supported="gl|glcore">
<require>
<enum name="GL_LINES_ADJACENCY_ARB"/>
<enum name="GL_LINE_STRIP_ADJACENCY_ARB"/>
@@ -37228,6 +40094,13 @@
<command name="glGetCompressedTextureSubImage"/>
</require>
</extension>
+ <extension name="GL_ARB_gl_spirv" supported="gl|glcore">
+ <require>
+ <enum name="GL_SHADER_BINARY_FORMAT_SPIR_V_ARB"/>
+ <enum name="GL_SPIR_V_BINARY_ARB"/>
+ <command name="glSpecializeShaderARB"/>
+ </require>
+ </extension>
<extension name="GL_ARB_gpu_shader5" supported="gl|glcore">
<require>
<enum name="GL_GEOMETRY_SHADER_INVOCATIONS"/>
@@ -37273,7 +40146,7 @@
<command name="glGetUniformdv"/>
</require>
</extension>
- <extension name="GL_ARB_gpu_shader_int64" supported="gl">
+ <extension name="GL_ARB_gpu_shader_int64" supported="gl|glcore">
<require>
<enum name="GL_INT64_ARB"/>
<enum name="GL_UNSIGNED_INT64_ARB"/>
@@ -37335,17 +40208,17 @@
</extension>
<extension name="GL_ARB_imaging" supported="gl|glcore" comment="Now treating ARB_imaging as an extension, not a GL API version">
<require>
+ <enum name="GL_BLEND_COLOR"/>
+ <enum name="GL_BLEND_EQUATION"/>
<enum name="GL_CONSTANT_COLOR"/>
<enum name="GL_ONE_MINUS_CONSTANT_COLOR"/>
<enum name="GL_CONSTANT_ALPHA"/>
<enum name="GL_ONE_MINUS_CONSTANT_ALPHA"/>
- <enum name="GL_BLEND_COLOR"/>
<enum name="GL_FUNC_ADD"/>
+ <enum name="GL_FUNC_REVERSE_SUBTRACT"/>
+ <enum name="GL_FUNC_SUBTRACT"/>
<enum name="GL_MIN"/>
<enum name="GL_MAX"/>
- <enum name="GL_BLEND_EQUATION"/>
- <enum name="GL_FUNC_SUBTRACT"/>
- <enum name="GL_FUNC_REVERSE_SUBTRACT"/>
<command name="glBlendColor"/>
<command name="glBlendEquation"/>
</require>
@@ -37456,7 +40329,7 @@
<command name="glMultiDrawElementsIndirectCountARB"/>
</require>
</extension>
- <extension name="GL_ARB_instanced_arrays" supported="gl">
+ <extension name="GL_ARB_instanced_arrays" supported="gl|glcore">
<require>
<enum name="GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB"/>
<command name="glVertexAttribDivisorARB"/>
@@ -37759,7 +40632,7 @@
<enum name="GL_ANY_SAMPLES_PASSED"/>
</require>
</extension>
- <extension name="GL_ARB_parallel_shader_compile" supported="gl">
+ <extension name="GL_ARB_parallel_shader_compile" supported="gl|glcore">
<require>
<enum name="GL_MAX_SHADER_COMPILER_THREADS_ARB"/>
<enum name="GL_COMPLETION_STATUS_ARB"/>
@@ -37781,7 +40654,7 @@
<enum name="GL_CLIPPING_OUTPUT_PRIMITIVES_ARB"/>
</require>
</extension>
- <extension name="GL_ARB_pixel_buffer_object" supported="gl">
+ <extension name="GL_ARB_pixel_buffer_object" supported="gl|glcore">
<require>
<enum name="GL_PIXEL_PACK_BUFFER_ARB"/>
<enum name="GL_PIXEL_UNPACK_BUFFER_ARB"/>
@@ -37805,7 +40678,13 @@
<enum name="GL_COORD_REPLACE_ARB"/>
</require>
</extension>
- <extension name="GL_ARB_post_depth_coverage" supported="gl"/>
+ <extension name="GL_ARB_polygon_offset_clamp" supported="gl|glcore">
+ <require>
+ <enum name="GL_POLYGON_OFFSET_CLAMP"/>
+ <command name="glPolygonOffsetClamp"/>
+ </require>
+ </extension>
+ <extension name="GL_ARB_post_depth_coverage" supported="gl|glcore"/>
<extension name="GL_ARB_program_interface_query" supported="gl|glcore">
<require>
<enum name="GL_UNIFORM"/>
@@ -37919,7 +40798,7 @@
</require>
</extension>
<extension name="GL_ARB_robustness_isolation" supported="gl|glcore"/>
- <extension name="GL_ARB_sample_locations" supported="gl">
+ <extension name="GL_ARB_sample_locations" supported="gl|glcore">
<require>
<enum name="GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB"/>
<enum name="GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB"/>
@@ -37989,6 +40868,7 @@
<command name="glGenProgramPipelines"/>
<command name="glIsProgramPipeline"/>
<command name="glGetProgramPipelineiv"/>
+ <command name="glProgramParameteri"/>
<command name="glProgramUniform1i"/>
<command name="glProgramUniform1iv"/>
<command name="glProgramUniform1f"/>
@@ -38043,7 +40923,7 @@
<command name="glGetProgramPipelineInfoLog"/>
</require>
</extension>
- <extension name="GL_ARB_shader_atomic_counter_ops" supported="gl"/>
+ <extension name="GL_ARB_shader_atomic_counter_ops" supported="gl|glcore"/>
<extension name="GL_ARB_shader_atomic_counters" supported="gl|glcore">
<require>
<enum name="GL_ATOMIC_COUNTER_BUFFER"/>
@@ -38078,9 +40958,9 @@
<command name="glGetActiveAtomicCounterBufferiv"/>
</require>
</extension>
- <extension name="GL_ARB_shader_ballot" supported="gl"/>
+ <extension name="GL_ARB_shader_ballot" supported="gl|glcore"/>
<extension name="GL_ARB_shader_bit_encoding" supported="gl|glcore"/>
- <extension name="GL_ARB_shader_clock" supported="gl"/>
+ <extension name="GL_ARB_shader_clock" supported="gl|glcore"/>
<extension name="GL_ARB_shader_draw_parameters" supported="gl|glcore"/>
<extension name="GL_ARB_shader_group_vote" supported="gl|glcore"/>
<extension name="GL_ARB_shader_image_load_store" supported="gl|glcore">
@@ -38280,7 +41160,7 @@
</extension>
<extension name="GL_ARB_shader_texture_image_samples" supported="gl|glcore"/>
<extension name="GL_ARB_shader_texture_lod" supported="gl"/>
- <extension name="GL_ARB_shader_viewport_layer_array" supported="gl"/>
+ <extension name="GL_ARB_shader_viewport_layer_array" supported="gl|glcore"/>
<extension name="GL_ARB_shading_language_100" supported="gl">
<require>
<enum name="GL_SHADING_LANGUAGE_VERSION_ARB"/>
@@ -38342,8 +41222,14 @@
<command name="glTexPageCommitmentARB"/>
</require>
</extension>
- <extension name="GL_ARB_sparse_texture2" supported="gl"/>
- <extension name="GL_ARB_sparse_texture_clamp" supported="gl"/>
+ <extension name="GL_ARB_sparse_texture2" supported="gl|glcore"/>
+ <extension name="GL_ARB_sparse_texture_clamp" supported="gl|glcore"/>
+ <extension name="GL_ARB_spirv_extensions" supported="gl|glcore">
+ <require>
+ <enum name="GL_SPIR_V_EXTENSIONS"/>
+ <enum name="GL_NUM_SPIR_V_EXTENSIONS"/>
+ </require>
+ </extension>
<extension name="GL_ARB_stencil_texturing" supported="gl|glcore">
<require>
<enum name="GL_DEPTH_STENCIL_TEXTURE_MODE"/>
@@ -38423,12 +41309,12 @@
<command name="glTextureBarrier"/>
</require>
</extension>
- <extension name="GL_ARB_texture_border_clamp" supported="gl">
+ <extension name="GL_ARB_texture_border_clamp" supported="gl|glcore">
<require>
<enum name="GL_CLAMP_TO_BORDER_ARB"/>
</require>
</extension>
- <extension name="GL_ARB_texture_buffer_object" supported="gl">
+ <extension name="GL_ARB_texture_buffer_object" supported="gl|glcore">
<require>
<enum name="GL_TEXTURE_BUFFER_ARB"/>
<enum name="GL_MAX_TEXTURE_BUFFER_SIZE_ARB"/>
@@ -38552,7 +41438,13 @@
<enum name="GL_DOT3_RGBA_ARB"/>
</require>
</extension>
- <extension name="GL_ARB_texture_filter_minmax" supported="gl">
+ <extension name="GL_ARB_texture_filter_anisotropic" supported="gl|glcore">
+ <require>
+ <enum name="GL_TEXTURE_MAX_ANISOTROPY"/>
+ <enum name="GL_MAX_TEXTURE_MAX_ANISOTROPY"/>
+ </require>
+ </extension>
+ <extension name="GL_ARB_texture_filter_minmax" supported="gl|glcore">
<require>
<enum name="GL_TEXTURE_REDUCTION_MODE_ARB"/>
<enum name="GL_WEIGHTED_AVERAGE_ARB"/>
@@ -38594,7 +41486,7 @@
<enum name="GL_MIRROR_CLAMP_TO_EDGE"/>
</require>
</extension>
- <extension name="GL_ARB_texture_mirrored_repeat" supported="gl">
+ <extension name="GL_ARB_texture_mirrored_repeat" supported="gl|glcore">
<require>
<enum name="GL_MIRRORED_REPEAT_ARB"/>
</require>
@@ -38628,7 +41520,7 @@
<command name="glSampleMaski"/>
</require>
</extension>
- <extension name="GL_ARB_texture_non_power_of_two" supported="gl"/>
+ <extension name="GL_ARB_texture_non_power_of_two" supported="gl|glcore"/>
<extension name="GL_ARB_texture_query_levels" supported="gl|glcore"/>
<extension name="GL_ARB_texture_query_lod" supported="gl|glcore"/>
<extension name="GL_ARB_texture_rectangle" supported="gl">
@@ -39669,6 +42561,17 @@
<enum name="GL_422_REV_AVERAGE_EXT"/>
</require>
</extension>
+ <extension name="GL_EXT_EGL_image_array" supported="gles2">
+ </extension>
+ <extension name="GL_EXT_EGL_image_storage" supported="gl|glcore|gles2">
+ <require>
+ <type name="GLeglImageOES"/>
+ <command name="glEGLImageTargetTexStorageEXT"/>
+ </require>
+ <require comment="Supported only if GL_EXT_direct_state_access, ARB_direct_state_access, or OpenGL 4.5 are supported">
+ <command name="glEGLImageTargetTextureStorageEXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_YUV_target" supported="gles2">
<require>
<enum name="GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT"/>
@@ -39782,6 +42685,38 @@
<!-- <command name="glNamedBufferStorageEXT"/> -->
</require>
</extension>
+ <extension name="GL_EXT_clear_texture" supported="gles2">
+ <require>
+ <command name="glClearTexImageEXT"/>
+ <command name="glClearTexSubImageEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_clip_control" supported="gles2">
+ <require comment="Port of GL_ARB_clip_control">
+ <command name="glClipControlEXT"/>
+ <enum name="GL_LOWER_LEFT_EXT"/>
+ <enum name="GL_UPPER_LEFT_EXT"/>
+ <enum name="GL_NEGATIVE_ONE_TO_ONE_EXT"/>
+ <enum name="GL_ZERO_TO_ONE_EXT"/>
+ <enum name="GL_CLIP_ORIGIN_EXT"/>
+ <enum name="GL_CLIP_DEPTH_MODE_EXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_clip_cull_distance" supported="gles2">
+ <require>
+ <enum name="GL_MAX_CLIP_DISTANCES_EXT"/>
+ <enum name="GL_MAX_CULL_DISTANCES_EXT"/>
+ <enum name="GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT"/>
+ <enum name="GL_CLIP_DISTANCE0_EXT"/>
+ <enum name="GL_CLIP_DISTANCE1_EXT"/>
+ <enum name="GL_CLIP_DISTANCE2_EXT"/>
+ <enum name="GL_CLIP_DISTANCE3_EXT"/>
+ <enum name="GL_CLIP_DISTANCE4_EXT"/>
+ <enum name="GL_CLIP_DISTANCE5_EXT"/>
+ <enum name="GL_CLIP_DISTANCE6_EXT"/>
+ <enum name="GL_CLIP_DISTANCE7_EXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_clip_volume_hint" supported="gl">
<require>
<enum name="GL_CLIP_VOLUME_CLIPPING_HINT_EXT"/>
@@ -39820,6 +42755,7 @@
<command name="glUnlockArraysEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_conservative_depth" supported="gles2"/>
<extension name="GL_EXT_convolution" supported="gl">
<require>
<enum name="GL_CONVOLUTION_1D_EXT"/>
@@ -39920,7 +42856,7 @@
<command name="glCullParameterfvEXT"/>
</require>
</extension>
- <extension name="GL_EXT_debug_label" supported="gl|gles2">
+ <extension name="GL_EXT_debug_label" supported="gl|glcore|gles2">
<require>
<enum name="GL_PROGRAM_PIPELINE_OBJECT_EXT"/>
<enum name="GL_PROGRAM_OBJECT_EXT"/>
@@ -39936,7 +42872,7 @@
<enum name="GL_TRANSFORM_FEEDBACK"/>
</require>
</extension>
- <extension name="GL_EXT_debug_marker" supported="gl|gles2">
+ <extension name="GL_EXT_debug_marker" supported="gl|glcore|gles1|gles2">
<require>
<command name="glInsertEventMarkerEXT"/>
<command name="glPushGroupMarkerEXT"/>
@@ -39950,7 +42886,7 @@
<command name="glDepthBoundsEXT"/>
</require>
</extension>
- <extension name="GL_EXT_direct_state_access" supported="gl" comment="DSA extension doesn't identify which interfaces are core profile and keeps getting expanded. This is in sync with revision 34, 2010/09/07">
+ <extension name="GL_EXT_direct_state_access" supported="gl|glcore" comment="DSA extension doesn't identify which interfaces are core profile and keeps getting expanded. This is in sync with revision 34, 2010/09/07">
<require>
<enum name="GL_PROGRAM_MATRIX_EXT"/>
<enum name="GL_TRANSPOSE_PROGRAM_MATRIX_EXT"/>
@@ -40431,7 +43367,7 @@
<command name="glMultiDrawElementsBaseVertexEXT" comment="Supported only if GL_EXT_multi_draw_arrays is supported"/>
</require>
</extension>
- <extension name="GL_EXT_draw_instanced" supported="gl|gles2">
+ <extension name="GL_EXT_draw_instanced" supported="gl|glcore|gles2">
<require>
<command name="glDrawArraysInstancedEXT"/>
<command name="glDrawElementsInstancedEXT"/>
@@ -40444,6 +43380,18 @@
<command name="glDrawRangeElementsEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_draw_transform_feedback" supported="gles2">
+ <require>
+ <command name="glDrawTransformFeedbackEXT"/>
+ <command name="glDrawTransformFeedbackInstancedEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_external_buffer" supported="gl|gles2">
+ <require>
+ <command name="glBufferStorageExternalEXT"/>
+ <command name="glNamedBufferStorageExternalEXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_float_blend" supported="gles2"/>
<extension name="GL_EXT_fog_coord" supported="gl">
<require>
@@ -40771,6 +43719,67 @@
<command name="glFlushMappedBufferRangeEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_memory_object" supported="gl|gles2">
+ <require>
+ <enum name="GL_TEXTURE_TILING_EXT"/>
+ <enum name="GL_DEDICATED_MEMORY_OBJECT_EXT"/>
+ <enum name="GL_PROTECTED_MEMORY_OBJECT_EXT"/>
+ <enum name="GL_NUM_TILING_TYPES_EXT"/>
+ <enum name="GL_TILING_TYPES_EXT"/>
+ <enum name="GL_OPTIMAL_TILING_EXT"/>
+ <enum name="GL_LINEAR_TILING_EXT"/>
+ <enum name="GL_NUM_DEVICE_UUIDS_EXT"/>
+ <enum name="GL_DEVICE_UUID_EXT"/>
+ <enum name="GL_DRIVER_UUID_EXT"/>
+ <enum name="GL_UUID_SIZE_EXT"/>
+ <command name="glGetUnsignedBytevEXT"/>
+ <command name="glGetUnsignedBytei_vEXT"/>
+ <command name="glDeleteMemoryObjectsEXT"/>
+ <command name="glIsMemoryObjectEXT"/>
+ <command name="glCreateMemoryObjectsEXT"/>
+ <command name="glMemoryObjectParameterivEXT"/>
+ <command name="glGetMemoryObjectParameterivEXT"/>
+ <command name="glTexStorageMem2DEXT"/>
+ <command name="glTexStorageMem2DMultisampleEXT"/>
+ <command name="glTexStorageMem3DEXT"/>
+ <command name="glTexStorageMem3DMultisampleEXT"/>
+ <command name="glBufferStorageMemEXT"/>
+ </require>
+ <require comment="Supported only if GL_EXT_direct_state_access is supported">
+ <command name="glTextureStorageMem2DEXT"/>
+ <command name="glTextureStorageMem2DMultisampleEXT"/>
+ <command name="glTextureStorageMem3DEXT"/>
+ <command name="glTextureStorageMem3DMultisampleEXT"/>
+ <command name="glNamedBufferStorageMemEXT"/>
+ </require>
+ <require api="gl">
+ <command name="glTexStorageMem1DEXT"/>
+ </require>
+ <require api="gl" comment="Supported only if GL_EXT_direct_state_access is supported">
+ <command name="glTextureStorageMem1DEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_memory_object_fd" supported="gl|gles2">
+ <require>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_FD_EXT"/>
+ <command name="glImportMemoryFdEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_memory_object_win32" supported="gl|gles2">
+ <require>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_WIN32_EXT"/>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT"/>
+ <enum name="GL_DEVICE_LUID_EXT"/>
+ <enum name="GL_DEVICE_NODE_MASK_EXT"/>
+ <enum name="GL_LUID_SIZE_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D12_RESOURCE_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D11_IMAGE_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT"/>
+ <command name="glImportMemoryWin32HandleEXT"/>
+ <command name="glImportMemoryWin32NameEXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_misc_attribute" supported="gl"/>
<extension name="GL_EXT_multi_draw_arrays" supported="gl|gles1|gles2">
<require>
@@ -40936,19 +43945,25 @@
<command name="glPolygonOffsetEXT"/>
</require>
</extension>
- <extension name="GL_EXT_polygon_offset_clamp" supported="gl">
+ <extension name="GL_EXT_polygon_offset_clamp" supported="gl|glcore|gles2">
<require>
<enum name="GL_POLYGON_OFFSET_CLAMP_EXT"/>
<command name="glPolygonOffsetClampEXT"/>
</require>
</extension>
- <extension name="GL_EXT_post_depth_coverage" supported="gl|gles2"/>
+ <extension name="GL_EXT_post_depth_coverage" supported="gl|glcore|gles2"/>
<extension name="GL_EXT_primitive_bounding_box" supported="gles2">
<require>
<enum name="GL_PRIMITIVE_BOUNDING_BOX_EXT"/>
<command name="glPrimitiveBoundingBoxEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_protected_textures" supported="gles2">
+ <require>
+ <enum name="GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT"/>
+ <enum name="GL_TEXTURE_PROTECTED_EXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_provoking_vertex" supported="gl">
<require>
<enum name="GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT"/>
@@ -40968,7 +43983,7 @@
<enum name="GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG"/>
</require>
</extension>
- <extension name="GL_EXT_raster_multisample" supported="gl|gles2">
+ <extension name="GL_EXT_raster_multisample" supported="gl|glcore|gles2">
<require>
<enum name="GL_RASTER_MULTISAMPLE_EXT"/>
<enum name="GL_RASTER_SAMPLES_EXT"/>
@@ -41019,6 +44034,51 @@
<command name="glGetnUniformivEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_semaphore" supported="gl|gles2">
+ <require>
+ <enum name="GL_NUM_DEVICE_UUIDS_EXT"/>
+ <enum name="GL_DEVICE_UUID_EXT"/>
+ <enum name="GL_DRIVER_UUID_EXT"/>
+ <enum name="GL_UUID_SIZE_EXT"/>
+ <enum name="GL_LAYOUT_GENERAL_EXT"/>
+ <enum name="GL_LAYOUT_COLOR_ATTACHMENT_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT"/>
+ <enum name="GL_LAYOUT_SHADER_READ_ONLY_EXT"/>
+ <enum name="GL_LAYOUT_TRANSFER_SRC_EXT"/>
+ <enum name="GL_LAYOUT_TRANSFER_DST_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT"/>
+ <enum name="GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT"/>
+ <command name="glGetUnsignedBytevEXT"/>
+ <command name="glGetUnsignedBytei_vEXT"/>
+ <command name="glGenSemaphoresEXT"/>
+ <command name="glDeleteSemaphoresEXT"/>
+ <command name="glIsSemaphoreEXT"/>
+ <command name="glSemaphoreParameterui64vEXT"/>
+ <command name="glGetSemaphoreParameterui64vEXT"/>
+ <command name="glWaitSemaphoreEXT"/>
+ <command name="glSignalSemaphoreEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_semaphore_fd" supported="gl|gles2">
+ <require>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_FD_EXT"/>
+ <command name="glImportSemaphoreFdEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_semaphore_win32" supported="gl|gles2">
+ <require>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_WIN32_EXT"/>
+ <enum name="GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT"/>
+ <enum name="GL_DEVICE_LUID_EXT"/>
+ <enum name="GL_DEVICE_NODE_MASK_EXT"/>
+ <enum name="GL_LUID_SIZE_EXT"/>
+ <enum name="GL_HANDLE_TYPE_D3D12_FENCE_EXT"/>
+ <enum name="GL_D3D12_FENCE_VALUE_EXT"/>
+ <command name="glImportSemaphoreWin32HandleEXT"/>
+ <command name="glImportSemaphoreWin32NameEXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_sRGB" supported="gles1|gles2">
<require>
<enum name="GL_SRGB_EXT"/>
@@ -41060,7 +44120,7 @@
<command name="glSecondaryColorPointerEXT"/>
</require>
</extension>
- <extension name="GL_EXT_separate_shader_objects" supported="gl|gles2">
+ <extension name="GL_EXT_separate_shader_objects" supported="gl|glcore|gles2">
<require api="gl" comment="The OpenGL version of this extension is completely unrelated to the OpenGL ES version">
<enum name="GL_ACTIVE_PROGRAM_EXT"/>
<command name="glUseShaderProgramEXT"/>
@@ -41130,11 +44190,18 @@
<enum name="GL_SEPARATE_SPECULAR_COLOR_EXT"/>
</require>
</extension>
- <extension name="GL_EXT_shader_framebuffer_fetch" supported="gles2">
+ <extension name="GL_EXT_shader_framebuffer_fetch" supported="gl|glcore|gles2">
<require>
<enum name="GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT"/>
</require>
</extension>
+ <extension name="GL_EXT_shader_framebuffer_fetch_non_coherent" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT"/>
+ <command name="glFramebufferFetchBarrierEXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_shader_group_vote" supported="gles2"/>
<extension name="GL_EXT_shader_image_load_formatted" supported="gl"/>
<extension name="GL_EXT_shader_image_load_store" supported="gl">
<require>
@@ -41198,8 +44265,9 @@
</require>
</extension>
<extension name="GL_EXT_shader_implicit_conversions" supported="gles2"/>
- <extension name="GL_EXT_shader_integer_mix" supported="gl|gles2"/>
+ <extension name="GL_EXT_shader_integer_mix" supported="gl|glcore|gles2"/>
<extension name="GL_EXT_shader_io_blocks" supported="gles2"/>
+ <extension name="GL_EXT_shader_non_constant_global_initializers" supported="gles2"/>
<extension name="GL_EXT_shader_pixel_local_storage" supported="gles2">
<require>
<enum name="GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT"/>
@@ -41207,6 +44275,16 @@
<enum name="GL_SHADER_PIXEL_LOCAL_STORAGE_EXT"/>
</require>
</extension>
+ <extension name="GL_EXT_shader_pixel_local_storage2" supported="gles2">
+ <require>
+ <enum name="GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT"/>
+ <enum name="GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT"/>
+ <command name="glFramebufferPixelLocalStorageSizeEXT"/>
+ <command name="glGetFramebufferPixelLocalStorageSizeEXT"/>
+ <command name="glClearPixelLocalStorageuiEXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_shader_texture_lod" supported="gles2"/>
<extension name="GL_EXT_shadow_funcs" supported="gl"/>
<extension name="GL_EXT_shadow_samplers" supported="gles2">
@@ -41244,7 +44322,7 @@
<!-- <command name="glTexturePageCommitmentEXT"/> -->
</require>
</extension>
- <extension name="GL_EXT_sparse_texture2" supported="gl"/>
+ <extension name="GL_EXT_sparse_texture2" supported="gl|gles2"/>
<extension name="GL_EXT_stencil_clear_tag" supported="gl">
<require>
<enum name="GL_STENCIL_TAG_BITS_EXT"/>
@@ -41444,6 +44522,19 @@
<command name="glTexBufferEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_texture_compression_astc_decode_mode" supported="gles2">
+ <require>
+ <enum name="GL_TEXTURE_ASTC_DECODE_PRECISION_EXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_texture_compression_bptc" supported="gles2">
+ <require>
+ <enum name="GL_COMPRESSED_RGBA_BPTC_UNORM_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT"/>
+ <enum name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT"/>
+ <enum name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_texture_compression_dxt1" supported="gles1|gles2">
<require>
<enum name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT"/>
@@ -41458,7 +44549,7 @@
<enum name="GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT"/>
</require>
</extension>
- <extension name="GL_EXT_texture_compression_rgtc" supported="gl">
+ <extension name="GL_EXT_texture_compression_rgtc" supported="gl|gles2">
<require>
<enum name="GL_COMPRESSED_RED_RGTC1_EXT"/>
<enum name="GL_COMPRESSED_SIGNED_RED_RGTC1_EXT"/>
@@ -41466,7 +44557,7 @@
<enum name="GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT"/>
</require>
</extension>
- <extension name="GL_EXT_texture_compression_s3tc" supported="gl|gles2">
+ <extension name="GL_EXT_texture_compression_s3tc" supported="gl|glcore|gles2|glsc2">
<require>
<enum name="GL_COMPRESSED_RGB_S3TC_DXT1_EXT"/>
<enum name="GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"/>
@@ -41474,6 +44565,14 @@
<enum name="GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"/>
</require>
</extension>
+ <extension name="GL_EXT_texture_compression_s3tc_srgb" supported="gles2">
+ <require>
+ <enum name="GL_COMPRESSED_SRGB_S3TC_DXT1_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_texture_cube_map" supported="gl" comment="Replaced by ARB_texture_cube_map, but was apparently shipped anyway?">
<require>
<enum name="GL_NORMAL_MAP_EXT"/>
@@ -41541,15 +44640,10 @@
<enum name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"/>
</require>
</extension>
- <extension name="GL_EXT_texture_filter_minmax" supported="gl|gles2">
+ <extension name="GL_EXT_texture_filter_minmax" supported="gl|glcore|gles2">
<require>
- <enum name="GL_RASTER_MULTISAMPLE_EXT"/>
- <enum name="GL_RASTER_SAMPLES_EXT"/>
- <enum name="GL_MAX_RASTER_SAMPLES_EXT"/>
- <enum name="GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT"/>
- <enum name="GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT"/>
- <enum name="GL_EFFECTIVE_RASTER_SAMPLES_EXT"/>
- <command name="glRasterSamplesEXT"/>
+ <enum name="GL_TEXTURE_REDUCTION_MODE_EXT"/>
+ <enum name="GL_WEIGHTED_AVERAGE_EXT"/>
</require>
</extension>
<extension name="GL_EXT_texture_format_BGRA8888" supported="gles1|gles2">
@@ -41557,6 +44651,11 @@
<enum name="GL_BGRA_EXT"/>
</require>
</extension>
+ <extension name="GL_EXT_texture_format_sRGB_override" supported="gles2">
+ <require>
+ <enum name="GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_texture_integer" supported="gl">
<require>
<enum name="GL_RGBA32UI_EXT"/>
@@ -41628,6 +44727,11 @@
<enum name="GL_MIRROR_CLAMP_TO_BORDER_EXT"/>
</require>
</extension>
+ <extension name="GL_EXT_texture_mirror_clamp_to_edge" supported="gles2">
+ <require>
+ <enum name="GL_MIRROR_CLAMP_TO_EDGE_EXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_texture_norm16" supported="gles2">
<require>
<enum name="GL_R16_EXT"/>
@@ -41700,7 +44804,7 @@
<enum name="GL_SRG8_EXT"/>
</require>
</extension>
- <extension name="GL_EXT_texture_sRGB_decode" supported="gl|gles2">
+ <extension name="GL_EXT_texture_sRGB_decode" supported="gl|glcore|gles2">
<require>
<enum name="GL_TEXTURE_SRGB_DECODE_EXT"/>
<enum name="GL_DECODE_EXT"/>
@@ -42095,6 +45199,23 @@
<command name="glVertexWeightPointerEXT"/>
</require>
</extension>
+ <extension name="GL_EXT_win32_keyed_mutex" supported="gl|gles2">
+ <require>
+ <command name="glAcquireKeyedMutexWin32EXT"/>
+ <command name="glReleaseKeyedMutexWin32EXT"/>
+ </require>
+ </extension>
+ <extension name="GL_EXT_window_rectangles" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_INCLUSIVE_EXT"/>
+ <enum name="GL_EXCLUSIVE_EXT"/>
+ <enum name="GL_WINDOW_RECTANGLE_EXT"/>
+ <enum name="GL_WINDOW_RECTANGLE_MODE_EXT"/>
+ <enum name="GL_MAX_WINDOW_RECTANGLES_EXT"/>
+ <enum name="GL_NUM_WINDOW_RECTANGLES_EXT"/>
+ <command name="glWindowRectanglesEXT"/>
+ </require>
+ </extension>
<extension name="GL_EXT_x11_sync_object" supported="gl">
<require>
<enum name="GL_SYNC_X11_FENCE_EXT"/>
@@ -42218,6 +45339,26 @@
<command name="glVertexPointerListIBM"/>
</require>
</extension>
+ <extension name="GL_IMG_bindless_texture" supported="gles2">
+ <require>
+ <command name="glGetTextureHandleIMG"/>
+ <command name="glGetTextureSamplerHandleIMG"/>
+ <command name="glUniformHandleui64IMG"/>
+ <command name="glUniformHandleui64vIMG"/>
+ <command name="glProgramUniformHandleui64IMG"/>
+ <command name="glProgramUniformHandleui64vIMG"/>
+ </require>
+ </extension>
+ <extension name="GL_IMG_framebuffer_downsample" supported="gles2">
+ <require>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG"/>
+ <enum name="GL_NUM_DOWNSAMPLE_SCALES_IMG"/>
+ <enum name="GL_DOWNSAMPLE_SCALES_IMG"/>
+ <enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG"/>
+ <command name="glFramebufferTexture2DDownsampleIMG"/>
+ <command name="glFramebufferTextureLayerDownsampleIMG"/>
+ </require>
+ </extension>
<extension name="GL_IMG_multisampled_render_to_texture" supported="gles1|gles2">
<require>
<enum name="GL_RENDERBUFFER_SAMPLES_IMG"/>
@@ -42311,8 +45452,13 @@
<enum name="GL_INTERLACE_READ_INGR"/>
</require>
</extension>
+ <extension name="GL_INTEL_conservative_rasterization" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_CONSERVATIVE_RASTERIZATION_INTEL"/>
+ </require>
+ </extension>
<extension name="GL_INTEL_fragment_shader_ordering" supported="gl"/>
- <extension name="GL_INTEL_framebuffer_CMAA" supported="gl|gles2">
+ <extension name="GL_INTEL_framebuffer_CMAA" supported="gl|glcore|gles2">
<require>
<command name="glApplyFramebufferAttachmentCMAAINTEL"/>
</require>
@@ -42328,6 +45474,11 @@
<command name="glMapTexture2DINTEL"/>
</require>
</extension>
+ <extension name="GL_INTEL_blackhole_render" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_BLACKHOLE_RENDER_INTEL"/>
+ </require>
+ </extension>
<extension name="GL_INTEL_parallel_arrays" supported="gl">
<require>
<enum name="GL_PARALLEL_ARRAYS_INTEL"/>
@@ -42341,7 +45492,7 @@
<command name="glTexCoordPointervINTEL"/>
</require>
</extension>
- <extension name="GL_INTEL_performance_query" supported="gl|gles2">
+ <extension name="GL_INTEL_performance_query" supported="gl|glcore|gles2">
<require>
<enum name="GL_PERFQUERY_SINGLE_CONTEXT_INTEL"/>
<enum name="GL_PERFQUERY_GLOBAL_CONTEXT_INTEL"/>
@@ -42375,7 +45526,7 @@
<command name="glGetPerfQueryInfoINTEL"/>
</require>
</extension>
- <extension name="GL_KHR_blend_equation_advanced" supported="gl|gles2">
+ <extension name="GL_KHR_blend_equation_advanced" supported="gl|glcore|gles2">
<require>
<enum name="GL_MULTIPLY_KHR"/>
<enum name="GL_SCREEN_KHR"/>
@@ -42395,7 +45546,7 @@
<command name="glBlendBarrierKHR"/>
</require>
</extension>
- <extension name="GL_KHR_blend_equation_advanced_coherent" supported="gl|gles2">
+ <extension name="GL_KHR_blend_equation_advanced_coherent" supported="gl|glcore|gles2">
<require comment="Otherwise identical to GL_KHR_blend_equation_advanced, just different semantic behavior">
<enum name="GL_BLEND_ADVANCED_COHERENT_KHR"/>
</require>
@@ -42412,7 +45563,7 @@
<enum name="GL_NONE"/>
</require>
</extension>
- <extension name="GL_KHR_debug" supported="gl|glcore|gles2">
+ <extension name="GL_KHR_debug" supported="gl|glcore|gles1|gles2">
<require api="gl" comment="KHR extensions *mandate* suffixes for ES, unlike for GL">
<enum name="GL_DEBUG_OUTPUT_SYNCHRONOUS"/>
<enum name="GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH"/>
@@ -42628,6 +45779,13 @@
</require>
</extension>
<extension name="GL_KHR_texture_compression_astc_sliced_3d" supported="gl|glcore|gles2"/>
+ <extension name="GL_KHR_parallel_shader_compile" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_MAX_SHADER_COMPILER_THREADS_KHR"/>
+ <enum name="GL_COMPLETION_STATUS_KHR"/>
+ <command name="glMaxShaderCompilerThreadsKHR"/>
+ </require>
+ </extension>
<extension name="GL_MESAX_texture_stack" supported="gl">
<require>
<enum name="GL_TEXTURE_1D_STACK_MESAX"/>
@@ -42643,11 +45801,24 @@
<enum name="GL_PACK_INVERT_MESA"/>
</require>
</extension>
+ <extension name="GL_MESA_program_binary_formats" supported="gl|gles2">
+ <require>
+ <enum name="GL_PROGRAM_BINARY_FORMAT_MESA"/>
+ </require>
+ </extension>
<extension name="GL_MESA_resize_buffers" supported="gl">
<require>
<command name="glResizeBuffersMESA"/>
</require>
</extension>
+ <extension name="GL_MESA_shader_integer_functions" supported="gl|gles2"/>
+ <extension name="GL_MESA_tile_raster_order" supported="gl">
+ <require>
+ <enum name="GL_TILE_RASTER_ORDER_FIXED_MESA"/>
+ <enum name="GL_TILE_RASTER_ORDER_INCREASING_X_MESA"/>
+ <enum name="GL_TILE_RASTER_ORDER_INCREASING_Y_MESA"/>
+ </require>
+ </extension>
<extension name="GL_MESA_window_pos" supported="gl">
<require>
<command name="glWindowPos2dMESA"/>
@@ -42683,6 +45854,12 @@
<enum name="GL_YCBCR_MESA"/>
</require>
</extension>
+ <extension name="GL_NVX_blend_equation_advanced_multi_draw_buffers" supported="gl|gles2"/>
+ <extension name="GL_NVX_cross_process_interop" supported="disabled">
+ <require comment="unpublished experimental extension">
+ <enum name="GL_EXTERNAL_STORAGE_BIT_NVX"/>
+ </require>
+ </extension>
<extension name="GL_NVX_conditional_render" supported="gl">
<require>
<command name="glBeginConditionalRenderNVX"/>
@@ -42698,19 +45875,37 @@
<enum name="GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX"/>
</require>
</extension>
- <extension name="GL_NV_bindless_multi_draw_indirect" supported="gl">
+ <extension name="GL_NVX_linked_gpu_multicast" supported="gl">
+ <require>
+ <enum name="GL_LGPU_SEPARATE_STORAGE_BIT_NVX"/>
+ <enum name="GL_MAX_LGPU_GPUS_NVX"/>
+ <command name="glLGPUNamedBufferSubDataNVX"/>
+ <command name="glLGPUCopyImageSubDataNVX"/>
+ <command name="glLGPUInterlockNVX"/>
+ </require>
+ </extension>
+ <extension name="GL_NV_alpha_to_coverage_dither_control" supported="gl">
+ <require>
+ <enum name="GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV"/>
+ <enum name="GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV"/>
+ <enum name="GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV"/>
+ <enum name="GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV"/>
+ <command name="glAlphaToCoverageDitherControlNV"/>
+ </require>
+ </extension>
+ <extension name="GL_NV_bindless_multi_draw_indirect" supported="gl|glcore">
<require>
<command name="glMultiDrawArraysIndirectBindlessNV"/>
<command name="glMultiDrawElementsIndirectBindlessNV"/>
</require>
</extension>
- <extension name="GL_NV_bindless_multi_draw_indirect_count" supported="gl">
+ <extension name="GL_NV_bindless_multi_draw_indirect_count" supported="gl|glcore">
<require>
<command name="glMultiDrawArraysIndirectBindlessCountNV"/>
<command name="glMultiDrawElementsIndirectBindlessCountNV"/>
</require>
</extension>
- <extension name="GL_NV_bindless_texture" supported="gl|gles2">
+ <extension name="GL_NV_bindless_texture" supported="gl|glcore|gles2">
<require>
<command name="glGetTextureHandleNV"/>
<command name="glGetTextureSamplerHandleNV"/>
@@ -42727,7 +45922,7 @@
<command name="glIsImageHandleResidentNV"/>
</require>
</extension>
- <extension name="GL_NV_blend_equation_advanced" supported="gl|gles2">
+ <extension name="GL_NV_blend_equation_advanced" supported="gl|glcore|gles2">
<require>
<enum name="GL_BLEND_OVERLAP_NV"/>
<enum name="GL_BLEND_PREMULTIPLIED_SRC_NV"/>
@@ -42784,13 +45979,27 @@
<command name="glBlendBarrierNV"/>
</require>
</extension>
- <extension name="GL_NV_blend_equation_advanced_coherent" supported="gl|gles2">
+ <extension name="GL_NV_blend_equation_advanced_coherent" supported="gl|glcore|gles2">
<require comment="Otherwise identical to GL_NV_blend_equation_advanced, just different semantic behavior">
<enum name="GL_BLEND_ADVANCED_COHERENT_NV"/>
</require>
</extension>
+ <extension name="GL_NV_blend_minmax_factor" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_FACTOR_MIN_AMD"/>
+ <enum name="GL_FACTOR_MAX_AMD"/>
+ </require>
+ </extension>
<extension name="GL_NV_blend_square" supported="gl"/>
- <extension name="GL_NV_command_list" supported="gl">
+ <extension name="GL_NV_clip_space_w_scaling" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_VIEWPORT_POSITION_W_SCALE_NV"/>
+ <enum name="GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV"/>
+ <enum name="GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV"/>
+ <command name="glViewportPositionWScaleNV"/>
+ </require>
+ </extension>
+ <extension name="GL_NV_command_list" supported="gl|glcore">
<require>
<enum name="GL_TERMINATE_SEQUENCE_COMMAND_NV"/>
<enum name="GL_NOP_COMMAND_NV"/>
@@ -42836,7 +46045,7 @@
<enum name="GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV"/>
</require>
</extension>
- <extension name="GL_NV_conditional_render" supported="gl|gles2">
+ <extension name="GL_NV_conditional_render" supported="gl|glcore|gles2">
<require>
<enum name="GL_QUERY_WAIT_NV"/>
<enum name="GL_QUERY_NO_WAIT_NV"/>
@@ -42846,7 +46055,7 @@
<command name="glEndConditionalRenderNV"/>
</require>
</extension>
- <extension name="GL_NV_conservative_raster" supported="gl|gles2">
+ <extension name="GL_NV_conservative_raster" supported="gl|glcore|gles2">
<require>
<enum name="GL_CONSERVATIVE_RASTERIZATION_NV"/>
<enum name="GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV"/>
@@ -42855,7 +46064,7 @@
<command name="glSubpixelPrecisionBiasNV"/>
</require>
</extension>
- <extension name="GL_NV_conservative_raster_dilate" supported="gl">
+ <extension name="GL_NV_conservative_raster_dilate" supported="gl|glcore">
<require>
<enum name="GL_CONSERVATIVE_RASTER_DILATE_NV"/>
<enum name="GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV"/>
@@ -42863,6 +46072,21 @@
<command name="glConservativeRasterParameterfNV"/>
</require>
</extension>
+ <extension name="GL_NV_conservative_raster_pre_snap" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV"/>
+ </require>
+ </extension>
+ <extension name="GL_NV_conservative_raster_pre_snap_triangles" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_CONSERVATIVE_RASTER_MODE_NV"/>
+ <enum name="GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV"/>
+ <enum name="GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV"/>
+ <enum name="GL_CONSERVATIVE_RASTER_MODE_NV"/>
+ <command name="glConservativeRasterParameteriNV"/>
+ </require>
+ </extension>
+ <extension name="GL_NV_conservative_raster_underestimation" supported="gl|glcore"/>
<extension name="GL_NV_copy_buffer" supported="gles2">
<require>
<enum name="GL_COPY_READ_BUFFER_NV"/>
@@ -42972,6 +46196,15 @@
<command name="glDrawTextureNV"/>
</require>
</extension>
+ <extension name="GL_NV_draw_vulkan_image" supported="gl|glcore|gles2">
+ <require>
+ <command name="glDrawVkImageNV"/>
+ <command name="glGetVkProcAddrNV"/>
+ <command name="glWaitVkSemaphoreNV"/>
+ <command name="glSignalVkSemaphoreNV"/>
+ <command name="glSignalVkFenceNV"/>
+ </require>
+ </extension>
<extension name="GL_NV_evaluators" supported="gl">
<require>
<enum name="GL_EVAL_2D_NV"/>
@@ -43062,7 +46295,7 @@
<command name="glSetFenceNV"/>
</require>
</extension>
- <extension name="GL_NV_fill_rectangle" supported="gl|gles2">
+ <extension name="GL_NV_fill_rectangle" supported="gl|glcore|gles2">
<require>
<enum name="GL_FILL_RECTANGLE_NV"/>
</require>
@@ -43094,7 +46327,7 @@
<enum name="GL_EYE_PLANE"/>
</require>
</extension>
- <extension name="GL_NV_fragment_coverage_to_color" supported="gl|gles2">
+ <extension name="GL_NV_fragment_coverage_to_color" supported="gl|glcore|gles2">
<require>
<enum name="GL_FRAGMENT_COVERAGE_TO_COLOR_NV"/>
<enum name="GL_FRAGMENT_COVERAGE_COLOR_NV"/>
@@ -43130,7 +46363,7 @@
</extension>
<extension name="GL_NV_fragment_program4" supported="gl"/>
<extension name="GL_NV_fragment_program_option" supported="gl"/>
- <extension name="GL_NV_fragment_shader_interlock" supported="gl|gles2"/>
+ <extension name="GL_NV_fragment_shader_interlock" supported="gl|glcore|gles2"/>
<extension name="GL_NV_framebuffer_blit" supported="gles2">
<require>
<enum name="GL_READ_FRAMEBUFFER_NV"/>
@@ -43140,7 +46373,7 @@
<command name="glBlitFramebufferNV"/>
</require>
</extension>
- <extension name="GL_NV_framebuffer_mixed_samples" supported="gl|gles2">
+ <extension name="GL_NV_framebuffer_mixed_samples" supported="gl|glcore|gles2">
<require>
<enum name="GL_RASTER_MULTISAMPLE_EXT"/>
<enum name="GL_COVERAGE_MODULATION_TABLE_NV"/>
@@ -43170,7 +46403,7 @@
<command name="glRenderbufferStorageMultisampleNV"/>
</require>
</extension>
- <extension name="GL_NV_framebuffer_multisample_coverage" supported="gl">
+ <extension name="GL_NV_framebuffer_multisample_coverage" supported="gl|glcore">
<require>
<enum name="GL_RENDERBUFFER_COVERAGE_SAMPLES_NV"/>
<enum name="GL_RENDERBUFFER_COLOR_SAMPLES_NV"/>
@@ -43205,7 +46438,7 @@
</require>
</extension>
<extension name="GL_NV_geometry_shader4" supported="gl"/>
- <extension name="GL_NV_geometry_shader_passthrough" supported="gl|gles2"/>
+ <extension name="GL_NV_geometry_shader_passthrough" supported="gl|glcore|gles2"/>
<extension name="GL_NV_gpu_program4" supported="gl">
<require>
<enum name="GL_MIN_PROGRAM_TEXEL_OFFSET_NV"/>
@@ -43249,7 +46482,7 @@
</require>
</extension>
<extension name="GL_NV_gpu_program5_mem_extended" supported="gl"/>
- <extension name="GL_NV_gpu_shader5" supported="gl">
+ <extension name="GL_NV_gpu_shader5" supported="gl|glcore|gles2">
<require>
<enum name="GL_INT64_NV"/>
<enum name="GL_UNSIGNED_INT64_NV"/>
@@ -43375,7 +46608,7 @@
<command name="glVertexAttribDivisorNV"/>
</require>
</extension>
- <extension name="GL_NV_internalformat_sample_query" supported="gl|gles2">
+ <extension name="GL_NV_internalformat_sample_query" supported="gl|glcore|gles2">
<require>
<enum name="GL_RENDERBUFFER"/>
<enum name="GL_TEXTURE_2D_MULTISAMPLE"/>
@@ -43393,6 +46626,27 @@
<enum name="GL_MAX_SPOT_EXPONENT_NV"/>
</require>
</extension>
+ <extension name="GL_NV_gpu_multicast" supported="gl">
+ <require>
+ <enum name="GL_PER_GPU_STORAGE_BIT_NV"/>
+ <enum name="GL_MULTICAST_GPUS_NV"/>
+ <enum name="GL_RENDER_GPU_MASK_NV"/>
+ <enum name="GL_PER_GPU_STORAGE_NV"/>
+ <enum name="GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV"/>
+ <command name="glRenderGpuMaskNV"/>
+ <command name="glMulticastBufferSubDataNV"/>
+ <command name="glMulticastCopyBufferSubDataNV"/>
+ <command name="glMulticastCopyImageSubDataNV"/>
+ <command name="glMulticastBlitFramebufferNV"/>
+ <command name="glMulticastFramebufferSampleLocationsfvNV"/>
+ <command name="glMulticastBarrierNV"/>
+ <command name="glMulticastWaitSyncNV"/>
+ <command name="glMulticastGetQueryObjectivNV"/>
+ <command name="glMulticastGetQueryObjectuivNV"/>
+ <command name="glMulticastGetQueryObjecti64vNV"/>
+ <command name="glMulticastGetQueryObjectui64vNV"/>
+ </require>
+ </extension>
<extension name="GL_NV_multisample_coverage" supported="gl">
<require>
<enum name="GL_SAMPLES_ARB"/>
@@ -43454,7 +46708,7 @@
</require>
</extension>
<extension name="GL_NV_parameter_buffer_object2" supported="gl"/>
- <extension name="GL_NV_path_rendering" supported="gl|gles2">
+ <extension name="GL_NV_path_rendering" supported="gl|glcore|gles2">
<require>
<enum name="GL_PATH_FORMAT_SVG_NV"/>
<enum name="GL_PATH_FORMAT_PS_NV"/>
@@ -43692,9 +46946,28 @@
<enum name="GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV"/>
<enum name="GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV"/>
<enum name="GL_FRAGMENT_INPUT_NV"/>
+ <command name="glMatrixFrustumEXT"/>
+ <command name="glMatrixLoadIdentityEXT"/>
+ <command name="glMatrixLoadTransposefEXT"/>
+ <command name="glMatrixLoadTransposedEXT"/>
+ <command name="glMatrixLoadfEXT"/>
+ <command name="glMatrixLoaddEXT"/>
+ <command name="glMatrixMultTransposefEXT"/>
+ <command name="glMatrixMultTransposedEXT"/>
+ <command name="glMatrixMultfEXT"/>
+ <command name="glMatrixMultdEXT"/>
+ <command name="glMatrixOrthoEXT"/>
+ <command name="glMatrixPopEXT"/>
+ <command name="glMatrixPushEXT"/>
+ <command name="glMatrixRotatefEXT"/>
+ <command name="glMatrixRotatedEXT"/>
+ <command name="glMatrixScalefEXT"/>
+ <command name="glMatrixScaledEXT"/>
+ <command name="glMatrixTranslatefEXT"/>
+ <command name="glMatrixTranslatedEXT"/>
</require>
</extension>
- <extension name="GL_NV_path_rendering_shared_edge" supported="gl|gles2">
+ <extension name="GL_NV_path_rendering_shared_edge" supported="gl|glcore|gles2">
<require>
<enum name="GL_SHARED_EDGE_NV"/>
</require>
@@ -43711,6 +46984,14 @@
<command name="glFlushPixelDataRangeNV"/>
</require>
</extension>
+ <extension name="GL_NV_pixel_buffer_object" supported="gles2">
+ <require>
+ <enum name="GL_PIXEL_PACK_BUFFER_NV"/>
+ <enum name="GL_PIXEL_UNPACK_BUFFER_NV"/>
+ <enum name="GL_PIXEL_PACK_BUFFER_BINDING_NV"/>
+ <enum name="GL_PIXEL_UNPACK_BUFFER_BINDING_NV"/>
+ </require>
+ </extension>
<extension name="GL_NV_point_sprite" supported="gl">
<require>
<enum name="GL_POINT_SPRITE_NV"/>
@@ -43755,6 +47036,24 @@
<command name="glPrimitiveRestartIndexNV"/>
</require>
</extension>
+ <extension name="GL_NV_query_resource" supported="gl">
+ <require>
+ <enum name="GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV"/>
+ <enum name="GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV"/>
+ <enum name="GL_QUERY_RESOURCE_SYS_RESERVED_NV"/>
+ <enum name="GL_QUERY_RESOURCE_TEXTURE_NV"/>
+ <enum name="GL_QUERY_RESOURCE_RENDERBUFFER_NV"/>
+ <enum name="GL_QUERY_RESOURCE_BUFFEROBJECT_NV"/>
+ <command name="glQueryResourceNV"/>
+ </require>
+ </extension>
+ <extension name="GL_NV_query_resource_tag" supported="gl">
+ <require>
+ <command name="glGenQueryResourceTagNV"/>
+ <command name="glDeleteQueryResourceTagNV"/>
+ <command name="glQueryResourceTagNV"/>
+ </require>
+ </extension>
<extension name="GL_NV_read_buffer" supported="gles2">
<require>
<enum name="GL_READ_BUFFER_NV"/>
@@ -43845,6 +47144,11 @@
<command name="glGetCombinerStageParameterfvNV"/>
</require>
</extension>
+ <extension name="GL_NV_robustness_video_memory_purge" supported="gl">
+ <require>
+ <enum name="GL_PURGED_CONTEXT_RESET_NV"/>
+ </require>
+ </extension>
<extension name="GL_NV_sRGB_formats" supported="gles2">
<require>
<enum name="GL_SLUMINANCE_NV"/>
@@ -43859,7 +47163,7 @@
<enum name="GL_ETC1_SRGB8_NV"/>
</require>
</extension>
- <extension name="GL_NV_sample_locations" supported="gl|gles2">
+ <extension name="GL_NV_sample_locations" supported="gl|glcore|gles2">
<require>
<enum name="GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV"/>
<enum name="GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV"/>
@@ -43874,12 +47178,13 @@
<command name="glResolveDepthValuesNV"/>
</require>
</extension>
- <extension name="GL_NV_sample_mask_override_coverage" supported="gl|gles2"/>
- <extension name="GL_NV_shader_atomic_counters" supported="gl"/>
- <extension name="GL_NV_shader_atomic_float" supported="gl"/>
- <extension name="GL_NV_shader_atomic_fp16_vector" supported="gl"/>
- <extension name="GL_NV_shader_atomic_int64" supported="gl"/>
- <extension name="GL_NV_shader_buffer_load" supported="gl">
+ <extension name="GL_NV_sample_mask_override_coverage" supported="gl|glcore|gles2"/>
+ <extension name="GL_NV_shader_atomic_counters" supported="gl|glcore"/>
+ <extension name="GL_NV_shader_atomic_float" supported="gl|glcore"/>
+ <extension name="GL_NV_shader_atomic_float64" supported="gl|glcore"/>
+ <extension name="GL_NV_shader_atomic_fp16_vector" supported="gl|glcore|gles2"/>
+ <extension name="GL_NV_shader_atomic_int64" supported="gl|glcore"/>
+ <extension name="GL_NV_shader_buffer_load" supported="gl|glcore">
<require>
<enum name="GL_BUFFER_GPU_ADDRESS_NV"/>
<enum name="GL_GPU_ADDRESS_NV"/>
@@ -43900,7 +47205,7 @@
<command name="glProgramUniformui64vNV"/>
</require>
</extension>
- <extension name="GL_NV_shader_buffer_store" supported="gl">
+ <extension name="GL_NV_shader_buffer_store" supported="gl|glcore">
<require>
<enum name="GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV"/>
<enum name="GL_READ_WRITE"/>
@@ -43909,14 +47214,14 @@
</extension>
<extension name="GL_NV_shader_noperspective_interpolation" supported="gles2"/>
<extension name="GL_NV_shader_storage_buffer_object" supported="gl"/>
- <extension name="GL_NV_shader_thread_group" supported="gl">
+ <extension name="GL_NV_shader_thread_group" supported="gl|glcore">
<require>
<enum name="GL_WARP_SIZE_NV"/>
<enum name="GL_WARPS_PER_SM_NV"/>
<enum name="GL_SM_COUNT_NV"/>
</require>
</extension>
- <extension name="GL_NV_shader_thread_shuffle" supported="gl"/>
+ <extension name="GL_NV_shader_thread_shuffle" supported="gl|glcore"/>
<extension name="GL_NV_shadow_samplers_array" supported="gles2">
<require>
<enum name="GL_SAMPLER_2D_ARRAY_SHADOW_NV"/>
@@ -43927,6 +47232,7 @@
<enum name="GL_SAMPLER_CUBE_SHADOW_NV"/>
</require>
</extension>
+ <extension name="GL_NV_stereo_view_rendering" supported="gl|glcore|gles2"/>
<extension name="GL_NV_tessellation_program5" supported="gl">
<require>
<enum name="GL_MAX_PROGRAM_PATCH_ATTRIBS_NV"/>
@@ -43949,7 +47255,7 @@
<enum name="GL_REFLECTION_MAP_NV"/>
</require>
</extension>
- <extension name="GL_NV_texture_barrier" supported="gl">
+ <extension name="GL_NV_texture_barrier" supported="gl|glcore">
<require>
<command name="glTextureBarrierNV"/>
</require>
@@ -43999,6 +47305,7 @@
<enum name="GL_MAX_RECTANGLE_TEXTURE_SIZE_NV"/>
</require>
</extension>
+ <extension name="GL_NV_texture_rectangle_compressed" supported="gl|glcore"/>
<extension name="GL_NV_texture_shader" supported="gl">
<require>
<enum name="GL_OFFSET_TEXTURE_RECTANGLE_NV"/>
@@ -44166,7 +47473,7 @@
<command name="glDrawTransformFeedbackNV"/>
</require>
</extension>
- <extension name="GL_NV_uniform_buffer_unified_memory" supported="gl">
+ <extension name="GL_NV_uniform_buffer_unified_memory" supported="gl|glcore">
<require>
<enum name="GL_UNIFORM_BUFFER_UNIFIED_NV"/>
<enum name="GL_UNIFORM_BUFFER_ADDRESS_NV"/>
@@ -44207,7 +47514,7 @@
<enum name="GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV"/>
</require>
</extension>
- <extension name="GL_NV_vertex_attrib_integer_64bit" supported="gl">
+ <extension name="GL_NV_vertex_attrib_integer_64bit" supported="gl|glcore">
<require>
<enum name="GL_INT64_NV"/>
<enum name="GL_UNSIGNED_INT64_NV"/>
@@ -44232,7 +47539,7 @@
<command name="glVertexAttribLFormatNV"/>
</require>
</extension>
- <extension name="GL_NV_vertex_buffer_unified_memory" supported="gl">
+ <extension name="GL_NV_vertex_buffer_unified_memory" supported="gl|glcore">
<require>
<enum name="GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV"/>
<enum name="GL_ELEMENT_ARRAY_UNIFIED_NV"/>
@@ -44534,7 +47841,24 @@
<command name="glIsEnablediNV"/>
</require>
</extension>
- <extension name="GL_NV_viewport_array2" supported="gl|gles2"/>
+ <extension name="GL_NV_viewport_array2" supported="gl|glcore|gles2"/>
+ <extension name="GL_NV_viewport_swizzle" supported="gl|glcore|gles2">
+ <require>
+ <enum name="GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_X_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_Y_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_Z_NV"/>
+ <enum name="GL_VIEWPORT_SWIZZLE_W_NV"/>
+ <command name="glViewportSwizzleNV"/>
+ </require>
+ </extension>
<extension name="GL_OES_EGL_image" supported="gles1|gles2">
<require>
<type name="GLeglImageOES"/>
@@ -44634,12 +47958,12 @@
<command name="glCopyImageSubDataOES"/>
</require>
</extension>
- <extension name="GL_OES_depth24" supported="gles1|gles2">
+ <extension name="GL_OES_depth24" supported="gles1|gles2|glsc2">
<require>
<enum name="GL_DEPTH_COMPONENT24_OES"/>
</require>
</extension>
- <extension name="GL_OES_depth32" supported="gles1|gles2">
+ <extension name="GL_OES_depth32" supported="gles1|gles2|glsc2">
<require>
<enum name="GL_DEPTH_COMPONENT32_OES"/>
</require>
@@ -44696,7 +48020,7 @@
<command name="glDrawElementsBaseVertexOES"/>
<command name="glDrawRangeElementsBaseVertexOES" comment="Supported only if OpenGL ES 3.0 is supported"/>
<command name="glDrawElementsInstancedBaseVertexOES" comment="Supported only if OpenGL ES 3.0 is supported"/>
- <command name="glMultiDrawElementsBaseVertexOES" comment="Supported only if GL_EXT_multi_draw_arrays is supported"/>
+ <command name="glMultiDrawElementsBaseVertexEXT" comment="Supported only if GL_EXT_multi_draw_arrays is supported"/>
</require>
</extension>
<extension name="GL_OES_draw_texture" supported="gles1">
@@ -45041,7 +48365,7 @@
<enum name="GL_RGB10_A2_EXT"/>
</require>
</extension>
- <extension name="GL_OES_rgb8_rgba8" supported="gles1|gles2">
+ <extension name="GL_OES_rgb8_rgba8" supported="gles1|gles2|glsc2">
<require>
<enum name="GL_RGB8_OES"/>
<enum name="GL_RGBA8_OES"/>
@@ -45074,7 +48398,7 @@
<command name="glOrthofOES"/>
</require>
</extension>
- <extension name="GL_OES_standard_derivatives" supported="gles2">
+ <extension name="GL_OES_standard_derivatives" supported="gles2|glsc2">
<require>
<enum name="GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES"/>
</require>
@@ -45100,7 +48424,7 @@
<enum name="GL_DECR_WRAP_OES"/>
</require>
</extension>
- <extension name="GL_OES_surfaceless_context" supported="gles2">
+ <extension name="GL_OES_surfaceless_context" supported="gles1|gles2">
<require>
<enum name="GL_FRAMEBUFFER_UNDEFINED_OES"/>
</require>
@@ -45317,7 +48641,7 @@
<enum name="GL_MIRRORED_REPEAT_OES"/>
</require>
</extension>
- <extension name="GL_OES_texture_npot" supported="gles2"/>
+ <extension name="GL_OES_texture_npot" supported="gles1|gles2"/>
<extension name="GL_OES_texture_stencil8" supported="gles2">
<require>
<enum name="GL_STENCIL_INDEX_OES"/>
@@ -45364,6 +48688,30 @@
<enum name="GL_INT_10_10_10_2_OES"/>
</require>
</extension>
+ <extension name="GL_OES_viewport_array" supported="gles2">
+ <require>
+ <enum name="GL_SCISSOR_BOX"/>
+ <enum name="GL_VIEWPORT"/>
+ <enum name="GL_DEPTH_RANGE"/>
+ <enum name="GL_SCISSOR_TEST"/>
+ <enum name="GL_MAX_VIEWPORTS_OES"/>
+ <enum name="GL_VIEWPORT_SUBPIXEL_BITS_OES"/>
+ <enum name="GL_VIEWPORT_BOUNDS_RANGE_OES"/>
+ <enum name="GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES"/>
+ <command name="glViewportArrayvOES"/>
+ <command name="glViewportIndexedfOES"/>
+ <command name="glViewportIndexedfvOES"/>
+ <command name="glScissorArrayvOES"/>
+ <command name="glScissorIndexedOES"/>
+ <command name="glScissorIndexedvOES"/>
+ <command name="glDepthRangeArrayfvOES"/>
+ <command name="glDepthRangeIndexedfOES"/>
+ <command name="glGetFloati_vOES"/>
+ <command name="glEnableiOES"/>
+ <command name="glDisableiOES"/>
+ <command name="glIsEnablediOES"/>
+ </require>
+ </extension>
<extension name="GL_OML_interlace" supported="gl">
<require>
<enum name="GL_INTERLACE_OML"/>
@@ -45386,15 +48734,16 @@
<enum name="GL_FORMAT_SUBSAMPLE_244_244_OML"/>
</require>
</extension>
- <extension name="GL_OVR_multiview" supported="gl|gles2">
+ <extension name="GL_OVR_multiview" supported="gl|glcore|gles2">
<require>
<enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR"/>
<enum name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR"/>
<enum name="GL_MAX_VIEWS_OVR"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR"/>
<command name="glFramebufferTextureMultiviewOVR"/>
</require>
</extension>
- <extension name="GL_OVR_multiview2" supported="gl|gles2"/>
+ <extension name="GL_OVR_multiview2" supported="gl|glcore|gles2"/>
<extension name="GL_OVR_multiview_multisampled_render_to_texture" supported="gles2">
<require>
<command name="glFramebufferTextureMultisampleMultiviewOVR"/>
@@ -45506,11 +48855,37 @@
<command name="glExtGetProgramBinarySourceQCOM"/>
</require>
</extension>
+ <extension name="GL_QCOM_framebuffer_foveated" supported="gles2">
+ <require>
+ <enum name="GL_FOVEATION_ENABLE_BIT_QCOM"/>
+ <enum name="GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM"/>
+ <command name="glFramebufferFoveationConfigQCOM"/>
+ <command name="glFramebufferFoveationParametersQCOM"/>
+ </require>
+ </extension>
+ <extension name="GL_QCOM_texture_foveated" supported="gles2">
+ <require>
+ <enum name="GL_FOVEATION_ENABLE_BIT_QCOM"/>
+ <enum name="GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM"/>
+ <enum name="GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM"/>
+ <enum name="GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM"/>
+ <enum name="GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM"/>
+ <enum name="GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM"/>
+ <enum name="GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM"/>
+ <command name="glTextureFoveationParametersQCOM"/>
+ </require>
+ </extension>
<extension name="GL_QCOM_perfmon_global_mode" supported="gles1|gles2">
<require>
<enum name="GL_PERFMON_GLOBAL_MODE_QCOM"/>
</require>
</extension>
+ <extension name="GL_QCOM_shader_framebuffer_fetch_noncoherent" supported="gles2">
+ <require>
+ <enum name="GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM"/>
+ <command name="glFramebufferFetchBarrierQCOM"/>
+ </require>
+ </extension>
<extension name="GL_QCOM_tiled_rendering" supported="gles1|gles2">
<require>
<enum name="GL_COLOR_BUFFER_BIT0_QCOM"/>
diff --git a/services/displayservice/DisplayEventReceiver.cpp b/services/displayservice/DisplayEventReceiver.cpp
index 5993e44..2bb74c2 100644
--- a/services/displayservice/DisplayEventReceiver.cpp
+++ b/services/displayservice/DisplayEventReceiver.cpp
@@ -102,10 +102,20 @@
switch(buf[i].header.type) {
case FwkReceiver::DISPLAY_EVENT_VSYNC: {
- mCallback->onVsync(timestamp, event.vsync.count);
+ auto ret = mCallback->onVsync(timestamp, event.vsync.count);
+ if (!ret.isOk()) {
+ LOG(ERROR) << "AttachedEvent handleEvent fails on onVsync callback"
+ << " because of " << ret.description();
+ return 0; // remove the callback
+ }
} break;
case FwkReceiver::DISPLAY_EVENT_HOTPLUG: {
- mCallback->onHotplug(timestamp, event.hotplug.connected);
+ auto ret = mCallback->onHotplug(timestamp, event.hotplug.connected);
+ if (!ret.isOk()) {
+ LOG(ERROR) << "AttachedEvent handleEvent fails on onHotplug callback"
+ << " because of " << ret.description();
+ return 0; // remove the callback
+ }
} break;
default: {
LOG(ERROR) << "AttachedEvent handleEvent unknown type: " << type;
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index 2bd0a19..8e9e7fd 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -86,6 +86,7 @@
SensorService::SensorService()
: mInitCheck(NO_INIT), mSocketBufferSize(SOCKET_BUFFER_SIZE_NON_BATCHED),
mWakeLockAcquired(false) {
+ mUidPolicy = new UidPolicy(this);
}
bool SensorService::initializeHmacKey() {
@@ -283,7 +284,6 @@
enableSchedFifoMode();
// Start watching UID changes to apply policy.
- mUidPolicy = new UidPolicy(this);
mUidPolicy->registerSelf();
}
}
diff --git a/services/surfaceflinger/Android.bp b/services/surfaceflinger/Android.bp
index ba28eb5..ff994f5 100644
--- a/services/surfaceflinger/Android.bp
+++ b/services/surfaceflinger/Android.bp
@@ -105,6 +105,7 @@
"Layer.cpp",
"LayerProtoHelper.cpp",
"LayerRejecter.cpp",
+ "LayerStats.cpp",
"LayerVector.cpp",
"MessageQueue.cpp",
"MonitoredProducer.cpp",
diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp
index 9200207..2aa4cd3 100644
--- a/services/surfaceflinger/BufferLayer.cpp
+++ b/services/surfaceflinger/BufferLayer.cpp
@@ -778,6 +778,7 @@
}
void BufferLayer::drawWithOpenGL(const RenderArea& renderArea, bool useIdentityTransform) const {
+ ATRACE_CALL();
const State& s(getDrawingState());
computeGeometry(renderArea, getBE().mMesh, useIdentityTransform);
@@ -829,7 +830,7 @@
getColor());
engine.setSourceDataSpace(mCurrentState.dataSpace);
- if (mCurrentState.dataSpace == HAL_DATASPACE_BT2020_ITU_PQ &&
+ if (mCurrentState.dataSpace == ui::Dataspace::BT2020_ITU_PQ &&
mConsumer->getCurrentApi() == NATIVE_WINDOW_API_MEDIA &&
getBE().compositionInfo.mBuffer->getPixelFormat() == HAL_PIXEL_FORMAT_RGBA_1010102) {
engine.setSourceY410BT2020(true);
diff --git a/services/surfaceflinger/BufferLayerConsumer.cpp b/services/surfaceflinger/BufferLayerConsumer.cpp
index 46ec0e3..87333d0 100644
--- a/services/surfaceflinger/BufferLayerConsumer.cpp
+++ b/services/surfaceflinger/BufferLayerConsumer.cpp
@@ -65,7 +65,7 @@
mCurrentScalingMode(NATIVE_WINDOW_SCALING_MODE_FREEZE),
mCurrentFence(Fence::NO_FENCE),
mCurrentTimestamp(0),
- mCurrentDataSpace(HAL_DATASPACE_UNKNOWN),
+ mCurrentDataSpace(ui::Dataspace::UNKNOWN),
mCurrentFrameNumber(0),
mCurrentTransformToDisplayInverse(false),
mCurrentSurfaceDamage(),
@@ -341,7 +341,7 @@
mCurrentTransform = item.mTransform;
mCurrentScalingMode = item.mScalingMode;
mCurrentTimestamp = item.mTimestamp;
- mCurrentDataSpace = item.mDataSpace;
+ mCurrentDataSpace = static_cast<ui::Dataspace>(item.mDataSpace);
mCurrentHdrMetadata = item.mHdrMetadata;
mCurrentFence = item.mFence;
mCurrentFenceTime = item.mFenceTime;
@@ -356,6 +356,7 @@
}
status_t BufferLayerConsumer::bindTextureImageLocked() {
+ ATRACE_CALL();
mRE.checkErrors();
if (mCurrentTexture == BufferQueue::INVALID_BUFFER_SLOT && mCurrentTextureImage == nullptr) {
@@ -445,7 +446,7 @@
return mCurrentTimestamp;
}
-android_dataspace BufferLayerConsumer::getCurrentDataSpace() {
+ui::Dataspace BufferLayerConsumer::getCurrentDataSpace() {
BLC_LOGV("getCurrentDataSpace");
Mutex::Autolock lock(mMutex);
return mCurrentDataSpace;
diff --git a/services/surfaceflinger/BufferLayerConsumer.h b/services/surfaceflinger/BufferLayerConsumer.h
index 11048d8..f81cdb1 100644
--- a/services/surfaceflinger/BufferLayerConsumer.h
+++ b/services/surfaceflinger/BufferLayerConsumer.h
@@ -23,6 +23,7 @@
#include <ui/FenceTime.h>
#include <ui/GraphicBuffer.h>
+#include <ui/GraphicTypes.h>
#include <ui/Region.h>
#include <utils/String8.h>
@@ -122,7 +123,7 @@
// getDataSpace retrieves the DataSpace associated with the texture image
// set by the most recent call to updateTexImage.
- android_dataspace getCurrentDataSpace();
+ ui::Dataspace getCurrentDataSpace();
// getCurrentHdrMetadata retrieves the HDR metadata associated with the
// texture image set by the most recent call to updateTexImage.
@@ -324,7 +325,7 @@
// mCurrentDataSpace is the dataspace for the current texture. It
// gets set each time updateTexImage is called.
- android_dataspace mCurrentDataSpace;
+ ui::Dataspace mCurrentDataSpace;
// mCurrentHdrMetadata is the HDR metadata for the current texture. It
// gets set each time updateTexImage is called.
diff --git a/services/surfaceflinger/DispSync.cpp b/services/surfaceflinger/DispSync.cpp
index 9e01fd0..7acbd11 100644
--- a/services/surfaceflinger/DispSync.cpp
+++ b/services/surfaceflinger/DispSync.cpp
@@ -209,6 +209,28 @@
return BAD_VALUE;
}
+ status_t changePhaseOffset(DispSync::Callback* callback, nsecs_t phase) {
+ if (kTraceDetailedInfo) ATRACE_CALL();
+ Mutex::Autolock lock(mMutex);
+
+ for (size_t i = 0; i < mEventListeners.size(); i++) {
+ if (mEventListeners[i].mCallback == callback) {
+ EventListener& listener = mEventListeners.editItemAt(i);
+ const nsecs_t oldPhase = listener.mPhase;
+ listener.mPhase = phase;
+
+ // Pretend that the last time this event was handled at the same frame but with the
+ // new offset to allow for a seamless offset change without double-firing or
+ // skipping.
+ listener.mLastEventTime -= (oldPhase - phase);
+ mCond.signal();
+ return NO_ERROR;
+ }
+ }
+
+ return BAD_VALUE;
+ }
+
// This method is only here to handle the !SurfaceFlinger::hasSyncFramework
// case.
bool hasAnyEventListeners() {
@@ -487,6 +509,11 @@
return mThread->removeEventListener(callback);
}
+status_t DispSync::changePhaseOffset(Callback* callback, nsecs_t phase) {
+ Mutex::Autolock lock(mMutex);
+ return mThread->changePhaseOffset(callback, phase);
+}
+
void DispSync::setPeriod(nsecs_t period) {
Mutex::Autolock lock(mMutex);
mPeriod = period;
diff --git a/services/surfaceflinger/DispSync.h b/services/surfaceflinger/DispSync.h
index 9336f4d..077256a 100644
--- a/services/surfaceflinger/DispSync.h
+++ b/services/surfaceflinger/DispSync.h
@@ -113,6 +113,11 @@
// DispSync object.
status_t removeEventListener(Callback* callback);
+ // changePhaseOffset changes the phase offset of an already-registered event callback. The
+ // method will make sure that there is no skipping or double-firing on the listener per frame,
+ // even when changing the offsets multiple times.
+ status_t changePhaseOffset(Callback* callback, nsecs_t phase);
+
// computeNextRefresh computes when the next refresh is expected to begin.
// The periodOffset value can be used to move forward or backward; an
// offset of zero is the next refresh, -1 is the previous refresh, 1 is
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index 93cb849..58a774b 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -97,6 +97,7 @@
mPowerMode(initialPowerMode),
mActiveConfig(0),
mActiveColorMode(ColorMode::NATIVE),
+ mColorTransform(HAL_COLOR_TRANSFORM_IDENTITY),
mDisplayHasWideColor(supportWideColor),
mDisplayHasHdr(supportHdr)
{
@@ -267,9 +268,19 @@
return mActiveColorMode;
}
-void DisplayDevice::setCompositionDataSpace(android_dataspace dataspace) {
+void DisplayDevice::setColorTransform(const mat4& transform) {
+ const bool isIdentity = (transform == mat4());
+ mColorTransform =
+ isIdentity ? HAL_COLOR_TRANSFORM_IDENTITY : HAL_COLOR_TRANSFORM_ARBITRARY_MATRIX;
+}
+
+android_color_transform_t DisplayDevice::getColorTransform() const {
+ return mColorTransform;
+}
+
+void DisplayDevice::setCompositionDataSpace(ui::Dataspace dataspace) {
ANativeWindow* const window = mNativeWindow.get();
- native_window_set_buffers_data_space(window, dataspace);
+ native_window_set_buffers_data_space(window, static_cast<android_dataspace>(dataspace));
}
// ----------------------------------------------------------------------------
@@ -452,12 +463,11 @@
mScissor.top, mScissor.right, mScissor.bottom, tr[0][0], tr[1][0], tr[2][0],
tr[0][1], tr[1][1], tr[2][1], tr[0][2], tr[1][2], tr[2][2]);
auto const surface = static_cast<Surface*>(window);
- android_dataspace dataspace = surface->getBuffersDataSpace();
+ ui::Dataspace dataspace = surface->getBuffersDataSpace();
result.appendFormat(" wideColor=%d, hdr=%d, colorMode=%s, dataspace: %s (%d)\n",
mDisplayHasWideColor, mDisplayHasHdr,
decodeColorMode(mActiveColorMode).c_str(),
- dataspaceDetails(dataspace).c_str(), dataspace);
-
+ dataspaceDetails(static_cast<android_dataspace>(dataspace)).c_str(), dataspace);
String8 surfaceDump;
mDisplaySurface->dumpAsString(surfaceDump);
diff --git a/services/surfaceflinger/DisplayDevice.h b/services/surfaceflinger/DisplayDevice.h
index df729f5..e844d11 100644
--- a/services/surfaceflinger/DisplayDevice.h
+++ b/services/surfaceflinger/DisplayDevice.h
@@ -21,6 +21,8 @@
#include <stdlib.h>
+#include <math/mat4.h>
+
#include <ui/Region.h>
#include <binder/IBinder.h>
@@ -163,7 +165,9 @@
ui::ColorMode getActiveColorMode() const;
void setActiveColorMode(ui::ColorMode mode);
- void setCompositionDataSpace(android_dataspace dataspace);
+ android_color_transform_t getColorTransform() const;
+ void setColorTransform(const mat4& transform);
+ void setCompositionDataSpace(ui::Dataspace dataspace);
/* ------------------------------------------------------------------------
* Display active config management.
@@ -237,6 +241,8 @@
int mActiveConfig;
// current active color mode
ui::ColorMode mActiveColorMode;
+ // Current color transform
+ android_color_transform_t mColorTransform;
// Need to know if display is wide-color capable or not.
// Initialized by SurfaceFlinger when the DisplayDevice is created.
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.cpp b/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
index 0425a8a..5daa87e 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
@@ -32,6 +32,7 @@
using hardware::Return;
using hardware::hidl_vec;
using hardware::hidl_handle;
+using namespace hardware::graphics::common;
using namespace hardware::graphics::composer;
using PerFrameMetadata = hardware::graphics::composer::V2_2::IComposerClient::PerFrameMetadata;
using PerFrameMetadataKey =
@@ -256,17 +257,32 @@
{
const uint32_t bufferSlotCount = 1;
Error error = kDefaultError;
- mClient->createVirtualDisplay(width, height, *format, bufferSlotCount,
- [&](const auto& tmpError, const auto& tmpDisplay,
- const auto& tmpFormat) {
- error = tmpError;
- if (error != Error::NONE) {
- return;
- }
+ if (mClient_2_2) {
+ mClient_2_2->createVirtualDisplay_2_2(width, height, *format, bufferSlotCount,
+ [&](const auto& tmpError, const auto& tmpDisplay,
+ const auto& tmpFormat) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
- *outDisplay = tmpDisplay;
- *format = tmpFormat;
+ *outDisplay = tmpDisplay;
+ *format = tmpFormat;
+ });
+ } else {
+ mClient->createVirtualDisplay(width, height,
+ static_cast<V1_0::PixelFormat>(*format), bufferSlotCount,
+ [&](const auto& tmpError, const auto& tmpDisplay,
+ const auto& tmpFormat) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
+
+ *outDisplay = tmpDisplay;
+ *format = static_cast<PixelFormat>(tmpFormat);
});
+ }
return error;
}
@@ -334,15 +350,29 @@
std::vector<ColorMode>* outModes)
{
Error error = kDefaultError;
- mClient->getColorModes(display,
- [&](const auto& tmpError, const auto& tmpModes) {
- error = tmpError;
- if (error != Error::NONE) {
- return;
- }
- *outModes = tmpModes;
- });
+ if (mClient_2_2) {
+ mClient_2_2->getColorModes_2_2(display,
+ [&](const auto& tmpError, const auto& tmpModes) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
+
+ *outModes = tmpModes;
+ });
+ } else {
+ mClient->getColorModes(display,
+ [&](const auto& tmpError, const auto& tmpModes) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
+ for (V1_0::ColorMode colorMode : tmpModes) {
+ outModes->push_back(static_cast<ColorMode>(colorMode));
+ }
+ });
+ }
return error;
}
@@ -463,25 +493,6 @@
return error;
}
-Error Composer::getPerFrameMetadataKeys(
- Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) {
- if (!mClient_2_2) {
- return Error::UNSUPPORTED;
- }
-
- Error error = kDefaultError;
- mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) {
- error = tmpError;
- if (error != Error::NONE) {
- return;
- }
-
- *outKeys = tmpKeys;
- });
-
- return error;
-}
-
Error Composer::getReleaseFences(Display display,
std::vector<Layer>* outLayers, std::vector<int>* outReleaseFences)
{
@@ -522,7 +533,7 @@
.height = target->getHeight(),
.stride = target->getStride(),
.layerCount = target->getLayerCount(),
- .format = static_cast<PixelFormat>(target->getPixelFormat()),
+ .format = static_cast<V1_0::PixelFormat>(target->getPixelFormat()),
.usage = target->getUsage(),
};
mWriter.setClientTargetMetadata(metadata);
@@ -537,9 +548,16 @@
return Error::NONE;
}
-Error Composer::setColorMode(Display display, ColorMode mode)
+Error Composer::setColorMode(Display display, ColorMode mode,
+ RenderIntent renderIntent)
{
- auto ret = mClient->setColorMode(display, mode);
+ hardware::Return<Error> ret(kDefaultError);
+ if (mClient_2_2) {
+ ret = mClient_2_2->setColorMode_2_2(display, mode, renderIntent);
+ } else {
+ ret = mClient->setColorMode(display,
+ static_cast<V1_0::ColorMode>(mode));
+ }
return unwrapRet(ret);
}
@@ -645,7 +663,7 @@
.height = buffer->getHeight(),
.stride = buffer->getStride(),
.layerCount = buffer->getLayerCount(),
- .format = static_cast<PixelFormat>(buffer->getPixelFormat()),
+ .format = static_cast<V1_0::PixelFormat>(buffer->getPixelFormat()),
.usage = buffer->getUsage(),
};
mWriter.setLayerBufferMetadata(metadata);
@@ -742,7 +760,7 @@
metadata.cta8613.maxFrameAverageLightLevel}});
}
- mWriter.setPerFrameMetadata(composerMetadata);
+ mWriter.setLayerPerFrameMetadata(composerMetadata);
return Error::NONE;
}
@@ -846,39 +864,44 @@
}
Error error = kDefaultError;
- auto ret = mClient->executeCommands(commandLength, commandHandles,
- [&](const auto& tmpError, const auto& tmpOutChanged,
- const auto& tmpOutLength, const auto& tmpOutHandles)
- {
- error = tmpError;
+ hardware::Return<void> ret;
+ auto hidl_callback = [&](const auto& tmpError, const auto& tmpOutChanged,
+ const auto& tmpOutLength, const auto& tmpOutHandles)
+ {
+ error = tmpError;
- // set up new output command queue if necessary
- if (error == Error::NONE && tmpOutChanged) {
- error = kDefaultError;
- mClient->getOutputCommandQueue(
- [&](const auto& tmpError,
- const auto& tmpDescriptor)
- {
- error = tmpError;
- if (error != Error::NONE) {
- return;
- }
+ // set up new output command queue if necessary
+ if (error == Error::NONE && tmpOutChanged) {
+ error = kDefaultError;
+ mClient->getOutputCommandQueue(
+ [&](const auto& tmpError,
+ const auto& tmpDescriptor)
+ {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
- mReader.setMQDescriptor(tmpDescriptor);
- });
- }
+ mReader.setMQDescriptor(tmpDescriptor);
+ });
+ }
- if (error != Error::NONE) {
- return;
- }
+ if (error != Error::NONE) {
+ return;
+ }
- if (mReader.readQueue(tmpOutLength, tmpOutHandles)) {
- error = mReader.parse();
- mReader.reset();
- } else {
- error = Error::NO_RESOURCES;
- }
- });
+ if (mReader.readQueue(tmpOutLength, tmpOutHandles)) {
+ error = mReader.parse();
+ mReader.reset();
+ } else {
+ error = Error::NO_RESOURCES;
+ }
+ };
+ if (mClient_2_2) {
+ ret = mClient_2_2->executeCommands_2_2(commandLength, commandHandles, hidl_callback);
+ } else {
+ ret = mClient->executeCommands(commandLength, commandHandles, hidl_callback);
+ }
// executeCommands can fail because of out-of-fd and we do not want to
// abort() in that case
if (!ret.isOk()) {
@@ -909,6 +932,68 @@
return error;
}
+// Composer HAL 2.2
+
+Error Composer::getPerFrameMetadataKeys(
+ Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) {
+ if (!mClient_2_2) {
+ return Error::UNSUPPORTED;
+ }
+
+ Error error = kDefaultError;
+ mClient_2_2->getPerFrameMetadataKeys(display, [&](const auto& tmpError, const auto& tmpKeys) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
+
+ *outKeys = tmpKeys;
+ });
+
+ return error;
+}
+
+Error Composer::getRenderIntents(Display display, ColorMode colorMode,
+ std::vector<RenderIntent>* outRenderIntents) {
+ if (!mClient_2_2) {
+ outRenderIntents->push_back(RenderIntent::COLORIMETRIC);
+ return Error::NONE;
+ }
+
+ Error error = kDefaultError;
+ mClient_2_2->getRenderIntents(display, colorMode,
+ [&](const auto& tmpError, const auto& tmpKeys) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
+
+ *outRenderIntents = tmpKeys;
+ });
+
+ return error;
+}
+
+Error Composer::getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix)
+{
+ if (!mClient_2_2) {
+ *outMatrix = mat4();
+ return Error::NONE;
+ }
+
+ Error error = kDefaultError;
+ mClient_2_2->getDataspaceSaturationMatrix(dataspace, [&](const auto& tmpError, const auto& tmpMatrix) {
+ error = tmpError;
+ if (error != Error::NONE) {
+ return;
+ }
+
+ *outMatrix = mat4(tmpMatrix.data());
+ });
+
+ return error;
+}
+
CommandReader::~CommandReader()
{
resetData();
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h
index c0373aa..08901f6 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h
@@ -24,10 +24,12 @@
#include <vector>
#include <android/frameworks/vr/composer/1.0/IVrComposerClient.h>
+#include <android/hardware/graphics/common/1.1/types.h>
#include <android/hardware/graphics/composer/2.2/IComposer.h>
#include <android/hardware/graphics/composer/2.2/IComposerClient.h>
#include <composer-command-buffer/2.2/ComposerCommandBuffer.h>
#include <gui/HdrMetadata.h>
+#include <math/mat4.h>
#include <ui/GraphicBuffer.h>
#include <utils/StrongPointer.h>
@@ -37,12 +39,13 @@
using android::frameworks::vr::composer::V1_0::IVrComposerClient;
-using android::hardware::graphics::common::V1_0::ColorMode;
using android::hardware::graphics::common::V1_0::ColorTransform;
-using android::hardware::graphics::common::V1_0::Dataspace;
using android::hardware::graphics::common::V1_0::Hdr;
-using android::hardware::graphics::common::V1_0::PixelFormat;
using android::hardware::graphics::common::V1_0::Transform;
+using android::hardware::graphics::common::V1_1::ColorMode;
+using android::hardware::graphics::common::V1_1::Dataspace;
+using android::hardware::graphics::common::V1_1::PixelFormat;
+using android::hardware::graphics::common::V1_1::RenderIntent;
using android::hardware::graphics::composer::V2_1::Config;
using android::hardware::graphics::composer::V2_1::Display;
@@ -113,9 +116,6 @@
float* outMaxLuminance, float* outMaxAverageLuminance,
float* outMinLuminance) = 0;
- virtual Error getPerFrameMetadataKeys(
- Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0;
-
virtual Error getReleaseFences(Display display, std::vector<Layer>* outLayers,
std::vector<int>* outReleaseFences) = 0;
@@ -131,7 +131,7 @@
virtual Error setClientTarget(Display display, uint32_t slot, const sp<GraphicBuffer>& target,
int acquireFence, Dataspace dataspace,
const std::vector<IComposerClient::Rect>& damage) = 0;
- virtual Error setColorMode(Display display, ColorMode mode) = 0;
+ virtual Error setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) = 0;
virtual Error setColorTransform(Display display, const float* matrix, ColorTransform hint) = 0;
virtual Error setOutputBuffer(Display display, const native_handle_t* buffer,
int releaseFence) = 0;
@@ -174,6 +174,13 @@
const std::vector<IComposerClient::Rect>& visible) = 0;
virtual Error setLayerZOrder(Display display, Layer layer, uint32_t z) = 0;
virtual Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) = 0;
+
+ // Composer HAL 2.2
+ virtual Error getPerFrameMetadataKeys(
+ Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) = 0;
+ virtual Error getRenderIntents(Display display, ColorMode colorMode,
+ std::vector<RenderIntent>* outRenderIntents) = 0;
+ virtual Error getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) = 0;
};
namespace impl {
@@ -305,9 +312,6 @@
Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance,
float* outMaxAverageLuminance, float* outMinLuminance) override;
- Error getPerFrameMetadataKeys(
- Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override;
-
Error getReleaseFences(Display display, std::vector<Layer>* outLayers,
std::vector<int>* outReleaseFences) override;
@@ -323,7 +327,7 @@
Error setClientTarget(Display display, uint32_t slot, const sp<GraphicBuffer>& target,
int acquireFence, Dataspace dataspace,
const std::vector<IComposerClient::Rect>& damage) override;
- Error setColorMode(Display display, ColorMode mode) override;
+ Error setColorMode(Display display, ColorMode mode, RenderIntent renderIntent) override;
Error setColorTransform(Display display, const float* matrix, ColorTransform hint) override;
Error setOutputBuffer(Display display, const native_handle_t* buffer,
int releaseFence) override;
@@ -363,6 +367,13 @@
Error setLayerZOrder(Display display, Layer layer, uint32_t z) override;
Error setLayerInfo(Display display, Layer layer, uint32_t type, uint32_t appId) override;
+ // Composer HAL 2.2
+ Error getPerFrameMetadataKeys(
+ Display display, std::vector<IComposerClient::PerFrameMetadataKey>* outKeys) override;
+ Error getRenderIntents(Display display, ColorMode colorMode,
+ std::vector<RenderIntent>* outRenderIntents) override;
+ Error getDataspaceSaturationMatrix(Dataspace dataspace, mat4* outMatrix) override;
+
private:
class CommandWriter : public CommandWriterBase {
public:
diff --git a/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp b/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp
index 9398bde..e6d7834 100644
--- a/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp
+++ b/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp
@@ -44,6 +44,8 @@
namespace android {
// ----------------------------------------------------------------------------
+using ui::Dataspace;
+
/*
* This implements the (main) framebuffer management. This class is used
* mostly by SurfaceFlinger, but also by command line GL application.
@@ -92,7 +94,7 @@
uint32_t slot = 0;
sp<GraphicBuffer> buf;
sp<Fence> acquireFence(Fence::NO_FENCE);
- android_dataspace_t dataspace = HAL_DATASPACE_UNKNOWN;
+ Dataspace dataspace = Dataspace::UNKNOWN;
status_t result = nextBuffer(slot, buf, acquireFence, dataspace);
mDataSpace = dataspace;
if (result != NO_ERROR) {
@@ -104,7 +106,7 @@
status_t FramebufferSurface::nextBuffer(uint32_t& outSlot,
sp<GraphicBuffer>& outBuffer, sp<Fence>& outFence,
- android_dataspace_t& outDataspace) {
+ Dataspace& outDataspace) {
Mutex::Autolock lock(mMutex);
BufferItem item;
@@ -139,7 +141,7 @@
outFence = item.mFence;
mHwcBufferCache.getHwcBuffer(mCurrentBufferSlot, mCurrentBuffer,
&outSlot, &outBuffer);
- outDataspace = item.mDataSpace;
+ outDataspace = static_cast<Dataspace>(item.mDataSpace);
status_t result =
mHwc.setClientTarget(mDisplayType, outSlot, outFence, outBuffer, outDataspace);
if (result != NO_ERROR) {
@@ -178,7 +180,8 @@
void FramebufferSurface::dumpAsString(String8& result) const {
Mutex::Autolock lock(mMutex);
result.appendFormat(" FramebufferSurface: dataspace: %s(%d)\n",
- dataspaceDetails(mDataSpace).c_str(), mDataSpace);
+ dataspaceDetails(static_cast<android_dataspace>(mDataSpace)).c_str(),
+ mDataSpace);
ConsumerBase::dumpLocked(result, " ");
}
diff --git a/services/surfaceflinger/DisplayHardware/FramebufferSurface.h b/services/surfaceflinger/DisplayHardware/FramebufferSurface.h
index ed756c4..0fd8e9e 100644
--- a/services/surfaceflinger/DisplayHardware/FramebufferSurface.h
+++ b/services/surfaceflinger/DisplayHardware/FramebufferSurface.h
@@ -61,7 +61,7 @@
// BufferQueue and releases the previously latched buffer to the
// BufferQueue. The new buffer is returned in the 'buffer' argument.
status_t nextBuffer(uint32_t& outSlot, sp<GraphicBuffer>& outBuffer,
- sp<Fence>& outFence, android_dataspace_t& outDataspace);
+ sp<Fence>& outFence, ui::Dataspace& outDataspace);
// mDisplayType must match one of the HWC display types
int mDisplayType;
@@ -76,7 +76,7 @@
// compositing. Otherwise it will display the dataspace of the buffer
// use for compositing which can change as wide-color content is
// on/off.
- android_dataspace mDataSpace;
+ ui::Dataspace mDataSpace;
// mCurrentBuffer is the current buffer or nullptr to indicate that there is
// no current buffer.
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
index 98daec3..5f94bb4 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
@@ -47,6 +47,10 @@
namespace HWC2 {
namespace Hwc2 = android::Hwc2;
+using android::ui::ColorMode;
+using android::ui::Dataspace;
+using android::ui::PixelFormat;
+using android::ui::RenderIntent;
namespace {
@@ -114,14 +118,13 @@
}
Error Device::createVirtualDisplay(uint32_t width, uint32_t height,
- android_pixel_format_t* format, Display** outDisplay)
+ PixelFormat* format, Display** outDisplay)
{
ALOGI("Creating virtual display");
hwc2_display_t displayId = 0;
- auto intFormat = static_cast<Hwc2::PixelFormat>(*format);
auto intError = mComposer->createVirtualDisplay(width, height,
- &intFormat, &displayId);
+ format, &displayId);
auto error = static_cast<Error>(intError);
if (error != Error::None) {
return error;
@@ -131,7 +134,6 @@
*mComposer.get(), mCapabilities, displayId, DisplayType::Virtual);
display->setConnected(true);
*outDisplay = display.get();
- *format = static_cast<android_pixel_format_t>(intFormat);
mDisplays.emplace(displayId, std::move(display));
ALOGI("Created virtual display");
return Error::None;
@@ -362,11 +364,23 @@
return Error::None;
}
-Error Display::getColorModes(std::vector<android::ui::ColorMode>* outModes) const
+Error Display::getColorModes(std::vector<ColorMode>* outModes) const
{
auto intError = mComposer.getColorModes(mId, outModes);
return static_cast<Error>(intError);
- return Error::None;
+}
+
+Error Display::getRenderIntents(ColorMode colorMode,
+ std::vector<RenderIntent>* outRenderIntents) const
+{
+ auto intError = mComposer.getRenderIntents(mId, colorMode, outRenderIntents);
+ return static_cast<Error>(intError);
+}
+
+Error Display::getDataspaceSaturationMatrix(Dataspace dataspace, android::mat4* outMatrix)
+{
+ auto intError = mComposer.getDataspaceSaturationMatrix(dataspace, outMatrix);
+ return static_cast<Error>(intError);
}
std::vector<std::shared_ptr<const Display::Config>> Display::getConfigs() const
@@ -517,19 +531,18 @@
}
Error Display::setClientTarget(uint32_t slot, const sp<GraphicBuffer>& target,
- const sp<Fence>& acquireFence, android_dataspace_t dataspace)
+ const sp<Fence>& acquireFence, Dataspace dataspace)
{
// TODO: Properly encode client target surface damage
int32_t fenceFd = acquireFence->dup();
auto intError = mComposer.setClientTarget(mId, slot, target,
- fenceFd, static_cast<Hwc2::Dataspace>(dataspace),
- std::vector<Hwc2::IComposerClient::Rect>());
+ fenceFd, dataspace, std::vector<Hwc2::IComposerClient::Rect>());
return static_cast<Error>(intError);
}
-Error Display::setColorMode(android::ui::ColorMode mode)
+Error Display::setColorMode(ColorMode mode, RenderIntent renderIntent)
{
- auto intError = mComposer.setColorMode(mId, mode);
+ auto intError = mComposer.setColorMode(mId, mode, renderIntent);
return static_cast<Error>(intError);
}
@@ -766,14 +779,13 @@
return static_cast<Error>(intError);
}
-Error Layer::setDataspace(android_dataspace_t dataspace)
+Error Layer::setDataspace(Dataspace dataspace)
{
if (dataspace == mDataSpace) {
return Error::None;
}
mDataSpace = dataspace;
- auto intDataspace = static_cast<Hwc2::Dataspace>(dataspace);
- auto intError = mComposer.setLayerDataspace(mDisplayId, mId, intDataspace);
+ auto intError = mComposer.setLayerDataspace(mDisplayId, mId, mDataSpace);
return static_cast<Error>(intError);
}
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h
index 71c094a..e5779d4 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.h
+++ b/services/surfaceflinger/DisplayHardware/HWC2.h
@@ -96,7 +96,7 @@
uint32_t getMaxVirtualDisplayCount() const;
Error createVirtualDisplay(uint32_t width, uint32_t height,
- android_pixel_format_t* format, Display** outDisplay);
+ android::ui::PixelFormat* format, Display** outDisplay);
void destroyDisplay(hwc2_display_t displayId);
void onHotplug(hwc2_display_t displayId, Connection connection);
@@ -212,6 +212,11 @@
std::unordered_map<Layer*, Composition>* outTypes);
[[clang::warn_unused_result]] Error getColorModes(
std::vector<android::ui::ColorMode>* outModes) const;
+ [[clang::warn_unused_result]] Error getRenderIntents(
+ android::ui::ColorMode colorMode,
+ std::vector<android::ui::RenderIntent>* outRenderIntents) const;
+ [[clang::warn_unused_result]] Error getDataspaceSaturationMatrix(
+ android::ui::Dataspace dataspace, android::mat4* outMatrix);
// Doesn't call into the HWC2 device, so no errors are possible
std::vector<std::shared_ptr<const Config>> getConfigs() const;
@@ -234,9 +239,10 @@
[[clang::warn_unused_result]] Error setClientTarget(
uint32_t slot, const android::sp<android::GraphicBuffer>& target,
const android::sp<android::Fence>& acquireFence,
- android_dataspace_t dataspace);
+ android::ui::Dataspace dataspace);
[[clang::warn_unused_result]] Error setColorMode(
- android::ui::ColorMode mode);
+ android::ui::ColorMode mode,
+ android::ui::RenderIntent renderIntent);
[[clang::warn_unused_result]] Error setColorTransform(
const android::mat4& matrix, android_color_transform_t hint);
[[clang::warn_unused_result]] Error setOutputBuffer(
@@ -311,7 +317,7 @@
[[clang::warn_unused_result]] Error setColor(hwc_color_t color);
[[clang::warn_unused_result]] Error setCompositionType(Composition type);
[[clang::warn_unused_result]] Error setDataspace(
- android_dataspace_t dataspace);
+ android::ui::Dataspace dataspace);
[[clang::warn_unused_result]] Error setHdrMetadata(const android::HdrMetadata& metadata);
[[clang::warn_unused_result]] Error setDisplayFrame(
const android::Rect& frame);
@@ -335,7 +341,7 @@
hwc2_display_t mDisplayId;
hwc2_layer_t mId;
- android_dataspace mDataSpace = HAL_DATASPACE_UNKNOWN;
+ android::ui::Dataspace mDataSpace = android::ui::Dataspace::UNKNOWN;
android::HdrMetadata mHdrMetadata;
std::function<void(Layer*)> mLayerDestroyedListener;
};
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 6bf2ee9..8db8aa6 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -179,7 +179,7 @@
}
status_t HWComposer::allocateVirtualDisplay(uint32_t width, uint32_t height,
- android_pixel_format_t* format, int32_t *outId) {
+ ui::PixelFormat* format, int32_t *outId) {
if (mRemainingHwcVirtualDisplays == 0) {
ALOGE("allocateVirtualDisplay: No remaining virtual displays");
return NO_MEMORY;
@@ -330,17 +330,20 @@
return modes;
}
-status_t HWComposer::setActiveColorMode(int32_t displayId, ui::ColorMode mode) {
+status_t HWComposer::setActiveColorMode(int32_t displayId, ui::ColorMode mode,
+ ui::RenderIntent renderIntent) {
if (!isValidDisplay(displayId)) {
ALOGE("setActiveColorMode: Display %d is not valid", displayId);
return BAD_INDEX;
}
auto& displayData = mDisplayData[displayId];
- auto error = displayData.hwcDisplay->setColorMode(mode);
+ auto error = displayData.hwcDisplay->setColorMode(mode, renderIntent);
if (error != HWC2::Error::None) {
- ALOGE("setActiveConfig: Failed to set color mode %d on display %d: "
- "%s (%d)", mode, displayId, to_string(error).c_str(),
+ ALOGE("setActiveConfig: Failed to set color mode %d"
+ "with render intent %d on display %d: "
+ "%s (%d)", mode, renderIntent, displayId,
+ to_string(error).c_str(),
static_cast<int32_t>(error));
return UNKNOWN_ERROR;
}
@@ -387,7 +390,7 @@
status_t HWComposer::setClientTarget(int32_t displayId, uint32_t slot,
const sp<Fence>& acquireFence, const sp<GraphicBuffer>& target,
- android_dataspace_t dataspace) {
+ ui::Dataspace dataspace) {
if (!isValidDisplay(displayId)) {
return BAD_INDEX;
}
@@ -841,6 +844,44 @@
return capabilities;
}
+std::vector<ui::RenderIntent> HWComposer::getRenderIntents(int32_t displayId,
+ ui::ColorMode colorMode) const {
+ if (!isValidDisplay(displayId)) {
+ ALOGE("getRenderIntents: Attempted to access invalid display %d",
+ displayId);
+ return {};
+ }
+
+ std::vector<ui::RenderIntent> renderIntents;
+ auto error = mDisplayData[displayId].hwcDisplay->getRenderIntents(colorMode, &renderIntents);
+ if (error != HWC2::Error::None) {
+ ALOGE("getColorModes failed for display %d: %s (%d)", displayId,
+ to_string(error).c_str(), static_cast<int32_t>(error));
+ return std::vector<ui::RenderIntent>();
+ }
+
+ return renderIntents;
+}
+
+mat4 HWComposer::getDataspaceSaturationMatrix(int32_t displayId, ui::Dataspace dataspace) {
+ if (!isValidDisplay(displayId)) {
+ ALOGE("getDataSpaceSaturationMatrix: Attempted to access invalid display %d",
+ displayId);
+ return {};
+ }
+
+ mat4 matrix;
+ auto error = mDisplayData[displayId].hwcDisplay->getDataspaceSaturationMatrix(dataspace,
+ &matrix);
+ if (error != HWC2::Error::None) {
+ ALOGE("getDataSpaceSaturationMatrix failed for display %d: %s (%d)", displayId,
+ to_string(error).c_str(), static_cast<int32_t>(error));
+ return mat4();
+ }
+
+ return matrix;
+}
+
// Converts a PixelFormat to a human-readable string. Max 11 chars.
// (Could use a table of prefab String8 objects.)
/*
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index 0366a0d..e86d621 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -80,7 +80,7 @@
// Attempts to allocate a virtual display. If the virtual display is created
// on the HWC device, outId will contain its HWC ID.
status_t allocateVirtualDisplay(uint32_t width, uint32_t height,
- android_pixel_format_t* format, int32_t* outId);
+ ui::PixelFormat* format, int32_t* outId);
// Attempts to create a new layer on this display
HWC2::Layer* createLayer(int32_t displayId);
@@ -92,7 +92,7 @@
status_t setClientTarget(int32_t displayId, uint32_t slot,
const sp<Fence>& acquireFence,
- const sp<GraphicBuffer>& target, android_dataspace_t dataspace);
+ const sp<GraphicBuffer>& target, ui::Dataspace dataspace);
// Present layers to the display and read releaseFences.
status_t presentAndGetReleaseFences(int32_t displayId);
@@ -137,6 +137,11 @@
// Returns the HDR capabilities of the given display
std::unique_ptr<HdrCapabilities> getHdrCapabilities(int32_t displayId);
+ // Returns the available RenderIntent of the given display.
+ std::vector<ui::RenderIntent> getRenderIntents(int32_t displayId, ui::ColorMode colorMode) const;
+
+ mat4 getDataspaceSaturationMatrix(int32_t displayId, ui::Dataspace dataspace);
+
// Events handling ---------------------------------------------------------
// Returns true if successful, false otherwise. The
@@ -161,7 +166,8 @@
std::vector<ui::ColorMode> getColorModes(int32_t displayId) const;
- status_t setActiveColorMode(int32_t displayId, ui::ColorMode mode);
+ status_t setActiveColorMode(int32_t displayId, ui::ColorMode mode,
+ ui::RenderIntent renderIntent);
bool isUsingVrComposer() const;
diff --git a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
index 3480b24..9a2817d 100644
--- a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
+++ b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
@@ -222,7 +222,7 @@
// TODO: Correctly propagate the dataspace from GL composition
result = mHwc.setClientTarget(mDisplayId, hwcSlot, mFbFence,
- hwcBuffer, HAL_DATASPACE_UNKNOWN);
+ hwcBuffer, ui::Dataspace::UNKNOWN);
}
return result;
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 166ac22..9d356d8 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -42,6 +42,7 @@
#include <gui/LayerDebugInfo.h>
#include <gui/Surface.h>
+#include "BufferLayer.h"
#include "Colorizer.h"
#include "DisplayDevice.h"
#include "Layer.h"
@@ -121,7 +122,7 @@
mCurrentState.layerStack = 0;
mCurrentState.sequence = 0;
mCurrentState.requested = mCurrentState.active;
- mCurrentState.dataSpace = HAL_DATASPACE_UNKNOWN;
+ mCurrentState.dataSpace = ui::Dataspace::UNKNOWN;
mCurrentState.appId = 0;
mCurrentState.type = 0;
@@ -635,6 +636,7 @@
hwcInfo.forceClientComposition = true;
} else {
auto transform = static_cast<HWC2::Transform>(orientation);
+ hwcInfo.transform = transform;
auto error = hwcLayer->setTransform(transform);
ALOGE_IF(error != HWC2::Error::None,
"[%s] Failed to set transform %s: "
@@ -1325,7 +1327,7 @@
return true;
}
-bool Layer::setDataSpace(android_dataspace dataSpace) {
+bool Layer::setDataSpace(ui::Dataspace dataSpace) {
if (mCurrentState.dataSpace == dataSpace) return false;
mCurrentState.sequence++;
mCurrentState.dataSpace = dataSpace;
@@ -1334,7 +1336,7 @@
return true;
}
-android_dataspace Layer::getDataSpace() const {
+ui::Dataspace Layer::getDataSpace() const {
return mCurrentState.dataSpace;
}
@@ -1430,7 +1432,7 @@
info.mColor = ds.color;
info.mFlags = ds.flags;
info.mPixelFormat = getPixelFormat();
- info.mDataSpace = getDataSpace();
+ info.mDataSpace = static_cast<android_dataspace>(getDataSpace());
info.mMatrix[0][0] = ds.active.transform[0][0];
info.mMatrix[0][1] = ds.active.transform[0][1];
info.mMatrix[1][0] = ds.active.transform[1][0];
@@ -1893,7 +1895,7 @@
layerInfo->set_is_opaque(isOpaque(state));
layerInfo->set_invalidate(contentDirty);
- layerInfo->set_dataspace(dataspaceDetails(getDataSpace()));
+ layerInfo->set_dataspace(dataspaceDetails(static_cast<android_dataspace>(getDataSpace())));
layerInfo->set_pixel_format(decodePixelFormat(getPixelFormat()));
LayerProtoHelper::writeToProto(getColor(), layerInfo->mutable_color());
LayerProtoHelper::writeToProto(state.color, layerInfo->mutable_requested_color());
@@ -1923,6 +1925,31 @@
layerInfo->set_app_id(state.appId);
}
+void Layer::writeToProto(LayerProto* layerInfo, int32_t hwcId) {
+ writeToProto(layerInfo, LayerVector::StateSet::Drawing);
+
+ const auto& hwcInfo = getBE().mHwcLayers.at(hwcId);
+
+ const Rect& frame = hwcInfo.displayFrame;
+ LayerProtoHelper::writeToProto(frame, layerInfo->mutable_hwc_frame());
+
+ const FloatRect& crop = hwcInfo.sourceCrop;
+ LayerProtoHelper::writeToProto(crop, layerInfo->mutable_hwc_crop());
+
+ const int32_t transform = static_cast<int32_t>(hwcInfo.transform);
+ layerInfo->set_hwc_transform(transform);
+
+ const int32_t compositionType = static_cast<int32_t>(hwcInfo.compositionType);
+ layerInfo->set_hwc_composition_type(compositionType);
+
+ if (std::strcmp(getTypeId(), "BufferLayer") == 0 &&
+ static_cast<BufferLayer*>(this)->isProtected()) {
+ layerInfo->set_is_protected(true);
+ } else {
+ layerInfo->set_is_protected(false);
+ }
+}
+
// ---------------------------------------------------------------------------
}; // namespace android
diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h
index 9a9b5e6..8d2a048 100644
--- a/services/surfaceflinger/Layer.h
+++ b/services/surfaceflinger/Layer.h
@@ -113,7 +113,8 @@
layer(nullptr),
forceClientComposition(false),
compositionType(HWC2::Composition::Invalid),
- clearClientTarget(false) {}
+ clearClientTarget(false),
+ transform(HWC2::Transform::None) {}
HWComposer* hwc;
HWC2::Layer* layer;
@@ -123,6 +124,7 @@
Rect displayFrame;
FloatRect sourceCrop;
HWComposerBufferCache bufferCache;
+ HWC2::Transform transform;
};
// A layer can be attached to multiple displays when operating in mirror mode
@@ -205,7 +207,7 @@
// dependent.
Region activeTransparentRegion;
Region requestedTransparentRegion;
- android_dataspace dataSpace;
+ ui::Dataspace dataSpace;
int32_t appId;
int32_t type;
@@ -283,8 +285,8 @@
bool setTransparentRegionHint(const Region& transparent);
bool setFlags(uint8_t flags, uint8_t mask);
bool setLayerStack(uint32_t layerStack);
- bool setDataSpace(android_dataspace dataSpace);
- android_dataspace getDataSpace() const;
+ bool setDataSpace(ui::Dataspace dataSpace);
+ ui::Dataspace getDataSpace() const;
uint32_t getLayerStack() const;
void deferTransactionUntil(const sp<IBinder>& barrierHandle, uint64_t frameNumber);
void deferTransactionUntil(const sp<Layer>& barrierLayer, uint64_t frameNumber);
@@ -357,6 +359,8 @@
void writeToProto(LayerProto* layerInfo,
LayerVector::StateSet stateSet = LayerVector::StateSet::Drawing);
+ void writeToProto(LayerProto* layerInfo, int32_t hwcId);
+
protected:
/*
* onDraw - draws the surface.
diff --git a/services/surfaceflinger/LayerProtoHelper.cpp b/services/surfaceflinger/LayerProtoHelper.cpp
index 6a33148..cc39550 100644
--- a/services/surfaceflinger/LayerProtoHelper.cpp
+++ b/services/surfaceflinger/LayerProtoHelper.cpp
@@ -37,6 +37,13 @@
rectProto->set_right(rect.right);
}
+void LayerProtoHelper::writeToProto(const FloatRect& rect, FloatRectProto* rectProto) {
+ rectProto->set_left(rect.left);
+ rectProto->set_top(rect.top);
+ rectProto->set_bottom(rect.bottom);
+ rectProto->set_right(rect.right);
+}
+
void LayerProtoHelper::writeToProto(const half4 color, ColorProto* colorProto) {
colorProto->set_r(color.r);
colorProto->set_g(color.g);
diff --git a/services/surfaceflinger/LayerProtoHelper.h b/services/surfaceflinger/LayerProtoHelper.h
index 45a0b5d..860da63 100644
--- a/services/surfaceflinger/LayerProtoHelper.h
+++ b/services/surfaceflinger/LayerProtoHelper.h
@@ -29,6 +29,7 @@
class LayerProtoHelper {
public:
static void writeToProto(const Rect& rect, RectProto* rectProto);
+ static void writeToProto(const FloatRect& rect, FloatRectProto* rectProto);
static void writeToProto(const Region& region, RegionProto* regionProto);
static void writeToProto(const half4 color, ColorProto* colorProto);
static void writeToProto(const Transform& transform, TransformProto* transformProto);
@@ -36,4 +37,4 @@
};
} // namespace surfaceflinger
-} // namespace android
\ No newline at end of file
+} // namespace android
diff --git a/services/surfaceflinger/LayerStats.cpp b/services/surfaceflinger/LayerStats.cpp
new file mode 100644
index 0000000..38ea6ed
--- /dev/null
+++ b/services/surfaceflinger/LayerStats.cpp
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2018 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.
+ */
+#undef LOG_TAG
+#define LOG_TAG "LayerStats"
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
+
+#include "LayerStats.h"
+#include "DisplayHardware/HWComposer.h"
+#include "ui/DebugUtils.h"
+
+#include <android-base/stringprintf.h>
+#include <log/log.h>
+#include <utils/String8.h>
+#include <utils/Trace.h>
+
+namespace android {
+
+void LayerStats::enable() {
+ ATRACE_CALL();
+ std::lock_guard<std::mutex> lock(mMutex);
+ if (mEnabled) return;
+ mLayerShapeStatsMap.clear();
+ mEnabled = true;
+ ALOGD("Logging enabled");
+}
+
+void LayerStats::disable() {
+ ATRACE_CALL();
+ std::lock_guard<std::mutex> lock(mMutex);
+ if (!mEnabled) return;
+ mEnabled = false;
+ ALOGD("Logging disabled");
+}
+
+void LayerStats::clear() {
+ ATRACE_CALL();
+ std::lock_guard<std::mutex> lock(mMutex);
+ mLayerShapeStatsMap.clear();
+ ALOGD("Cleared current layer stats");
+}
+
+bool LayerStats::isEnabled() {
+ return mEnabled;
+}
+
+void LayerStats::traverseLayerTreeStatsLocked(
+ std::vector<std::unique_ptr<LayerProtoParser::Layer>> layerTree,
+ const LayerProtoParser::LayerGlobal* layerGlobal, std::vector<std::string>& layerShapeVec) {
+ for (std::unique_ptr<LayerProtoParser::Layer>& layer : layerTree) {
+ if (!layer) continue;
+ traverseLayerTreeStatsLocked(std::move(layer->children), layerGlobal, layerShapeVec);
+ std::string key = "";
+ base::StringAppendF(&key, ",%s", layer->type.c_str());
+ base::StringAppendF(&key, ",%s", layerCompositionType(layer->hwcCompositionType));
+ base::StringAppendF(&key, ",%d", layer->isProtected);
+ base::StringAppendF(&key, ",%s", layerTransform(layer->hwcTransform));
+ base::StringAppendF(&key, ",%s", layerPixelFormat(layer->activeBuffer.format));
+ base::StringAppendF(&key, ",%s", layer->dataspace.c_str());
+ base::StringAppendF(&key, ",%s",
+ destinationLocation(layer->hwcFrame.left, layerGlobal->resolution[0],
+ true));
+ base::StringAppendF(&key, ",%s",
+ destinationLocation(layer->hwcFrame.top, layerGlobal->resolution[1],
+ false));
+ base::StringAppendF(&key, ",%s",
+ destinationSize(layer->hwcFrame.right - layer->hwcFrame.left,
+ layerGlobal->resolution[0], true));
+ base::StringAppendF(&key, ",%s",
+ destinationSize(layer->hwcFrame.bottom - layer->hwcFrame.top,
+ layerGlobal->resolution[1], false));
+ base::StringAppendF(&key, ",%s", scaleRatioWH(layer.get()).c_str());
+ base::StringAppendF(&key, ",%s", alpha(static_cast<float>(layer->color.a)));
+
+ layerShapeVec.push_back(key);
+ ALOGV("%s", key.c_str());
+ }
+}
+
+void LayerStats::logLayerStats(const LayersProto& layersProto) {
+ ATRACE_CALL();
+ ALOGV("Logging");
+ auto layerGlobal = LayerProtoParser::generateLayerGlobalInfo(layersProto);
+ auto layerTree = LayerProtoParser::generateLayerTree(layersProto);
+ std::vector<std::string> layerShapeVec;
+
+ std::lock_guard<std::mutex> lock(mMutex);
+ traverseLayerTreeStatsLocked(std::move(layerTree), &layerGlobal, layerShapeVec);
+
+ std::string layerShapeKey =
+ base::StringPrintf("%d,%s,%s,%s", static_cast<int32_t>(layerShapeVec.size()),
+ layerGlobal.colorMode.c_str(), layerGlobal.colorTransform.c_str(),
+ layerTransform(layerGlobal.globalTransform));
+ ALOGV("%s", layerShapeKey.c_str());
+
+ std::sort(layerShapeVec.begin(), layerShapeVec.end(), std::greater<std::string>());
+ for (auto const& s : layerShapeVec) {
+ layerShapeKey += s;
+ }
+
+ mLayerShapeStatsMap[layerShapeKey]++;
+}
+
+void LayerStats::dump(String8& result) {
+ ATRACE_CALL();
+ ALOGD("Dumping");
+ std::lock_guard<std::mutex> lock(mMutex);
+ result.append("Frequency,LayerCount,ColorMode,ColorTransform,Orientation\n");
+ result.append("LayerType,CompositionType,IsProtected,Transform,PixelFormat,Dataspace,");
+ result.append("DstX,DstY,DstWidth,DstHeight,WScale,HScale,Alpha\n");
+ for (auto& u : mLayerShapeStatsMap) {
+ result.appendFormat("%u,%s\n", u.second, u.first.c_str());
+ }
+}
+
+const char* LayerStats::destinationLocation(int32_t location, int32_t range, bool isHorizontal) {
+ static const char* locationArray[8] = {"0", "1/8", "1/4", "3/8", "1/2", "5/8", "3/4", "7/8"};
+ int32_t ratio = location * 8 / range;
+ if (ratio < 0) return "N/A";
+ if (isHorizontal) {
+ // X location is divided into 4 buckets {"0", "1/4", "1/2", "3/4"}
+ if (ratio > 6) return "3/4";
+ // use index 0, 2, 4, 6
+ return locationArray[ratio & ~1];
+ }
+ if (ratio > 7) return "7/8";
+ return locationArray[ratio];
+}
+
+const char* LayerStats::destinationSize(int32_t size, int32_t range, bool isWidth) {
+ static const char* sizeArray[8] = {"1/8", "1/4", "3/8", "1/2", "5/8", "3/4", "7/8", "1"};
+ int32_t ratio = size * 8 / range;
+ if (ratio < 0) return "N/A";
+ if (isWidth) {
+ // width is divided into 4 buckets {"1/4", "1/2", "3/4", "1"}
+ if (ratio > 6) return "1";
+ // use index 1, 3, 5, 7
+ return sizeArray[ratio | 1];
+ }
+ if (ratio > 7) return "1";
+ return sizeArray[ratio];
+}
+
+const char* LayerStats::layerTransform(int32_t transform) {
+ return getTransformName(static_cast<hwc_transform_t>(transform));
+}
+
+const char* LayerStats::layerCompositionType(int32_t compositionType) {
+ return getCompositionName(static_cast<hwc2_composition_t>(compositionType));
+}
+
+const char* LayerStats::layerPixelFormat(int32_t pixelFormat) {
+ return decodePixelFormat(pixelFormat).c_str();
+}
+
+std::string LayerStats::scaleRatioWH(const LayerProtoParser::Layer* layer) {
+ if (!layer->type.compare("ColorLayer")) return "N/A,N/A";
+ std::string ret = "";
+ if (isRotated(layer->hwcTransform)) {
+ ret += scaleRatio(layer->hwcFrame.right - layer->hwcFrame.left,
+ static_cast<int32_t>(layer->hwcCrop.bottom - layer->hwcCrop.top));
+ ret += ",";
+ ret += scaleRatio(layer->hwcFrame.bottom - layer->hwcFrame.top,
+ static_cast<int32_t>(layer->hwcCrop.right - layer->hwcCrop.left));
+ } else {
+ ret += scaleRatio(layer->hwcFrame.right - layer->hwcFrame.left,
+ static_cast<int32_t>(layer->hwcCrop.right - layer->hwcCrop.left));
+ ret += ",";
+ ret += scaleRatio(layer->hwcFrame.bottom - layer->hwcFrame.top,
+ static_cast<int32_t>(layer->hwcCrop.bottom - layer->hwcCrop.top));
+ }
+ return ret;
+}
+
+const char* LayerStats::scaleRatio(int32_t destinationScale, int32_t sourceScale) {
+ // Make scale buckets from <1/64 to >= 16, to avoid floating point
+ // calculation, x64 on destinationScale first
+ int32_t scale = destinationScale * 64 / sourceScale;
+ if (!scale) return "<1/64";
+ if (scale < 2) return "1/64";
+ if (scale < 4) return "1/32";
+ if (scale < 8) return "1/16";
+ if (scale < 16) return "1/8";
+ if (scale < 32) return "1/4";
+ if (scale < 64) return "1/2";
+ if (scale < 128) return "1";
+ if (scale < 256) return "2";
+ if (scale < 512) return "4";
+ if (scale < 1024) return "8";
+ return ">=16";
+}
+
+const char* LayerStats::alpha(float a) {
+ if (a == 1.0f) return "1.0";
+ if (a > 0.9f) return "0.99";
+ if (a > 0.8f) return "0.9";
+ if (a > 0.7f) return "0.8";
+ if (a > 0.6f) return "0.7";
+ if (a > 0.5f) return "0.6";
+ if (a > 0.4f) return "0.5";
+ if (a > 0.3f) return "0.4";
+ if (a > 0.2f) return "0.3";
+ if (a > 0.1f) return "0.2";
+ if (a > 0.0f) return "0.1";
+ return "0.0";
+}
+
+bool LayerStats::isRotated(int32_t transform) {
+ return transform & HWC_TRANSFORM_ROT_90;
+}
+
+bool LayerStats::isVFlipped(int32_t transform) {
+ return transform & HWC_TRANSFORM_FLIP_V;
+}
+
+bool LayerStats::isHFlipped(int32_t transform) {
+ return transform & HWC_TRANSFORM_FLIP_H;
+}
+
+} // namespace android
diff --git a/services/surfaceflinger/LayerStats.h b/services/surfaceflinger/LayerStats.h
new file mode 100644
index 0000000..7871fc6
--- /dev/null
+++ b/services/surfaceflinger/LayerStats.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2018 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.
+ */
+
+#pragma once
+
+#include <layerproto/LayerProtoHeader.h>
+#include <layerproto/LayerProtoParser.h>
+#include <mutex>
+#include <unordered_map>
+
+using namespace android::surfaceflinger;
+
+namespace android {
+class String8;
+
+class LayerStats {
+public:
+ void enable();
+ void disable();
+ void clear();
+ bool isEnabled();
+ void logLayerStats(const LayersProto& layersProto);
+ void dump(String8& result);
+
+private:
+ // Traverse layer tree to get all visible layers' stats
+ void traverseLayerTreeStatsLocked(
+ std::vector<std::unique_ptr<LayerProtoParser::Layer>> layerTree,
+ const LayerProtoParser::LayerGlobal* layerGlobal,
+ std::vector<std::string>& layerShapeVec);
+ // Convert layer's top-left position into 8x8 percentage of the display
+ static const char* destinationLocation(int32_t location, int32_t range, bool isHorizontal);
+ // Convert layer's size into 8x8 percentage of the display
+ static const char* destinationSize(int32_t size, int32_t range, bool isWidth);
+ // Return the name of the transform
+ static const char* layerTransform(int32_t transform);
+ // Return the name of the composition type
+ static const char* layerCompositionType(int32_t compositionType);
+ // Return the name of the pixel format
+ static const char* layerPixelFormat(int32_t pixelFormat);
+ // Calculate scale ratios of layer's width/height with rotation information
+ static std::string scaleRatioWH(const LayerProtoParser::Layer* layer);
+ // Calculate scale ratio from source to destination and convert to string
+ static const char* scaleRatio(int32_t destinationScale, int32_t sourceScale);
+ // Bucket the alpha into designed buckets
+ static const char* alpha(float a);
+ // Return whether the original buffer is rotated in final composition
+ static bool isRotated(int32_t transform);
+ // Return whether the original buffer is V-flipped in final composition
+ static bool isVFlipped(int32_t transform);
+ // Return whether the original buffer is H-flipped in final composition
+ static bool isHFlipped(int32_t transform);
+
+ bool mEnabled = false;
+ // Protect mLayersStatsMap
+ std::mutex mMutex;
+ // Hashmap for tracking the frame(layer shape) stats
+ // KEY is a concatenation of all layers' properties within a frame
+ // VALUE is the number of times this particular set has been scanned out
+ std::unordered_map<std::string, uint32_t> mLayerShapeStatsMap;
+};
+
+} // namespace android
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
index ea7dc2f..0fb3d28 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
@@ -109,6 +109,8 @@
namespace impl {
// ---------------------------------------------------------------------------
+using ui::Dataspace;
+
GLES20RenderEngine::GLES20RenderEngine(uint32_t featureFlags)
: mVpWidth(0), mVpHeight(0), mPlatformHasWideColor((featureFlags & WIDE_COLOR_SUPPORT) != 0) {
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize);
@@ -214,11 +216,11 @@
mState.setY410BT2020(enable);
}
-void GLES20RenderEngine::setSourceDataSpace(android_dataspace source) {
+void GLES20RenderEngine::setSourceDataSpace(Dataspace source) {
mDataSpace = source;
}
-void GLES20RenderEngine::setOutputDataSpace(android_dataspace dataspace) {
+void GLES20RenderEngine::setOutputDataSpace(Dataspace dataspace) {
mOutputDataSpace = dataspace;
}
@@ -291,6 +293,7 @@
}
void GLES20RenderEngine::drawMesh(const Mesh& mesh) {
+ ATRACE_CALL();
if (mesh.getTexCoordsSize()) {
glEnableVertexAttribArray(Program::texCoords);
glVertexAttribPointer(Program::texCoords, mesh.getTexCoordsSize(), GL_FLOAT, GL_FALSE,
@@ -300,15 +303,16 @@
glVertexAttribPointer(Program::position, mesh.getVertexSize(), GL_FLOAT, GL_FALSE,
mesh.getByteStride(), mesh.getPositions());
+ // TODO(b/73825729) Refactor this code block to handle BT2020 color space properly.
// DISPLAY_P3 is the only supported wide color output
- if (mPlatformHasWideColor && mOutputDataSpace == HAL_DATASPACE_DISPLAY_P3) {
+ if (mPlatformHasWideColor && mOutputDataSpace == Dataspace::DISPLAY_P3) {
Description wideColorState = mState;
- switch (int(mDataSpace)) {
- case HAL_DATASPACE_DISPLAY_P3:
+ switch (mDataSpace) {
+ case Dataspace::DISPLAY_P3:
// input matches output
break;
- case HAL_DATASPACE_BT2020_PQ:
- case HAL_DATASPACE_BT2020_ITU_PQ:
+ case Dataspace::BT2020_PQ:
+ case Dataspace::BT2020_ITU_PQ:
wideColorState.setColorMatrix(mState.getColorMatrix() * mBt2020ToDisplayP3);
wideColorState.setInputTransferFunction(Description::TransferFunction::ST2084);
wideColorState.setOutputTransferFunction(Description::TransferFunction::SRGB);
@@ -317,7 +321,7 @@
default:
// treat all other dataspaces as sRGB
wideColorState.setColorMatrix(mState.getColorMatrix() * mSrgbToDisplayP3);
- if ((mDataSpace & HAL_DATASPACE_TRANSFER_MASK) == HAL_DATASPACE_TRANSFER_LINEAR) {
+ if ((mDataSpace & Dataspace::TRANSFER_MASK) & Dataspace::TRANSFER_LINEAR) {
wideColorState.setInputTransferFunction(Description::TransferFunction::LINEAR);
} else {
wideColorState.setInputTransferFunction(Description::TransferFunction::SRGB);
@@ -350,8 +354,8 @@
void GLES20RenderEngine::dump(String8& result) {
RenderEngine::dump(result);
result.appendFormat("RenderEngine last dataspace conversion: (%s) to (%s)\n",
- dataspaceDetails(mDataSpace).c_str(),
- dataspaceDetails(mOutputDataSpace).c_str());
+ dataspaceDetails(static_cast<android_dataspace>(mDataSpace)).c_str(),
+ dataspaceDetails(static_cast<android_dataspace>(mOutputDataSpace)).c_str());
}
// ---------------------------------------------------------------------------
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.h b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.h
index db3f792..99da19d 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.h
@@ -73,14 +73,14 @@
// Color management related functions and state
void setSourceY410BT2020(bool enable) override;
- void setSourceDataSpace(android_dataspace source) override;
- void setOutputDataSpace(android_dataspace dataspace) override;
+ void setSourceDataSpace(ui::Dataspace source) override;
+ void setOutputDataSpace(ui::Dataspace dataspace) override;
// Current dataspace of layer being rendered
- android_dataspace mDataSpace = HAL_DATASPACE_UNKNOWN;
+ ui::Dataspace mDataSpace = ui::Dataspace::UNKNOWN;
// Current output dataspace of the render engine
- android_dataspace mOutputDataSpace = HAL_DATASPACE_UNKNOWN;
+ ui::Dataspace mOutputDataSpace = ui::Dataspace::UNKNOWN;
// Currently only supporting sRGB, BT2020 and DisplayP3 color spaces
const bool mPlatformHasWideColor = false;
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.h b/services/surfaceflinger/RenderEngine/RenderEngine.h
index d140574..f78b230 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.h
@@ -119,8 +119,8 @@
// wide color support
virtual void setSourceY410BT2020(bool enable) = 0;
- virtual void setSourceDataSpace(android_dataspace source) = 0;
- virtual void setOutputDataSpace(android_dataspace dataspace) = 0;
+ virtual void setSourceDataSpace(ui::Dataspace source) = 0;
+ virtual void setOutputDataSpace(ui::Dataspace dataspace) = 0;
// drawing
virtual void drawMesh(const Mesh& mesh) = 0;
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index f180a3b..183c1eb 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -105,6 +105,8 @@
using namespace android::hardware::configstore;
using namespace android::hardware::configstore::V1_0;
using ui::ColorMode;
+using ui::Dataspace;
+using ui::RenderIntent;
namespace {
class ConditionalLock {
@@ -294,6 +296,12 @@
auto listSize = property_get_int32("debug.sf.max_igbp_list_size", int32_t(defaultListSize));
mMaxGraphicBufferProducerListSize = (listSize > 0) ? size_t(listSize) : defaultListSize;
+ property_get("debug.sf.early_phase_offset_ns", value, "0");
+ const int earlyWakeupOffsetOffsetNs = atoi(value);
+ ALOGI_IF(earlyWakeupOffsetOffsetNs != 0, "Enabling separate early offset");
+ mVsyncModulator.setPhaseOffsets(sfVsyncPhaseOffsetNs - earlyWakeupOffsetOffsetNs,
+ sfVsyncPhaseOffsetNs);
+
// We should be reading 'persist.sys.sf.color_saturation' here
// but since /data may be encrypted, we need to wait until after vold
// comes online to attempt to read the property. The property is
@@ -520,19 +528,10 @@
return;
}
- // Remove the listener with the old offset
- status_t err = mDispSync->removeEventListener(
- static_cast<DispSync::Callback*>(this));
+ status_t err = mDispSync->changePhaseOffset(static_cast<DispSync::Callback*>(this),
+ mPhaseOffset);
if (err != NO_ERROR) {
- ALOGE("error unregistering vsync callback: %s (%d)",
- strerror(-err), err);
- }
-
- // Add a listener with the new offset
- err = mDispSync->addEventListener(mName, mPhaseOffset,
- static_cast<DispSync::Callback*>(this));
- if (err != NO_ERROR) {
- ALOGE("error registering vsync callback: %s (%d)",
+ ALOGE("error changing vsync offset: %s (%d)",
strerror(-err), err);
}
}
@@ -621,6 +620,7 @@
mSFEventThread = std::make_unique<impl::EventThread>(mSfEventThreadSource.get(), *this, true,
"sfEventThread");
mEventQueue->setEventThread(mSFEventThread.get());
+ mVsyncModulator.setEventThread(mSFEventThread.get());
// Get a RenderEngine for the given display / config (can't fail)
getBE().mRenderEngine =
@@ -1006,7 +1006,7 @@
hw->getDisplayType());
hw->setActiveColorMode(mode);
- getHwComposer().setActiveColorMode(type, mode);
+ getHwComposer().setActiveColorMode(type, mode, RenderIntent::COLORIMETRIC);
}
@@ -1484,6 +1484,7 @@
setUpHWComposer();
doDebugFlashRegions();
doTracing("handleRefresh");
+ logLayerStats();
doComposition();
postComposition(refreshStartTime);
@@ -1495,6 +1496,7 @@
mHadClientComposition = mHadClientComposition ||
getBE().mHwc->hasClientComposition(displayDevice->getHwcDisplayId());
}
+ mVsyncModulator.setLastFrameUsedRenderEngine(mHadClientComposition);
mLayersWithQueuedFrames.clear();
}
@@ -1553,6 +1555,25 @@
}
}
+void SurfaceFlinger::logLayerStats() {
+ ATRACE_CALL();
+ if (CC_UNLIKELY(mLayerStats.isEnabled())) {
+ int32_t hwcId = -1;
+ for (size_t dpy = 0; dpy < mDisplays.size(); ++dpy) {
+ const sp<const DisplayDevice>& displayDevice(mDisplays[dpy]);
+ if (displayDevice->isPrimary()) {
+ hwcId = displayDevice->getHwcDisplayId();
+ break;
+ }
+ }
+ if (hwcId < 0) {
+ ALOGE("LayerStats: Hmmm, no primary display?");
+ return;
+ }
+ mLayerStats.logLayerStats(dumpVisibleLayersProtoInfo(hwcId));
+ }
+}
+
void SurfaceFlinger::preComposition(nsecs_t refreshStartTime)
{
ATRACE_CALL();
@@ -1817,7 +1838,7 @@
// pickColorMode translates a given dataspace into the best available color mode.
// Currently only support sRGB and Display-P3.
-ColorMode SurfaceFlinger::pickColorMode(android_dataspace dataSpace) const {
+ColorMode SurfaceFlinger::pickColorMode(Dataspace dataSpace) const {
if (mForceNativeColorMode) {
return ColorMode::NATIVE;
}
@@ -1825,47 +1846,48 @@
switch (dataSpace) {
// treat Unknown as regular SRGB buffer, since that's what the rest of the
// system expects.
- case HAL_DATASPACE_UNKNOWN:
- case HAL_DATASPACE_SRGB:
- case HAL_DATASPACE_V0_SRGB:
+ case Dataspace::UNKNOWN:
+ case Dataspace::SRGB:
+ case Dataspace::V0_SRGB:
return ColorMode::SRGB;
break;
- case HAL_DATASPACE_DISPLAY_P3:
+ case Dataspace::DISPLAY_P3:
return ColorMode::DISPLAY_P3;
break;
default:
// TODO (courtneygo): Do we want to assert an error here?
- ALOGE("No color mode mapping for %s (%#x)", dataspaceDetails(dataSpace).c_str(),
+ ALOGE("No color mode mapping for %s (%#x)",
+ dataspaceDetails(static_cast<android_dataspace>(dataSpace)).c_str(),
dataSpace);
return ColorMode::SRGB;
break;
}
}
-android_dataspace SurfaceFlinger::bestTargetDataSpace(
- android_dataspace a, android_dataspace b, bool hasHdr) const {
+Dataspace SurfaceFlinger::bestTargetDataSpace(
+ Dataspace a, Dataspace b, bool hasHdr) const {
// Only support sRGB and Display-P3 right now.
- if (a == HAL_DATASPACE_DISPLAY_P3 || b == HAL_DATASPACE_DISPLAY_P3) {
- return HAL_DATASPACE_DISPLAY_P3;
+ if (a == Dataspace::DISPLAY_P3 || b == Dataspace::DISPLAY_P3) {
+ return Dataspace::DISPLAY_P3;
}
- if (a == HAL_DATASPACE_V0_SCRGB_LINEAR || b == HAL_DATASPACE_V0_SCRGB_LINEAR) {
- return HAL_DATASPACE_DISPLAY_P3;
+ if (a == Dataspace::V0_SCRGB_LINEAR || b == Dataspace::V0_SCRGB_LINEAR) {
+ return Dataspace::DISPLAY_P3;
}
- if (a == HAL_DATASPACE_V0_SCRGB || b == HAL_DATASPACE_V0_SCRGB) {
- return HAL_DATASPACE_DISPLAY_P3;
+ if (a == Dataspace::V0_SCRGB || b == Dataspace::V0_SCRGB) {
+ return Dataspace::DISPLAY_P3;
}
if (!hasHdr) {
- if (a == HAL_DATASPACE_BT2020_PQ || b == HAL_DATASPACE_BT2020_PQ) {
- return HAL_DATASPACE_DISPLAY_P3;
+ if (a == Dataspace::BT2020_PQ || b == Dataspace::BT2020_PQ) {
+ return Dataspace::DISPLAY_P3;
}
- if (a == HAL_DATASPACE_BT2020_ITU_PQ || b == HAL_DATASPACE_BT2020_ITU_PQ) {
- return HAL_DATASPACE_DISPLAY_P3;
+ if (a == Dataspace::BT2020_ITU_PQ || b == Dataspace::BT2020_ITU_PQ) {
+ return Dataspace::DISPLAY_P3;
}
}
- return HAL_DATASPACE_V0_SRGB;
+ return Dataspace::V0_SRGB;
}
void SurfaceFlinger::setUpHWComposer() {
@@ -1940,13 +1962,14 @@
continue;
}
if (colorMatrix != mPreviousColorMatrix) {
+ displayDevice->setColorTransform(colorMatrix);
status_t result = getBE().mHwc->setColorTransform(hwcId, colorMatrix);
ALOGE_IF(result != NO_ERROR, "Failed to set color transform on "
"display %zd: %d", displayId, result);
}
for (auto& layer : displayDevice->getVisibleLayersSortedByZ()) {
- if ((layer->getDataSpace() == HAL_DATASPACE_BT2020_PQ ||
- layer->getDataSpace() == HAL_DATASPACE_BT2020_ITU_PQ) &&
+ if ((layer->getDataSpace() == Dataspace::BT2020_PQ ||
+ layer->getDataSpace() == Dataspace::BT2020_ITU_PQ) &&
!displayDevice->getHdrSupport()) {
layer->forceClientComposition(hwcId);
}
@@ -1962,14 +1985,14 @@
if (hasWideColorDisplay) {
ColorMode newColorMode;
- android_dataspace newDataSpace = HAL_DATASPACE_V0_SRGB;
+ Dataspace newDataSpace = Dataspace::V0_SRGB;
for (auto& layer : displayDevice->getVisibleLayersSortedByZ()) {
newDataSpace = bestTargetDataSpace(layer->getDataSpace(), newDataSpace,
displayDevice->getHdrSupport());
ALOGV("layer: %s, dataspace: %s (%#x), newDataSpace: %s (%#x)",
- layer->getName().string(), dataspaceDetails(layer->getDataSpace()).c_str(),
- layer->getDataSpace(), dataspaceDetails(newDataSpace).c_str(), newDataSpace);
+ layer->getName().string(), dataspaceDetails(static_cast<android_dataspace>(layer->getDataSpace())).c_str(),
+ layer->getDataSpace(), dataspaceDetails(static_cast<android_dataspace>(newDataSpace)).c_str(), newDataSpace);
}
newColorMode = pickColorMode(newDataSpace);
@@ -2098,6 +2121,7 @@
// with mStateLock held to guarantee that mCurrentState won't change
// until the transaction is committed.
+ mVsyncModulator.setTransactionStart(VSyncModulator::TransactionStart::NORMAL);
transactionFlags = getTransactionFlags(eTransactionMask);
handleTransactionLocked(transactionFlags);
@@ -2247,7 +2271,7 @@
defaultColorMode = ColorMode::SRGB;
}
setActiveColorModeInternal(hw, defaultColorMode);
- hw->setCompositionDataSpace(HAL_DATASPACE_UNKNOWN);
+ hw->setCompositionDataSpace(Dataspace::UNKNOWN);
hw->setLayerStack(state.layerStack);
hw->setProjection(state.orientation, state.viewport, state.frame);
hw->setDisplayName(state.displayName);
@@ -2350,7 +2374,7 @@
int intFormat = 0;
status = state.surface->query(NATIVE_WINDOW_FORMAT, &intFormat);
ALOGE_IF(status != NO_ERROR, "Unable to query format (%d)", status);
- auto format = static_cast<android_pixel_format_t>(intFormat);
+ auto format = static_cast<ui::PixelFormat>(intFormat);
getBE().mHwc->allocateVirtualDisplay(width, height, &format, &hwcId);
}
@@ -2424,7 +2448,7 @@
processDisplayHotplugEventsLocked();
}
- if (transactionFlags & (eTraversalNeeded|eDisplayTransactionNeeded)) {
+ if (transactionFlags & (eDisplayLayerStackChanged|eDisplayTransactionNeeded)) {
// The transform hint might have changed for some layers
// (either because a display has changed, or because a layer
// as changed).
@@ -2471,18 +2495,18 @@
}
}
- if (transactionFlags & eDisplayTransactionNeeded) {
- if (disp == nullptr) {
- // NOTE: TEMPORARY FIX ONLY. Real fix should cause layers to
- // redraw after transform hint changes. See bug 8508397.
+ if (disp == nullptr) {
+ // NOTE: TEMPORARY FIX ONLY. Real fix should cause layers to
+ // redraw after transform hint changes. See bug 8508397.
- // could be null when this layer is using a layerStack
- // that is not visible on any display. Also can occur at
- // screen off/on times.
- disp = getDefaultDisplayDeviceLocked();
- }
- layer->updateTransformHint(disp);
+ // could be null when this layer is using a layerStack
+ // that is not visible on any display. Also can occur at
+ // screen off/on times.
+ disp = getDefaultDisplayDeviceLocked();
}
+
+ // disp can be null if there is no display available at all to get
+ // the transform hint from.
if (disp != nullptr) {
layer->updateTransformHint(disp);
}
@@ -2811,10 +2835,10 @@
if (hasClientComposition) {
ALOGV("hasClientComposition");
- android_dataspace outputDataspace = HAL_DATASPACE_UNKNOWN;
+ Dataspace outputDataspace = Dataspace::UNKNOWN;
if (displayDevice->getWideColorSupport() &&
displayDevice->getActiveColorMode() == ColorMode::DISPLAY_P3) {
- outputDataspace = HAL_DATASPACE_DISPLAY_P3;
+ outputDataspace = Dataspace::DISPLAY_P3;
}
getBE().mRenderEngine->setOutputDataSpace(outputDataspace);
@@ -3046,7 +3070,13 @@
}
uint32_t SurfaceFlinger::setTransactionFlags(uint32_t flags) {
+ return setTransactionFlags(flags, VSyncModulator::TransactionStart::NORMAL);
+}
+
+uint32_t SurfaceFlinger::setTransactionFlags(uint32_t flags,
+ VSyncModulator::TransactionStart transactionStart) {
uint32_t old = android_atomic_or(flags, &mTransactionFlags);
+ mVsyncModulator.setTransactionStart(transactionStart);
if ((old & flags)==0) { // wake the server up
signalTransaction();
}
@@ -3135,7 +3165,10 @@
}
// this triggers the transaction
- setTransactionFlags(transactionFlags);
+ const auto start = (flags & eEarlyWakeup)
+ ? VSyncModulator::TransactionStart::EARLY
+ : VSyncModulator::TransactionStart::NORMAL;
+ setTransactionFlags(transactionFlags, start);
// if this is a synchronous transaction, wait for it to take effect
// before returning.
@@ -3317,7 +3350,7 @@
mCurrentState.layersSortedByZ.add(layer);
// we need traversal (state changed)
// AND transaction (list changed)
- flags |= eTransactionNeeded|eTraversalNeeded;
+ flags |= eTransactionNeeded|eTraversalNeeded|eDisplayLayerStackChanged;
}
}
if (what & layer_state_t::eDeferTransaction) {
@@ -3772,6 +3805,34 @@
dumpWideColorInfo(result);
dumpAll = false;
}
+
+ if ((index < numArgs) &&
+ (args[index] == String16("--enable-layer-stats"))) {
+ index++;
+ mLayerStats.enable();
+ dumpAll = false;
+ }
+
+ if ((index < numArgs) &&
+ (args[index] == String16("--disable-layer-stats"))) {
+ index++;
+ mLayerStats.disable();
+ dumpAll = false;
+ }
+
+ if ((index < numArgs) &&
+ (args[index] == String16("--clear-layer-stats"))) {
+ index++;
+ mLayerStats.clear();
+ dumpAll = false;
+ }
+
+ if ((index < numArgs) &&
+ (args[index] == String16("--dump-layer-stats"))) {
+ index++;
+ mLayerStats.dump(result);
+ dumpAll = false;
+ }
}
if (dumpAll) {
@@ -3979,6 +4040,29 @@
return layersProto;
}
+LayersProto SurfaceFlinger::dumpVisibleLayersProtoInfo(int32_t hwcId) const {
+ LayersProto layersProto;
+ const sp<DisplayDevice>& displayDevice(mDisplays[hwcId]);
+
+ SizeProto* resolution = layersProto.mutable_resolution();
+ resolution->set_w(displayDevice->getWidth());
+ resolution->set_h(displayDevice->getHeight());
+
+ layersProto.set_color_mode(decodeColorMode(displayDevice->getActiveColorMode()));
+ layersProto.set_color_transform(decodeColorTransform(displayDevice->getColorTransform()));
+ layersProto.set_global_transform(
+ static_cast<int32_t>(displayDevice->getOrientationTransform()));
+
+ mDrawingState.traverseInZOrder([&](Layer* layer) {
+ if (!layer->visibleRegion.isEmpty() && layer->getBE().mHwcLayers.count(hwcId)) {
+ LayerProto* layerProto = layersProto.add_layers();
+ layer->writeToProto(layerProto, hwcId);
+ }
+ });
+
+ return layersProto;
+}
+
void SurfaceFlinger::dumpAllLocked(const Vector<String16>& args, size_t& index,
String8& result) const
{
@@ -4024,9 +4108,9 @@
colorizer.bold(result);
result.append("DispSync configuration: ");
colorizer.reset(result);
- result.appendFormat("app phase %" PRId64 " ns, sf phase %" PRId64 " ns, "
- "present offset %" PRId64 " ns (refresh %" PRId64 " ns)",
- vsyncPhaseOffsetNs, sfVsyncPhaseOffsetNs,
+ result.appendFormat("app phase %" PRId64 " ns, sf phase %" PRId64 " ns, early sf phase %" PRId64
+ " ns, present offset %" PRId64 " ns (refresh %" PRId64 " ns)",
+ vsyncPhaseOffsetNs, sfVsyncPhaseOffsetNs, mVsyncModulator.getEarlyPhaseOffset(),
dispSyncPresentTimeOffset, activeConfig->getVsyncPeriod());
result.append("\n");
@@ -4458,6 +4542,11 @@
void SurfaceFlinger::repaintEverythingLocked() {
android_atomic_or(1, &mRepaintEverything);
+ for (size_t dpy = 0; dpy < mDisplays.size(); dpy++) {
+ const sp<DisplayDevice>& displayDevice(mDisplays[dpy]);
+ const Rect bounds(displayDevice->getBounds());
+ displayDevice->dirtyRegion.orSelf(Region(bounds));
+ }
signalTransaction();
}
@@ -4730,10 +4819,10 @@
ALOGE("Invalid crop rect: b = %d (> %d)", sourceCrop.bottom, raHeight);
}
- android_dataspace outputDataspace = HAL_DATASPACE_UNKNOWN;
+ Dataspace outputDataspace = Dataspace::UNKNOWN;
if (renderArea.getWideColorSupport() &&
renderArea.getActiveColorMode() == ColorMode::DISPLAY_P3) {
- outputDataspace = HAL_DATASPACE_DISPLAY_P3;
+ outputDataspace = Dataspace::DISPLAY_P3;
}
getBE().mRenderEngine->setOutputDataSpace(outputDataspace);
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 448509b..a29d1d7 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -33,6 +33,7 @@
#include <utils/RefBase.h>
#include <utils/SortedVector.h>
#include <utils/threads.h>
+#include <utils/Trace.h>
#include <ui/FenceTime.h>
#include <ui/PixelFormat.h>
@@ -54,12 +55,15 @@
#include "Barrier.h"
#include "DisplayDevice.h"
#include "DispSync.h"
+#include "EventThread.h"
#include "FrameTracker.h"
+#include "LayerStats.h"
#include "LayerVector.h"
#include "MessageQueue.h"
#include "SurfaceInterceptor.h"
#include "SurfaceTracing.h"
#include "StartPropertySetThread.h"
+#include "VSyncModulator.h"
#include "DisplayHardware/HWC2.h"
#include "DisplayHardware/HWComposer.h"
@@ -115,7 +119,8 @@
eTransactionNeeded = 0x01,
eTraversalNeeded = 0x02,
eDisplayTransactionNeeded = 0x04,
- eTransactionMask = 0x07
+ eDisplayLayerStackChanged = 0x08,
+ eTransactionMask = 0x0f,
};
// A thin interface to abstract creating instances of Surface (gui/Surface.h) to
@@ -490,6 +495,7 @@
uint32_t peekTransactionFlags();
// Can only be called from the main thread or with mStateLock held
uint32_t setTransactionFlags(uint32_t flags);
+ uint32_t setTransactionFlags(uint32_t flags, VSyncModulator::TransactionStart transactionStart);
void commitTransaction();
bool containsAnyInvalidClientState(const Vector<ComposerState>& states);
uint32_t setClientStateLocked(const ComposerState& composerState);
@@ -635,8 +641,8 @@
// Given a dataSpace, returns the appropriate color_mode to use
// to display that dataSpace.
- ui::ColorMode pickColorMode(android_dataspace dataSpace) const;
- android_dataspace bestTargetDataSpace(android_dataspace a, android_dataspace b,
+ ui::ColorMode pickColorMode(ui::Dataspace dataSpace) const;
+ ui::Dataspace bestTargetDataSpace(ui::Dataspace a, ui::Dataspace b,
bool hasHdr) const;
mat4 computeSaturationMatrix() const;
@@ -645,6 +651,7 @@
void doComposition();
void doDebugFlashRegions();
void doTracing(const char* where);
+ void logLayerStats();
void doDisplayComposition(const sp<const DisplayDevice>& displayDevice, const Region& dirtyRegion);
// compose surfaces for display hw. this fails if using GL and the surface
@@ -711,6 +718,7 @@
void dumpBufferingStats(String8& result) const;
void dumpWideColorInfo(String8& result) const;
LayersProto dumpProtoInfo(LayerVector::StateSet stateSet) const;
+ LayersProto dumpVisibleLayersProtoInfo(int32_t hwcId) const;
bool isLayerTripleBufferingDisabled() const {
return this->mLayerTripleBufferingDisabled;
@@ -761,6 +769,8 @@
std::unique_ptr<EventControlThread> mEventControlThread;
sp<IBinder> mBuiltinDisplays[DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES];
+ VSyncModulator mVsyncModulator;
+
// Can only accessed from the main thread, these members
// don't need synchronization
State mDrawingState{LayerVector::StateSet::Drawing};
@@ -797,6 +807,7 @@
std::unique_ptr<SurfaceInterceptor> mInterceptor =
std::make_unique<impl::SurfaceInterceptor>(this);
SurfaceTracing mTracing;
+ LayerStats mLayerStats;
bool mUseHwcVirtualDisplays = false;
// Restrict layers to use two buffers in their bufferqueues.
diff --git a/services/surfaceflinger/VSyncModulator.h b/services/surfaceflinger/VSyncModulator.h
new file mode 100644
index 0000000..3126deb
--- /dev/null
+++ b/services/surfaceflinger/VSyncModulator.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2018 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.
+ */
+
+#pragma once
+
+#include <utils/Errors.h>
+
+#include <mutex>
+
+using namespace android::surfaceflinger;
+
+namespace android {
+
+/*
+ * Modulates the vsync-offsets depending on current SurfaceFlinger state.
+ */
+class VSyncModulator {
+public:
+
+ enum TransactionStart {
+ EARLY,
+ NORMAL
+ };
+
+ // Sets the phase offsets
+ //
+ // early: the phase offset when waking up early. May be the same as late, in which case we don't
+ // shift offsets.
+ // late: the regular sf phase offset.
+ void setPhaseOffsets(nsecs_t early, nsecs_t late) {
+ mEarlyPhaseOffset = early;
+ mLatePhaseOffset = late;
+ mPhaseOffset = late;
+ }
+
+ nsecs_t getEarlyPhaseOffset() const {
+ return mEarlyPhaseOffset;
+ }
+
+ void setEventThread(EventThread* eventThread) {
+ mEventThread = eventThread;
+ }
+
+ void setTransactionStart(TransactionStart transactionStart) {
+ if (transactionStart == mTransactionStart) return;
+ mTransactionStart = transactionStart;
+ updatePhaseOffsets();
+ }
+
+ void setLastFrameUsedRenderEngine(bool re) {
+ if (re == mLastFrameUsedRenderEngine) return;
+ mLastFrameUsedRenderEngine = re;
+ updatePhaseOffsets();
+ }
+
+private:
+
+ void updatePhaseOffsets() {
+
+ // Do not change phase offsets if disabled.
+ if (mEarlyPhaseOffset == mLatePhaseOffset) return;
+
+ if (mTransactionStart == TransactionStart::EARLY || mLastFrameUsedRenderEngine) {
+ if (mPhaseOffset != mEarlyPhaseOffset) {
+ if (mEventThread) {
+ mEventThread->setPhaseOffset(mEarlyPhaseOffset);
+ }
+ mPhaseOffset = mEarlyPhaseOffset;
+ }
+ } else {
+ if (mPhaseOffset != mLatePhaseOffset) {
+ if (mEventThread) {
+ mEventThread->setPhaseOffset(mLatePhaseOffset);
+ }
+ mPhaseOffset = mLatePhaseOffset;
+ }
+ }
+ }
+
+ nsecs_t mLatePhaseOffset = 0;
+ nsecs_t mEarlyPhaseOffset = 0;
+ EventThread* mEventThread = nullptr;
+ std::atomic<nsecs_t> mPhaseOffset = 0;
+ std::atomic<TransactionStart> mTransactionStart = TransactionStart::NORMAL;
+ std::atomic<bool> mLastFrameUsedRenderEngine = false;
+};
+
+} // namespace android
diff --git a/services/surfaceflinger/layerproto/LayerProtoParser.cpp b/services/surfaceflinger/layerproto/LayerProtoParser.cpp
index 1383d28..fcf42f0 100644
--- a/services/surfaceflinger/layerproto/LayerProtoParser.cpp
+++ b/services/surfaceflinger/layerproto/LayerProtoParser.cpp
@@ -42,6 +42,16 @@
return sortLayers(lhs.get(), rhs.get());
}
+const LayerProtoParser::LayerGlobal LayerProtoParser::generateLayerGlobalInfo(
+ const LayersProto& layersProto) {
+ LayerGlobal layerGlobal;
+ layerGlobal.resolution = {layersProto.resolution().w(), layersProto.resolution().h()};
+ layerGlobal.colorMode = layersProto.color_mode();
+ layerGlobal.colorTransform = layersProto.color_transform();
+ layerGlobal.globalTransform = layersProto.global_transform();
+ return layerGlobal;
+}
+
std::vector<std::unique_ptr<LayerProtoParser::Layer>> LayerProtoParser::generateLayerTree(
const LayersProto& layersProto) {
std::unordered_map<int32_t, LayerProtoParser::Layer*> layerMap = generateMap(layersProto);
@@ -106,8 +116,13 @@
layer->activeBuffer = generateActiveBuffer(layerProto.active_buffer());
layer->queuedFrames = layerProto.queued_frames();
layer->refreshPending = layerProto.refresh_pending();
+ layer->hwcFrame = generateRect(layerProto.hwc_frame());
+ layer->hwcCrop = generateFloatRect(layerProto.hwc_crop());
+ layer->hwcTransform = layerProto.hwc_transform();
layer->windowType = layerProto.window_type();
layer->appId = layerProto.app_id();
+ layer->hwcCompositionType = layerProto.hwc_composition_type();
+ layer->isProtected = layerProto.is_protected();
return layer;
}
@@ -133,6 +148,16 @@
return rect;
}
+LayerProtoParser::FloatRect LayerProtoParser::generateFloatRect(const FloatRectProto& rectProto) {
+ LayerProtoParser::FloatRect rect;
+ rect.left = rectProto.left();
+ rect.top = rectProto.top();
+ rect.right = rectProto.right();
+ rect.bottom = rectProto.bottom();
+
+ return rect;
+}
+
LayerProtoParser::Transform LayerProtoParser::generateTransform(
const TransformProto& transformProto) {
LayerProtoParser::Transform transform;
@@ -246,6 +271,10 @@
return StringPrintf("[%3d, %3d, %3d, %3d]", left, top, right, bottom);
}
+std::string LayerProtoParser::FloatRect::to_string() const {
+ return StringPrintf("[%.2f, %.2f, %.2f, %.2f]", left, top, right, bottom);
+}
+
std::string LayerProtoParser::Region::to_string(const char* what) const {
std::string result =
StringPrintf(" Region %s (this=%lx count=%d)\n", what, static_cast<unsigned long>(id),
diff --git a/services/surfaceflinger/layerproto/include/layerproto/LayerProtoParser.h b/services/surfaceflinger/layerproto/include/layerproto/LayerProtoParser.h
index b56a6fb..74a6f28 100644
--- a/services/surfaceflinger/layerproto/include/layerproto/LayerProtoParser.h
+++ b/services/surfaceflinger/layerproto/include/layerproto/LayerProtoParser.h
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#pragma once
#include <layerproto/LayerProtoHeader.h>
@@ -57,6 +58,16 @@
std::string to_string() const;
};
+ class FloatRect {
+ public:
+ float left;
+ float top;
+ float right;
+ float bottom;
+
+ std::string to_string() const;
+ };
+
class Region {
public:
uint64_t id;
@@ -96,12 +107,26 @@
LayerProtoParser::ActiveBuffer activeBuffer;
int32_t queuedFrames;
bool refreshPending;
+ LayerProtoParser::Rect hwcFrame;
+ LayerProtoParser::FloatRect hwcCrop;
+ int32_t hwcTransform;
int32_t windowType;
int32_t appId;
+ int32_t hwcCompositionType;
+ bool isProtected;
std::string to_string() const;
};
+ class LayerGlobal {
+ public:
+ int2 resolution;
+ std::string colorMode;
+ std::string colorTransform;
+ int32_t globalTransform;
+ };
+
+ static const LayerGlobal generateLayerGlobalInfo(const LayersProto& layersProto);
static std::vector<std::unique_ptr<Layer>> generateLayerTree(const LayersProto& layersProto);
static std::string layersToString(std::vector<std::unique_ptr<LayerProtoParser::Layer>> layers);
@@ -110,6 +135,7 @@
static LayerProtoParser::Layer* generateLayer(const LayerProto& layerProto);
static LayerProtoParser::Region generateRegion(const RegionProto& regionProto);
static LayerProtoParser::Rect generateRect(const RectProto& rectProto);
+ static LayerProtoParser::FloatRect generateFloatRect(const FloatRectProto& rectProto);
static LayerProtoParser::Transform generateTransform(const TransformProto& transformProto);
static LayerProtoParser::ActiveBuffer generateActiveBuffer(
const ActiveBufferProto& activeBufferProto);
diff --git a/services/surfaceflinger/layerproto/layers.proto b/services/surfaceflinger/layerproto/layers.proto
index f18386b..77c6675 100644
--- a/services/surfaceflinger/layerproto/layers.proto
+++ b/services/surfaceflinger/layerproto/layers.proto
@@ -7,6 +7,10 @@
// Contains a list of all layers.
message LayersProto {
repeated LayerProto layers = 1;
+ optional SizeProto resolution = 2;
+ optional string color_mode = 3;
+ optional string color_transform = 4;
+ optional int32 global_transform = 5;
}
// Information about each layer.
@@ -64,8 +68,18 @@
// The number of frames available.
optional int32 queued_frames = 28;
optional bool refresh_pending = 29;
- optional int32 window_type = 30;
- optional int32 app_id = 31;
+ // The layer's composer backend destination frame
+ optional RectProto hwc_frame = 30;
+ // The layer's composer backend source crop
+ optional FloatRectProto hwc_crop = 31;
+ // The layer's composer backend transform
+ optional int32 hwc_transform = 32;
+ optional int32 window_type = 33;
+ optional int32 app_id = 34;
+ // The layer's composition type
+ optional int32 hwc_composition_type = 35;
+ // If it's a buffer layer, indicate if the content is protected
+ optional bool is_protected = 36;
}
message PositionProto {
@@ -97,6 +111,13 @@
optional int32 bottom = 4;
}
+message FloatRectProto {
+ optional float left = 1;
+ optional float top = 2;
+ optional float right = 3;
+ optional float bottom = 4;
+}
+
message ActiveBufferProto {
optional uint32 width = 1;
optional uint32 height = 2;
@@ -109,4 +130,4 @@
optional float g = 2;
optional float b = 3;
optional float a = 4;
-}
\ No newline at end of file
+}
diff --git a/services/surfaceflinger/tests/hwc2/Android.bp b/services/surfaceflinger/tests/hwc2/Android.bp
index e980522..6c0e4ab 100644
--- a/services/surfaceflinger/tests/hwc2/Android.bp
+++ b/services/surfaceflinger/tests/hwc2/Android.bp
@@ -42,6 +42,7 @@
],
shared_libs: [
"android.hardware.graphics.common@1.0",
+ "android.hardware.graphics.common@1.1",
"libcutils",
"libEGL",
"libGLESv2",
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2Test.cpp b/services/surfaceflinger/tests/hwc2/Hwc2Test.cpp
index b3f1b69..13774b4 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2Test.cpp
+++ b/services/surfaceflinger/tests/hwc2/Hwc2Test.cpp
@@ -36,6 +36,7 @@
#include "Hwc2TestVirtualDisplay.h"
using android::ui::ColorMode;
+using android::ui::Dataspace;
void hwc2TestHotplugCallback(hwc2_callback_data_t callbackData,
hwc2_display_t display, int32_t connected);
@@ -442,14 +443,14 @@
}
void setLayerDataspace(hwc2_display_t display, hwc2_layer_t layer,
- android_dataspace_t dataspace, hwc2_error_t* outErr = nullptr)
+ Dataspace dataspace, hwc2_error_t* outErr = nullptr)
{
auto pfn = reinterpret_cast<HWC2_PFN_SET_LAYER_DATASPACE>(
getFunction(HWC2_FUNCTION_SET_LAYER_DATASPACE));
ASSERT_TRUE(pfn) << "failed to get function";
auto err = static_cast<hwc2_error_t>(pfn(mHwc2Device, display,
- layer, dataspace));
+ layer, static_cast<int>(dataspace)));
if (outErr) {
*outErr = err;
} else {
@@ -790,14 +791,14 @@
void getClientTargetSupport(hwc2_display_t display, int32_t width,
int32_t height, android_pixel_format_t format,
- android_dataspace_t dataspace, hwc2_error_t* outErr = nullptr)
+ Dataspace dataspace, hwc2_error_t* outErr = nullptr)
{
auto pfn = reinterpret_cast<HWC2_PFN_GET_CLIENT_TARGET_SUPPORT>(
getFunction(HWC2_FUNCTION_GET_CLIENT_TARGET_SUPPORT));
ASSERT_TRUE(pfn) << "failed to get function";
auto err = static_cast<hwc2_error_t>(pfn(mHwc2Device, display, width,
- height, format, dataspace));
+ height, format, static_cast<int>(dataspace)));
if (outErr) {
*outErr = err;
} else {
@@ -807,7 +808,7 @@
}
void setClientTarget(hwc2_display_t display, buffer_handle_t handle,
- int32_t acquireFence, android_dataspace_t dataspace,
+ int32_t acquireFence, Dataspace dataspace,
hwc_region_t damage, hwc2_error_t* outErr = nullptr)
{
auto pfn = reinterpret_cast<HWC2_PFN_SET_CLIENT_TARGET>(
@@ -815,7 +816,7 @@
ASSERT_TRUE(pfn) << "failed to get function";
auto err = static_cast<hwc2_error_t>(pfn(mHwc2Device, display, handle,
- acquireFence, dataspace, damage));
+ acquireFence, static_cast<int>(dataspace), damage));
if (outErr) {
*outErr = err;
} else {
@@ -1691,7 +1692,7 @@
const std::set<hwc2_layer_t>& clearLayers, bool flipClientTarget,
const Area& displayArea)
{
- android_dataspace_t dataspace = HAL_DATASPACE_UNKNOWN;
+ Dataspace dataspace = Dataspace::UNKNOWN;
hwc_region_t damage = { };
buffer_handle_t handle;
int32_t acquireFence;
@@ -3716,7 +3717,7 @@
* layer. */
TEST_F(Hwc2Test, SET_CLIENT_TARGET_basic)
{
- const android_dataspace_t dataspace = HAL_DATASPACE_UNKNOWN;
+ const Dataspace dataspace = Dataspace::UNKNOWN;
const hwc_region_t damage = { };
const size_t layerCnt = 1;
@@ -3795,7 +3796,7 @@
std::set<hwc2_layer_t> clientLayers;
std::set<hwc2_layer_t> flipClientTargetLayers;
bool flipClientTarget = true;
- const android_dataspace_t dataspace = HAL_DATASPACE_UNKNOWN;
+ const Dataspace dataspace = Dataspace::UNKNOWN;
const hwc_region_t damage = { };
buffer_handle_t handle;
int32_t acquireFence;
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.cpp b/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.cpp
index 6925492..14c60a7 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.cpp
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.cpp
@@ -91,7 +91,7 @@
return mBufferArea.get();
}
-android_dataspace_t Hwc2TestClientTargetSupport::getDataspace() const
+android::ui::Dataspace Hwc2TestClientTargetSupport::getDataspace() const
{
return mDataspace.get();
}
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.h b/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.h
index 3b47978..6f4090f 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.h
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestClientTarget.h
@@ -53,7 +53,7 @@
bool advance();
Area getBufferArea() const;
- android_dataspace_t getDataspace() const;
+ android::ui::Dataspace getDataspace() const;
const hwc_region_t getSurfaceDamage() const;
private:
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.cpp b/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.cpp
index 937fce2..c1c9cc8 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.cpp
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.cpp
@@ -146,7 +146,7 @@
return mDisplayFrame.get();
}
-android_dataspace_t Hwc2TestLayer::getDataspace() const
+android::ui::Dataspace Hwc2TestLayer::getDataspace() const
{
return mDataspace.get();
}
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.h b/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.h
index 0e7dd22..29ae521 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.h
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestLayer.h
@@ -54,7 +54,7 @@
hwc_color_t getColor() const;
hwc2_composition_t getComposition() const;
hwc_rect_t getCursorPosition() const;
- android_dataspace_t getDataspace() const;
+ android::ui::Dataspace getDataspace() const;
hwc_rect_t getDisplayFrame() const;
float getPlaneAlpha() const;
hwc_frect_t getSourceCrop() const;
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.cpp b/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.cpp
index 495ef79..90127a1 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.cpp
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.cpp
@@ -169,7 +169,7 @@
return mTestLayers.at(layer).getCursorPosition();
}
-android_dataspace_t Hwc2TestLayers::getDataspace(hwc2_layer_t layer) const
+android::ui::Dataspace Hwc2TestLayers::getDataspace(hwc2_layer_t layer) const
{
if (mTestLayers.count(layer) == 0) {
[]() { GTEST_FAIL(); }();
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.h b/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.h
index d95a91f..909dd48 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.h
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestLayers.h
@@ -63,7 +63,7 @@
hwc_color_t getColor(hwc2_layer_t layer) const;
hwc2_composition_t getComposition(hwc2_layer_t layer) const;
hwc_rect_t getCursorPosition(hwc2_layer_t layer) const;
- android_dataspace_t getDataspace(hwc2_layer_t layer) const;
+ android::ui::Dataspace getDataspace(hwc2_layer_t layer) const;
hwc_rect_t getDisplayFrame(hwc2_layer_t layer) const;
android_pixel_format_t getFormat(hwc2_layer_t layer) const;
float getPlaneAlpha(hwc2_layer_t layer) const;
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp b/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp
index 5b3bbeb..c5b92d0 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp
@@ -262,62 +262,62 @@
std::string Hwc2TestDataspace::dump() const
{
std::stringstream dmp;
- dmp << "\tdataspace: " << get() << "\n";
+ dmp << "\tdataspace: " << static_cast<int32_t>(get()) << "\n";
return dmp.str();
}
-const std::vector<android_dataspace_t> Hwc2TestDataspace::defaultDataspaces = {
- HAL_DATASPACE_UNKNOWN,
+const std::vector<android::ui::Dataspace> Hwc2TestDataspace::defaultDataspaces = {
+ android::ui::Dataspace::UNKNOWN,
};
-const std::vector<android_dataspace_t> Hwc2TestDataspace::basicDataspaces = {
- HAL_DATASPACE_UNKNOWN,
- HAL_DATASPACE_V0_SRGB,
+const std::vector<android::ui::Dataspace> Hwc2TestDataspace::basicDataspaces = {
+ android::ui::Dataspace::UNKNOWN,
+ android::ui::Dataspace::V0_SRGB,
};
-const std::vector<android_dataspace_t> Hwc2TestDataspace::completeDataspaces = {
- HAL_DATASPACE_UNKNOWN,
- HAL_DATASPACE_ARBITRARY,
- HAL_DATASPACE_STANDARD_SHIFT,
- HAL_DATASPACE_STANDARD_MASK,
- HAL_DATASPACE_STANDARD_UNSPECIFIED,
- HAL_DATASPACE_STANDARD_BT709,
- HAL_DATASPACE_STANDARD_BT601_625,
- HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED,
- HAL_DATASPACE_STANDARD_BT601_525,
- HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED,
- HAL_DATASPACE_STANDARD_BT2020,
- HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE,
- HAL_DATASPACE_STANDARD_BT470M,
- HAL_DATASPACE_STANDARD_FILM,
- HAL_DATASPACE_TRANSFER_SHIFT,
- HAL_DATASPACE_TRANSFER_MASK,
- HAL_DATASPACE_TRANSFER_UNSPECIFIED,
- HAL_DATASPACE_TRANSFER_LINEAR,
- HAL_DATASPACE_TRANSFER_SRGB,
- HAL_DATASPACE_TRANSFER_SMPTE_170M,
- HAL_DATASPACE_TRANSFER_GAMMA2_2,
- HAL_DATASPACE_TRANSFER_GAMMA2_8,
- HAL_DATASPACE_TRANSFER_ST2084,
- HAL_DATASPACE_TRANSFER_HLG,
- HAL_DATASPACE_RANGE_SHIFT,
- HAL_DATASPACE_RANGE_MASK,
- HAL_DATASPACE_RANGE_UNSPECIFIED,
- HAL_DATASPACE_RANGE_FULL,
- HAL_DATASPACE_RANGE_LIMITED,
- HAL_DATASPACE_SRGB_LINEAR,
- HAL_DATASPACE_V0_SRGB_LINEAR,
- HAL_DATASPACE_SRGB,
- HAL_DATASPACE_V0_SRGB,
- HAL_DATASPACE_JFIF,
- HAL_DATASPACE_V0_JFIF,
- HAL_DATASPACE_BT601_625,
- HAL_DATASPACE_V0_BT601_625,
- HAL_DATASPACE_BT601_525,
- HAL_DATASPACE_V0_BT601_525,
- HAL_DATASPACE_BT709,
- HAL_DATASPACE_V0_BT709,
- HAL_DATASPACE_DEPTH,
+const std::vector<android::ui::Dataspace> Hwc2TestDataspace::completeDataspaces = {
+ android::ui::Dataspace::UNKNOWN,
+ android::ui::Dataspace::ARBITRARY,
+ android::ui::Dataspace::STANDARD_SHIFT,
+ android::ui::Dataspace::STANDARD_MASK,
+ android::ui::Dataspace::STANDARD_UNSPECIFIED,
+ android::ui::Dataspace::STANDARD_BT709,
+ android::ui::Dataspace::STANDARD_BT601_625,
+ android::ui::Dataspace::STANDARD_BT601_625_UNADJUSTED,
+ android::ui::Dataspace::STANDARD_BT601_525,
+ android::ui::Dataspace::STANDARD_BT601_525_UNADJUSTED,
+ android::ui::Dataspace::STANDARD_BT2020,
+ android::ui::Dataspace::STANDARD_BT2020_CONSTANT_LUMINANCE,
+ android::ui::Dataspace::STANDARD_BT470M,
+ android::ui::Dataspace::STANDARD_FILM,
+ android::ui::Dataspace::TRANSFER_SHIFT,
+ android::ui::Dataspace::TRANSFER_MASK,
+ android::ui::Dataspace::TRANSFER_UNSPECIFIED,
+ android::ui::Dataspace::TRANSFER_LINEAR,
+ android::ui::Dataspace::TRANSFER_SRGB,
+ android::ui::Dataspace::TRANSFER_SMPTE_170M,
+ android::ui::Dataspace::TRANSFER_GAMMA2_2,
+ android::ui::Dataspace::TRANSFER_GAMMA2_8,
+ android::ui::Dataspace::TRANSFER_ST2084,
+ android::ui::Dataspace::TRANSFER_HLG,
+ android::ui::Dataspace::RANGE_SHIFT,
+ android::ui::Dataspace::RANGE_MASK,
+ android::ui::Dataspace::RANGE_UNSPECIFIED,
+ android::ui::Dataspace::RANGE_FULL,
+ android::ui::Dataspace::RANGE_LIMITED,
+ android::ui::Dataspace::SRGB_LINEAR,
+ android::ui::Dataspace::V0_SRGB_LINEAR,
+ android::ui::Dataspace::SRGB,
+ android::ui::Dataspace::V0_SRGB,
+ android::ui::Dataspace::JFIF,
+ android::ui::Dataspace::V0_JFIF,
+ android::ui::Dataspace::BT601_625,
+ android::ui::Dataspace::V0_BT601_625,
+ android::ui::Dataspace::BT601_525,
+ android::ui::Dataspace::V0_BT601_525,
+ android::ui::Dataspace::BT709,
+ android::ui::Dataspace::V0_BT709,
+ android::ui::Dataspace::DEPTH,
};
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.h b/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.h
index cb811e0..d7082f3 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.h
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.h
@@ -20,6 +20,7 @@
#include <array>
#include <vector>
+#include <ui/GraphicTypes.h>
#include <ui/Region.h>
#define HWC2_INCLUDE_STRINGIFICATION
@@ -229,16 +230,16 @@
};
-class Hwc2TestDataspace : public Hwc2TestProperty<android_dataspace_t> {
+class Hwc2TestDataspace : public Hwc2TestProperty<android::ui::Dataspace> {
public:
Hwc2TestDataspace(Hwc2TestCoverage coverage);
std::string dump() const override;
protected:
- static const std::vector<android_dataspace_t> defaultDataspaces;
- static const std::vector<android_dataspace_t> basicDataspaces;
- static const std::vector<android_dataspace_t> completeDataspaces;
+ static const std::vector<android::ui::Dataspace> defaultDataspaces;
+ static const std::vector<android::ui::Dataspace> basicDataspaces;
+ static const std::vector<android::ui::Dataspace> completeDataspaces;
static const std::array<bool, 6> mCompositionSupport;
};
diff --git a/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp b/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp
index c048c58..0705b5c 100644
--- a/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp
+++ b/services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp
@@ -46,8 +46,8 @@
using testing::Return;
using testing::SetArgPointee;
-using android::hardware::graphics::common::V1_0::ColorMode;
using android::hardware::graphics::common::V1_0::Hdr;
+using android::hardware::graphics::common::V1_1::ColorMode;
using android::Hwc2::Error;
using android::Hwc2::IComposer;
using android::Hwc2::IComposerClient;
diff --git a/services/surfaceflinger/tests/unittests/MockComposer.h b/services/surfaceflinger/tests/unittests/MockComposer.h
index acd9b30..8be2779 100644
--- a/services/surfaceflinger/tests/unittests/MockComposer.h
+++ b/services/surfaceflinger/tests/unittests/MockComposer.h
@@ -27,12 +27,13 @@
namespace Hwc2 {
namespace mock {
-using android::hardware::graphics::common::V1_0::ColorMode;
using android::hardware::graphics::common::V1_0::ColorTransform;
-using android::hardware::graphics::common::V1_0::Dataspace;
using android::hardware::graphics::common::V1_0::Hdr;
-using android::hardware::graphics::common::V1_0::PixelFormat;
using android::hardware::graphics::common::V1_0::Transform;
+using android::hardware::graphics::common::V1_1::ColorMode;
+using android::hardware::graphics::common::V1_1::Dataspace;
+using android::hardware::graphics::common::V1_1::PixelFormat;
+using android::hardware::graphics::common::V1_1::RenderIntent;
using android::hardware::graphics::composer::V2_1::Config;
using android::hardware::graphics::composer::V2_1::Display;
@@ -75,13 +76,14 @@
MOCK_METHOD5(getHdrCapabilities, Error(Display, std::vector<Hdr>*, float*, float*, float*));
MOCK_METHOD2(getPerFrameMetadataKeys,
Error(Display, std::vector<IComposerClient::PerFrameMetadataKey>*));
+ MOCK_METHOD2(getDataspaceSaturationMatrix, Error(Dataspace, mat4*));
MOCK_METHOD3(getReleaseFences, Error(Display, std::vector<Layer>*, std::vector<int>*));
MOCK_METHOD2(presentDisplay, Error(Display, int*));
MOCK_METHOD2(setActiveConfig, Error(Display, Config));
MOCK_METHOD6(setClientTarget,
Error(Display, uint32_t, const sp<GraphicBuffer>&, int, Dataspace,
const std::vector<IComposerClient::Rect>&));
- MOCK_METHOD2(setColorMode, Error(Display, ColorMode));
+ MOCK_METHOD3(setColorMode, Error(Display, ColorMode, RenderIntent));
MOCK_METHOD3(setColorTransform, Error(Display, const float*, ColorTransform));
MOCK_METHOD3(setOutputBuffer, Error(Display, const native_handle_t*, int));
MOCK_METHOD2(setPowerMode, Error(Display, IComposerClient::PowerMode));
@@ -107,6 +109,7 @@
Error(Display, Layer, const std::vector<IComposerClient::Rect>&));
MOCK_METHOD3(setLayerZOrder, Error(Display, Layer, uint32_t));
MOCK_METHOD4(setLayerInfo, Error(Display, Layer, uint32_t, uint32_t));
+ MOCK_METHOD3(getRenderIntents, Error(Display, ColorMode, std::vector<RenderIntent>*));
};
} // namespace mock
diff --git a/services/surfaceflinger/tests/unittests/MockRenderEngine.h b/services/surfaceflinger/tests/unittests/MockRenderEngine.h
index 6d3e17f..9bb2a3c 100644
--- a/services/surfaceflinger/tests/unittests/MockRenderEngine.h
+++ b/services/surfaceflinger/tests/unittests/MockRenderEngine.h
@@ -64,8 +64,8 @@
MOCK_METHOD0(disableTexturing, void());
MOCK_METHOD0(disableBlending, void());
MOCK_METHOD1(setSourceY410BT2020, void(bool));
- MOCK_METHOD1(setSourceDataSpace, void(android_dataspace));
- MOCK_METHOD1(setOutputDataSpace, void(android_dataspace));
+ MOCK_METHOD1(setSourceDataSpace, void(ui::Dataspace));
+ MOCK_METHOD1(setOutputDataSpace, void(ui::Dataspace));
MOCK_METHOD2(bindNativeBufferAsFrameBuffer,
void(ANativeWindowBuffer*, RE::BindNativeBufferAsFramebuffer*));
MOCK_METHOD1(unbindNativeBufferAsFrameBuffer, void(RE::BindNativeBufferAsFramebuffer*));
diff --git a/services/vr/bufferhubd/buffer_hub.cpp b/services/vr/bufferhubd/buffer_hub.cpp
index e4e19c7..72bf6f2 100644
--- a/services/vr/bufferhubd/buffer_hub.cpp
+++ b/services/vr/bufferhubd/buffer_hub.cpp
@@ -6,6 +6,7 @@
#include <utils/Trace.h>
#include <iomanip>
+#include <memory>
#include <sstream>
#include <string>
#include <thread>
@@ -13,6 +14,7 @@
#include <pdx/default_transport/service_endpoint.h>
#include <private/dvr/bufferhub_rpc.h>
#include "consumer_channel.h"
+#include "detached_buffer_channel.h"
#include "producer_channel.h"
#include "producer_queue_channel.h"
@@ -245,6 +247,11 @@
*this, &BufferHubService::OnCreateBuffer, message);
return {};
+ case DetachedBufferRPC::Create::Opcode:
+ DispatchRemoteMethod<DetachedBufferRPC::Create>(
+ *this, &BufferHubService::OnCreateDetachedBuffer, message);
+ return {};
+
case BufferHubRPC::CreateProducerQueue::Opcode:
DispatchRemoteMethod<BufferHubRPC::CreateProducerQueue>(
*this, &BufferHubService::OnCreateProducerQueue, message);
@@ -295,6 +302,43 @@
}
}
+pdx::Status<void> BufferHubService::OnCreateDetachedBuffer(
+ pdx::Message& message, uint32_t width, uint32_t height,
+ uint32_t layer_count, uint32_t format, uint64_t usage,
+ size_t user_metadata_size) {
+ // Use the producer channel id as the global buffer id.
+ const int buffer_id = message.GetChannelId();
+ ALOGD_IF(TRACE,
+ "BufferHubService::OnCreateDetachedBuffer: buffer_id=%d width=%u "
+ "height=%u layer_count=%u format=%u usage=%" PRIx64
+ " user_metadata_size=%zu",
+ buffer_id, width, height, layer_count, format, usage,
+ user_metadata_size);
+
+ // See if this channel is already attached to a buffer.
+ if (const auto channel = message.GetChannel<BufferHubChannel>()) {
+ ALOGE(
+ "BufferHubService::OnCreateDetachedBuffer: Buffer already created: "
+ "buffer=%d",
+ buffer_id);
+ return ErrorStatus(EALREADY);
+ }
+
+ std::unique_ptr<DetachedBufferChannel> channel =
+ DetachedBufferChannel::Create(this, buffer_id, width, height, layer_count,
+ format, usage, user_metadata_size);
+ if (!channel) {
+ ALOGE(
+ "BufferHubService::OnCreateDetachedBuffer: Failed to allocate buffer, "
+ "buffer=%d.",
+ buffer_id);
+ return ErrorStatus(ENOMEM);
+ }
+
+ message.SetChannel(std::move(channel));
+ return {};
+}
+
Status<QueueInfo> BufferHubService::OnCreateProducerQueue(
pdx::Message& message, const ProducerQueueConfig& producer_config,
const UsagePolicy& usage_policy) {
diff --git a/services/vr/bufferhubd/buffer_hub.h b/services/vr/bufferhubd/buffer_hub.h
index e04967a..e47ffa3 100644
--- a/services/vr/bufferhubd/buffer_hub.h
+++ b/services/vr/bufferhubd/buffer_hub.h
@@ -147,6 +147,11 @@
pdx::Status<void> OnCreateBuffer(pdx::Message& message, uint32_t width,
uint32_t height, uint32_t format,
uint64_t usage, size_t meta_size_bytes);
+ pdx::Status<void> OnCreateDetachedBuffer(pdx::Message& message,
+ uint32_t width, uint32_t height,
+ uint32_t layer_count,
+ uint32_t format, uint64_t usage,
+ size_t user_metadata_size);
pdx::Status<QueueInfo> OnCreateProducerQueue(
pdx::Message& message, const ProducerQueueConfig& producer_config,
const UsagePolicy& usage_policy);
diff --git a/services/vr/bufferhubd/detached_buffer_channel.cpp b/services/vr/bufferhubd/detached_buffer_channel.cpp
index edb2111..4f4160a 100644
--- a/services/vr/bufferhubd/detached_buffer_channel.cpp
+++ b/services/vr/bufferhubd/detached_buffer_channel.cpp
@@ -1,5 +1,6 @@
#include "detached_buffer_channel.h"
+using android::pdx::BorrowedHandle;
using android::pdx::ErrorStatus;
using android::pdx::Message;
using android::pdx::RemoteChannelHandle;
@@ -17,7 +18,49 @@
: BufferHubChannel(service, buffer_id, channel_id, kDetachedBufferType),
buffer_(std::move(buffer)),
metadata_buffer_(std::move(metadata_buffer)),
- user_metadata_size_(user_metadata_size) {}
+ user_metadata_size_(user_metadata_size) {
+}
+
+DetachedBufferChannel::DetachedBufferChannel(BufferHubService* service,
+ int buffer_id, uint32_t width,
+ uint32_t height,
+ uint32_t layer_count,
+ uint32_t format, uint64_t usage,
+ size_t user_metadata_size)
+ : BufferHubChannel(service, buffer_id, buffer_id, kDetachedBufferType),
+ user_metadata_size_(user_metadata_size) {
+ // The size the of metadata buffer is used as the "width" parameter during
+ // allocation. Thus it cannot overflow uint32_t.
+ if (user_metadata_size_ >= (std::numeric_limits<uint32_t>::max() -
+ BufferHubDefs::kMetadataHeaderSize)) {
+ ALOGE(
+ "DetachedBufferChannel::DetachedBufferChannel: metadata size too big.");
+ return;
+ }
+
+ if (int ret = buffer_.Alloc(width, height, layer_count, format, usage)) {
+ ALOGE(
+ "DetachedBufferChannel::DetachedBufferChannel: Failed to allocate "
+ "buffer: %s",
+ strerror(-ret));
+ return;
+ }
+
+ // Buffer metadata has two parts: 1) a fixed sized metadata header; and 2)
+ // user requested metadata.
+ const size_t size = BufferHubDefs::kMetadataHeaderSize + user_metadata_size_;
+ if (int ret = metadata_buffer_.Alloc(size,
+ /*height=*/1,
+ /*layer_count=*/1,
+ BufferHubDefs::kMetadataFormat,
+ BufferHubDefs::kMetadataUsage)) {
+ ALOGE(
+ "DetachedBufferChannel::DetachedBufferChannel: Failed to allocate "
+ "metadata: %s",
+ strerror(-ret));
+ return;
+ }
+}
BufferHubChannel::BufferInfo DetachedBufferChannel::GetBufferInfo() const {
return BufferInfo(buffer_id(), /*consumer_count=*/0, buffer_.width(),
@@ -33,8 +76,13 @@
bool DetachedBufferChannel::HandleMessage(Message& message) {
ATRACE_NAME("DetachedBufferChannel::HandleMessage");
switch (message.GetOp()) {
- case BufferHubRPC::DetachedBufferPromote::Opcode:
- DispatchRemoteMethod<BufferHubRPC::DetachedBufferPromote>(
+ case DetachedBufferRPC::Import::Opcode:
+ DispatchRemoteMethod<DetachedBufferRPC::Import>(
+ *this, &DetachedBufferChannel::OnImport, message);
+ return true;
+
+ case DetachedBufferRPC::Promote::Opcode:
+ DispatchRemoteMethod<DetachedBufferRPC::Promote>(
*this, &DetachedBufferChannel::OnPromote, message);
return true;
@@ -43,6 +91,20 @@
}
}
+Status<BufferDescription<BorrowedHandle>> DetachedBufferChannel::OnImport(
+ Message& /*message*/) {
+ ATRACE_NAME("DetachedBufferChannel::OnGetBuffer");
+ ALOGD_IF(TRACE, "DetachedBufferChannel::OnGetBuffer: buffer=%d.",
+ buffer_id());
+
+ return BufferDescription<BorrowedHandle>{buffer_,
+ metadata_buffer_,
+ buffer_id(),
+ /*buffer_state_bit=*/0,
+ BorrowedHandle{},
+ BorrowedHandle{}};
+}
+
Status<RemoteChannelHandle> DetachedBufferChannel::OnPromote(
Message& /*message*/) {
ATRACE_NAME("DetachedBufferChannel::OnPromote");
diff --git a/services/vr/bufferhubd/detached_buffer_channel.h b/services/vr/bufferhubd/detached_buffer_channel.h
index 7ce4aed..079ba72 100644
--- a/services/vr/bufferhubd/detached_buffer_channel.h
+++ b/services/vr/bufferhubd/detached_buffer_channel.h
@@ -3,20 +3,25 @@
#include "buffer_hub.h"
-// #include <pdx/channel_handle.h>
-// #include <pdx/file_handle.h>
-// #include <pdx/rpc/buffer_wrapper.h>
-// #include <private/dvr/ion_buffer.h>
+#include <pdx/channel_handle.h>
+#include <pdx/file_handle.h>
namespace android {
namespace dvr {
class DetachedBufferChannel : public BufferHubChannel {
public:
- // Creates a detached buffer.
- DetachedBufferChannel(BufferHubService* service, int buffer_id,
- int channel_id, IonBuffer buffer,
- IonBuffer metadata_buffer, size_t user_metadata_size);
+ template <typename... Args>
+ static std::unique_ptr<DetachedBufferChannel> Create(Args&&... args) {
+ auto buffer = std::unique_ptr<DetachedBufferChannel>(
+ new DetachedBufferChannel(std::forward<Args>(args)...));
+ return buffer->IsValid() ? std::move(buffer) : nullptr;
+ }
+
+ // Returns whether the object holds a valid graphic buffer.
+ bool IsValid() const {
+ return buffer_.IsValid() && metadata_buffer_.IsValid();
+ }
size_t user_metadata_size() const { return user_metadata_size_; }
@@ -27,6 +32,19 @@
void HandleImpulse(pdx::Message& message) override;
private:
+ // Creates a detached buffer from existing IonBuffers.
+ DetachedBufferChannel(BufferHubService* service, int buffer_id,
+ int channel_id, IonBuffer buffer,
+ IonBuffer metadata_buffer, size_t user_metadata_size);
+
+ // Allocates a new detached buffer.
+ DetachedBufferChannel(BufferHubService* service, int buffer_id,
+ uint32_t width, uint32_t height, uint32_t layer_count,
+ uint32_t format, uint64_t usage,
+ size_t user_metadata_size);
+
+ pdx::Status<BufferDescription<pdx::BorrowedHandle>> OnImport(
+ pdx::Message& message);
pdx::Status<pdx::RemoteChannelHandle> OnPromote(pdx::Message& message);
// Gralloc buffer handles.
diff --git a/services/vr/bufferhubd/producer_channel.cpp b/services/vr/bufferhubd/producer_channel.cpp
index c38c12b..a753168 100644
--- a/services/vr/bufferhubd/producer_channel.cpp
+++ b/services/vr/bufferhubd/producer_channel.cpp
@@ -377,11 +377,17 @@
return ErrorStatus(-ret);
};
- auto channel = std::make_shared<DetachedBufferChannel>(
- service(), buffer_id(), channel_id, std::move(buffer_),
- std::move(metadata_buffer_), user_metadata_size_);
+ std::unique_ptr<DetachedBufferChannel> channel =
+ DetachedBufferChannel::Create(
+ service(), buffer_id(), channel_id, std::move(buffer_),
+ std::move(metadata_buffer_), user_metadata_size_);
+ if (!channel) {
+ ALOGE("ProducerChannel::OnProducerDetach: Invalid buffer.");
+ return ErrorStatus(EINVAL);
+ }
- const auto channel_status = service()->SetChannel(channel_id, channel);
+ const auto channel_status =
+ service()->SetChannel(channel_id, std::move(channel));
if (!channel_status) {
// Technically, this should never fail, as we just pushed the channel. Note
// that LOG_FATAL will be stripped out in non-debug build.
diff --git a/vulkan/Android.bp b/vulkan/Android.bp
index a49b6dd..b15bed9 100644
--- a/vulkan/Android.bp
+++ b/vulkan/Android.bp
@@ -55,4 +55,5 @@
"nulldrv",
"libvulkan",
"tools",
+ "vkjson",
]
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp
index dec39e0..741fbb8 100644
--- a/vulkan/libvulkan/driver.cpp
+++ b/vulkan/libvulkan/driver.cpp
@@ -500,13 +500,36 @@
// both we and HAL can take part in
hook_extensions_.set(ext_bit);
break;
- case ProcHook::EXTENSION_UNKNOWN:
case ProcHook::KHR_get_physical_device_properties2:
- // HAL's extensions
+ case ProcHook::EXTENSION_UNKNOWN:
+ // Extensions we don't need to do anything about at this level
break;
- default:
- ALOGW("Ignored invalid instance extension %s", name);
+
+ case ProcHook::KHR_incremental_present:
+ case ProcHook::KHR_shared_presentable_image:
+ case ProcHook::KHR_swapchain:
+ case ProcHook::EXT_hdr_metadata:
+ case ProcHook::ANDROID_external_memory_android_hardware_buffer:
+ case ProcHook::ANDROID_native_buffer:
+ case ProcHook::GOOGLE_display_timing:
+ case ProcHook::EXTENSION_CORE:
+ case ProcHook::EXTENSION_COUNT:
+ // Device and meta extensions. If we ever get here it's a bug in
+ // our code. But enumerating them lets us avoid having a default
+ // case, and default hides other bugs.
+ ALOGE(
+ "CreateInfoWrapper::FilterExtension: invalid instance "
+ "extension '%s'. FIX ME",
+ name);
return;
+
+ // Don't use a default case. Without it, -Wswitch will tell us
+ // at compile time if someone adds a new ProcHook extension but
+ // doesn't handle it above. That's a real bug that has
+ // not-immediately-obvious effects.
+ //
+ // default:
+ // break;
}
} else {
switch (ext_bit) {
@@ -524,12 +547,36 @@
case ProcHook::EXT_hdr_metadata:
hook_extensions_.set(ext_bit);
break;
+ case ProcHook::ANDROID_external_memory_android_hardware_buffer:
case ProcHook::EXTENSION_UNKNOWN:
- // HAL's extensions
+ // Extensions we don't need to do anything about at this level
break;
- default:
- ALOGW("Ignored invalid device extension %s", name);
+
+ case ProcHook::KHR_android_surface:
+ case ProcHook::KHR_get_physical_device_properties2:
+ case ProcHook::KHR_get_surface_capabilities2:
+ case ProcHook::KHR_surface:
+ case ProcHook::EXT_debug_report:
+ case ProcHook::EXT_swapchain_colorspace:
+ case ProcHook::ANDROID_native_buffer:
+ case ProcHook::EXTENSION_CORE:
+ case ProcHook::EXTENSION_COUNT:
+ // Instance and meta extensions. If we ever get here it's a bug
+ // in our code. But enumerating them lets us avoid having a
+ // default case, and default hides other bugs.
+ ALOGE(
+ "CreateInfoWrapper::FilterExtension: invalid device "
+ "extension '%s'. FIX ME",
+ name);
return;
+
+ // Don't use a default case. Without it, -Wswitch will tell us
+ // at compile time if someone adds a new ProcHook extension but
+ // doesn't handle it above. That's a real bug that has
+ // not-immediately-obvious effects.
+ //
+ // default:
+ // break;
}
}
diff --git a/vulkan/vkjson/.clang-format b/vulkan/vkjson/.clang-format
new file mode 100644
index 0000000..3f19e61
--- /dev/null
+++ b/vulkan/vkjson/.clang-format
@@ -0,0 +1 @@
+BasedOnStyle: Chromium
diff --git a/vulkan/vkjson/Android.bp b/vulkan/vkjson/Android.bp
new file mode 100644
index 0000000..e387165
--- /dev/null
+++ b/vulkan/vkjson/Android.bp
@@ -0,0 +1,52 @@
+cc_library_static {
+ name: "libvkjson",
+ srcs: [
+ "vkjson.cc",
+ "vkjson_instance.cc",
+ ],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+ cppflags: [
+ "-std=c++11",
+ "-Wno-sign-compare",
+ ],
+ export_include_dirs: [
+ ".",
+ ],
+ whole_static_libs: [
+ "libjsoncpp",
+ ],
+ header_libs: [
+ "vulkan_headers",
+ ],
+}
+
+cc_library_static {
+ name: "libvkjson_ndk",
+ clang: true,
+ srcs: [
+ "vkjson.cc",
+ "vkjson_instance.cc",
+ ],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+ cppflags: [
+ "-std=c++11",
+ "-Wno-sign-compare",
+ ],
+ export_include_dirs: [
+ ".",
+ ],
+ whole_static_libs: [
+ "libjsoncpp_ndk",
+ ],
+ header_libs: [
+ "vulkan_headers_ndk",
+ ],
+ sdk_version: "24",
+ stl: "libc++_static",
+}
diff --git a/vulkan/vkjson/vkjson.cc b/vulkan/vkjson/vkjson.cc
new file mode 100644
index 0000000..6200383
--- /dev/null
+++ b/vulkan/vkjson/vkjson.cc
@@ -0,0 +1,1125 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2015-2016 The Khronos Group Inc.
+// Copyright (c) 2015-2016 Valve Corporation
+// Copyright (c) 2015-2016 LunarG, Inc.
+// Copyright (c) 2015-2016 Google, 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.
+///////////////////////////////////////////////////////////////////////////////
+
+#include "vkjson.h"
+
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <cmath>
+#include <cinttypes>
+#include <cstdio>
+#include <limits>
+#include <memory>
+#include <sstream>
+#include <type_traits>
+#include <utility>
+
+#include <json/json.h>
+
+namespace {
+
+inline bool IsIntegral(double value) {
+#if defined(ANDROID)
+ // Android NDK doesn't provide std::trunc yet
+ return trunc(value) == value;
+#else
+ return std::trunc(value) == value;
+#endif
+}
+
+template <typename T> struct EnumTraits;
+template <> struct EnumTraits<VkPhysicalDeviceType> {
+ static uint32_t min() { return VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE; }
+ static uint32_t max() { return VK_PHYSICAL_DEVICE_TYPE_END_RANGE; }
+ static bool exist(uint32_t e) { return e >= min() && e <= max(); }
+};
+
+template <> struct EnumTraits<VkFormat> {
+ static bool exist(uint32_t e) {
+ switch (e) {
+ case VK_FORMAT_UNDEFINED:
+ case VK_FORMAT_R4G4_UNORM_PACK8:
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_R5G6B5_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
+ case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
+ case VK_FORMAT_R8_UNORM:
+ case VK_FORMAT_R8_SNORM:
+ case VK_FORMAT_R8_USCALED:
+ case VK_FORMAT_R8_SSCALED:
+ case VK_FORMAT_R8_UINT:
+ case VK_FORMAT_R8_SINT:
+ case VK_FORMAT_R8_SRGB:
+ case VK_FORMAT_R8G8_UNORM:
+ case VK_FORMAT_R8G8_SNORM:
+ case VK_FORMAT_R8G8_USCALED:
+ case VK_FORMAT_R8G8_SSCALED:
+ case VK_FORMAT_R8G8_UINT:
+ case VK_FORMAT_R8G8_SINT:
+ case VK_FORMAT_R8G8_SRGB:
+ case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_SNORM:
+ case VK_FORMAT_R8G8B8_USCALED:
+ case VK_FORMAT_R8G8B8_SSCALED:
+ case VK_FORMAT_R8G8B8_UINT:
+ case VK_FORMAT_R8G8B8_SINT:
+ case VK_FORMAT_R8G8B8_SRGB:
+ case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_SNORM:
+ case VK_FORMAT_B8G8R8_USCALED:
+ case VK_FORMAT_B8G8R8_SSCALED:
+ case VK_FORMAT_B8G8R8_UINT:
+ case VK_FORMAT_B8G8R8_SINT:
+ case VK_FORMAT_B8G8R8_SRGB:
+ case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SNORM:
+ case VK_FORMAT_R8G8B8A8_USCALED:
+ case VK_FORMAT_R8G8B8A8_SSCALED:
+ case VK_FORMAT_R8G8B8A8_UINT:
+ case VK_FORMAT_R8G8B8A8_SINT:
+ case VK_FORMAT_R8G8B8A8_SRGB:
+ case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SNORM:
+ case VK_FORMAT_B8G8R8A8_USCALED:
+ case VK_FORMAT_B8G8R8A8_SSCALED:
+ case VK_FORMAT_B8G8R8A8_UINT:
+ case VK_FORMAT_B8G8R8A8_SINT:
+ case VK_FORMAT_B8G8R8A8_SRGB:
+ case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
+ case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
+ case VK_FORMAT_A8B8G8R8_UINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SINT_PACK32:
+ case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+ case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
+ case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
+ case VK_FORMAT_A2R10G10B10_UINT_PACK32:
+ case VK_FORMAT_A2R10G10B10_SINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
+ case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
+ case VK_FORMAT_A2B10G10R10_UINT_PACK32:
+ case VK_FORMAT_A2B10G10R10_SINT_PACK32:
+ case VK_FORMAT_R16_UNORM:
+ case VK_FORMAT_R16_SNORM:
+ case VK_FORMAT_R16_USCALED:
+ case VK_FORMAT_R16_SSCALED:
+ case VK_FORMAT_R16_UINT:
+ case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_SFLOAT:
+ case VK_FORMAT_R16G16_UNORM:
+ case VK_FORMAT_R16G16_SNORM:
+ case VK_FORMAT_R16G16_USCALED:
+ case VK_FORMAT_R16G16_SSCALED:
+ case VK_FORMAT_R16G16_UINT:
+ case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_SFLOAT:
+ case VK_FORMAT_R16G16B16_UNORM:
+ case VK_FORMAT_R16G16B16_SNORM:
+ case VK_FORMAT_R16G16B16_USCALED:
+ case VK_FORMAT_R16G16B16_SSCALED:
+ case VK_FORMAT_R16G16B16_UINT:
+ case VK_FORMAT_R16G16B16_SINT:
+ case VK_FORMAT_R16G16B16_SFLOAT:
+ case VK_FORMAT_R16G16B16A16_UNORM:
+ case VK_FORMAT_R16G16B16A16_SNORM:
+ case VK_FORMAT_R16G16B16A16_USCALED:
+ case VK_FORMAT_R16G16B16A16_SSCALED:
+ case VK_FORMAT_R16G16B16A16_UINT:
+ case VK_FORMAT_R16G16B16A16_SINT:
+ case VK_FORMAT_R16G16B16A16_SFLOAT:
+ case VK_FORMAT_R32_UINT:
+ case VK_FORMAT_R32_SINT:
+ case VK_FORMAT_R32_SFLOAT:
+ case VK_FORMAT_R32G32_UINT:
+ case VK_FORMAT_R32G32_SINT:
+ case VK_FORMAT_R32G32_SFLOAT:
+ case VK_FORMAT_R32G32B32_UINT:
+ case VK_FORMAT_R32G32B32_SINT:
+ case VK_FORMAT_R32G32B32_SFLOAT:
+ case VK_FORMAT_R32G32B32A32_UINT:
+ case VK_FORMAT_R32G32B32A32_SINT:
+ case VK_FORMAT_R32G32B32A32_SFLOAT:
+ case VK_FORMAT_R64_UINT:
+ case VK_FORMAT_R64_SINT:
+ case VK_FORMAT_R64_SFLOAT:
+ case VK_FORMAT_R64G64_UINT:
+ case VK_FORMAT_R64G64_SINT:
+ case VK_FORMAT_R64G64_SFLOAT:
+ case VK_FORMAT_R64G64B64_UINT:
+ case VK_FORMAT_R64G64B64_SINT:
+ case VK_FORMAT_R64G64B64_SFLOAT:
+ case VK_FORMAT_R64G64B64A64_UINT:
+ case VK_FORMAT_R64G64B64A64_SINT:
+ case VK_FORMAT_R64G64B64A64_SFLOAT:
+ case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
+ case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
+ case VK_FORMAT_D16_UNORM:
+ case VK_FORMAT_X8_D24_UNORM_PACK32:
+ case VK_FORMAT_D32_SFLOAT:
+ case VK_FORMAT_S8_UINT:
+ case VK_FORMAT_D16_UNORM_S8_UINT:
+ case VK_FORMAT_D24_UNORM_S8_UINT:
+ case VK_FORMAT_D32_SFLOAT_S8_UINT:
+ case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+ case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
+ case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+ case VK_FORMAT_BC2_UNORM_BLOCK:
+ case VK_FORMAT_BC2_SRGB_BLOCK:
+ case VK_FORMAT_BC3_UNORM_BLOCK:
+ case VK_FORMAT_BC3_SRGB_BLOCK:
+ case VK_FORMAT_BC4_UNORM_BLOCK:
+ case VK_FORMAT_BC4_SNORM_BLOCK:
+ case VK_FORMAT_BC5_UNORM_BLOCK:
+ case VK_FORMAT_BC5_SNORM_BLOCK:
+ case VK_FORMAT_BC6H_UFLOAT_BLOCK:
+ case VK_FORMAT_BC6H_SFLOAT_BLOCK:
+ case VK_FORMAT_BC7_UNORM_BLOCK:
+ case VK_FORMAT_BC7_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
+ case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+ case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11_SNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
+ case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
+ case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+ case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
+ case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:
+ case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:
+ case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:
+ case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:
+ case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:
+ case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:
+ case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:
+ case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:
+ case VK_FORMAT_G8B8G8R8_422_UNORM_KHR:
+ case VK_FORMAT_B8G8R8G8_422_UNORM_KHR:
+ case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:
+ case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:
+ case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:
+ case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:
+ case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:
+ case VK_FORMAT_R10X6_UNORM_PACK16_KHR:
+ case VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:
+ case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:
+ case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:
+ case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:
+ case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:
+ case VK_FORMAT_R12X4_UNORM_PACK16_KHR:
+ case VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:
+ case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:
+ case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:
+ case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:
+ case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:
+ case VK_FORMAT_G16B16G16R16_422_UNORM_KHR:
+ case VK_FORMAT_B16G16R16G16_422_UNORM_KHR:
+ case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:
+ case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:
+ case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:
+ case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:
+ case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:
+ return true;
+ }
+ return false;
+ }
+};
+
+template <>
+struct EnumTraits<VkPointClippingBehavior> {
+ static uint32_t min() { return VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE; }
+ static uint32_t max() { return VK_POINT_CLIPPING_BEHAVIOR_END_RANGE; }
+ static bool exist(uint32_t e) { return e >= min() && e <= max(); }
+};
+
+template <>
+struct EnumTraits<VkExternalFenceHandleTypeFlagBits> {
+ static bool exist(uint32_t e) {
+ switch (e) {
+ case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT:
+ case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT:
+ case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT:
+ case VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT:
+ return true;
+ }
+ return false;
+ }
+};
+
+template <>
+struct EnumTraits<VkExternalSemaphoreHandleTypeFlagBits> {
+ static bool exist(uint32_t e) {
+ switch (e) {
+ case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT:
+ case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT:
+ case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT:
+ case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT:
+ case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT:
+ return true;
+ }
+ return false;
+ }
+};
+
+// VkSparseImageFormatProperties
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkExtent3D* extents) {
+ return
+ visitor->Visit("width", &extents->width) &&
+ visitor->Visit("height", &extents->height) &&
+ visitor->Visit("depth", &extents->depth);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkImageFormatProperties* properties) {
+ return
+ visitor->Visit("maxExtent", &properties->maxExtent) &&
+ visitor->Visit("maxMipLevels", &properties->maxMipLevels) &&
+ visitor->Visit("maxArrayLayers", &properties->maxArrayLayers) &&
+ visitor->Visit("sampleCounts", &properties->sampleCounts) &&
+ visitor->Visit("maxResourceSize", &properties->maxResourceSize);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkPhysicalDeviceLimits* limits) {
+ return
+ visitor->Visit("maxImageDimension1D", &limits->maxImageDimension1D) &&
+ visitor->Visit("maxImageDimension2D", &limits->maxImageDimension2D) &&
+ visitor->Visit("maxImageDimension3D", &limits->maxImageDimension3D) &&
+ visitor->Visit("maxImageDimensionCube", &limits->maxImageDimensionCube) &&
+ visitor->Visit("maxImageArrayLayers", &limits->maxImageArrayLayers) &&
+ visitor->Visit("maxTexelBufferElements", &limits->maxTexelBufferElements) &&
+ visitor->Visit("maxUniformBufferRange", &limits->maxUniformBufferRange) &&
+ visitor->Visit("maxStorageBufferRange", &limits->maxStorageBufferRange) &&
+ visitor->Visit("maxPushConstantsSize", &limits->maxPushConstantsSize) &&
+ visitor->Visit("maxMemoryAllocationCount", &limits->maxMemoryAllocationCount) &&
+ visitor->Visit("maxSamplerAllocationCount", &limits->maxSamplerAllocationCount) &&
+ visitor->Visit("bufferImageGranularity", &limits->bufferImageGranularity) &&
+ visitor->Visit("sparseAddressSpaceSize", &limits->sparseAddressSpaceSize) &&
+ visitor->Visit("maxBoundDescriptorSets", &limits->maxBoundDescriptorSets) &&
+ visitor->Visit("maxPerStageDescriptorSamplers", &limits->maxPerStageDescriptorSamplers) &&
+ visitor->Visit("maxPerStageDescriptorUniformBuffers", &limits->maxPerStageDescriptorUniformBuffers) &&
+ visitor->Visit("maxPerStageDescriptorStorageBuffers", &limits->maxPerStageDescriptorStorageBuffers) &&
+ visitor->Visit("maxPerStageDescriptorSampledImages", &limits->maxPerStageDescriptorSampledImages) &&
+ visitor->Visit("maxPerStageDescriptorStorageImages", &limits->maxPerStageDescriptorStorageImages) &&
+ visitor->Visit("maxPerStageDescriptorInputAttachments", &limits->maxPerStageDescriptorInputAttachments) &&
+ visitor->Visit("maxPerStageResources", &limits->maxPerStageResources) &&
+ visitor->Visit("maxDescriptorSetSamplers", &limits->maxDescriptorSetSamplers) &&
+ visitor->Visit("maxDescriptorSetUniformBuffers", &limits->maxDescriptorSetUniformBuffers) &&
+ visitor->Visit("maxDescriptorSetUniformBuffersDynamic", &limits->maxDescriptorSetUniformBuffersDynamic) &&
+ visitor->Visit("maxDescriptorSetStorageBuffers", &limits->maxDescriptorSetStorageBuffers) &&
+ visitor->Visit("maxDescriptorSetStorageBuffersDynamic", &limits->maxDescriptorSetStorageBuffersDynamic) &&
+ visitor->Visit("maxDescriptorSetSampledImages", &limits->maxDescriptorSetSampledImages) &&
+ visitor->Visit("maxDescriptorSetStorageImages", &limits->maxDescriptorSetStorageImages) &&
+ visitor->Visit("maxDescriptorSetInputAttachments", &limits->maxDescriptorSetInputAttachments) &&
+ visitor->Visit("maxVertexInputAttributes", &limits->maxVertexInputAttributes) &&
+ visitor->Visit("maxVertexInputBindings", &limits->maxVertexInputBindings) &&
+ visitor->Visit("maxVertexInputAttributeOffset", &limits->maxVertexInputAttributeOffset) &&
+ visitor->Visit("maxVertexInputBindingStride", &limits->maxVertexInputBindingStride) &&
+ visitor->Visit("maxVertexOutputComponents", &limits->maxVertexOutputComponents) &&
+ visitor->Visit("maxTessellationGenerationLevel", &limits->maxTessellationGenerationLevel) &&
+ visitor->Visit("maxTessellationPatchSize", &limits->maxTessellationPatchSize) &&
+ visitor->Visit("maxTessellationControlPerVertexInputComponents", &limits->maxTessellationControlPerVertexInputComponents) &&
+ visitor->Visit("maxTessellationControlPerVertexOutputComponents", &limits->maxTessellationControlPerVertexOutputComponents) &&
+ visitor->Visit("maxTessellationControlPerPatchOutputComponents", &limits->maxTessellationControlPerPatchOutputComponents) &&
+ visitor->Visit("maxTessellationControlTotalOutputComponents", &limits->maxTessellationControlTotalOutputComponents) &&
+ visitor->Visit("maxTessellationEvaluationInputComponents", &limits->maxTessellationEvaluationInputComponents) &&
+ visitor->Visit("maxTessellationEvaluationOutputComponents", &limits->maxTessellationEvaluationOutputComponents) &&
+ visitor->Visit("maxGeometryShaderInvocations", &limits->maxGeometryShaderInvocations) &&
+ visitor->Visit("maxGeometryInputComponents", &limits->maxGeometryInputComponents) &&
+ visitor->Visit("maxGeometryOutputComponents", &limits->maxGeometryOutputComponents) &&
+ visitor->Visit("maxGeometryOutputVertices", &limits->maxGeometryOutputVertices) &&
+ visitor->Visit("maxGeometryTotalOutputComponents", &limits->maxGeometryTotalOutputComponents) &&
+ visitor->Visit("maxFragmentInputComponents", &limits->maxFragmentInputComponents) &&
+ visitor->Visit("maxFragmentOutputAttachments", &limits->maxFragmentOutputAttachments) &&
+ visitor->Visit("maxFragmentDualSrcAttachments", &limits->maxFragmentDualSrcAttachments) &&
+ visitor->Visit("maxFragmentCombinedOutputResources", &limits->maxFragmentCombinedOutputResources) &&
+ visitor->Visit("maxComputeSharedMemorySize", &limits->maxComputeSharedMemorySize) &&
+ visitor->Visit("maxComputeWorkGroupCount", &limits->maxComputeWorkGroupCount) &&
+ visitor->Visit("maxComputeWorkGroupInvocations", &limits->maxComputeWorkGroupInvocations) &&
+ visitor->Visit("maxComputeWorkGroupSize", &limits->maxComputeWorkGroupSize) &&
+ visitor->Visit("subPixelPrecisionBits", &limits->subPixelPrecisionBits) &&
+ visitor->Visit("subTexelPrecisionBits", &limits->subTexelPrecisionBits) &&
+ visitor->Visit("mipmapPrecisionBits", &limits->mipmapPrecisionBits) &&
+ visitor->Visit("maxDrawIndexedIndexValue", &limits->maxDrawIndexedIndexValue) &&
+ visitor->Visit("maxDrawIndirectCount", &limits->maxDrawIndirectCount) &&
+ visitor->Visit("maxSamplerLodBias", &limits->maxSamplerLodBias) &&
+ visitor->Visit("maxSamplerAnisotropy", &limits->maxSamplerAnisotropy) &&
+ visitor->Visit("maxViewports", &limits->maxViewports) &&
+ visitor->Visit("maxViewportDimensions", &limits->maxViewportDimensions) &&
+ visitor->Visit("viewportBoundsRange", &limits->viewportBoundsRange) &&
+ visitor->Visit("viewportSubPixelBits", &limits->viewportSubPixelBits) &&
+ visitor->Visit("minMemoryMapAlignment", &limits->minMemoryMapAlignment) &&
+ visitor->Visit("minTexelBufferOffsetAlignment", &limits->minTexelBufferOffsetAlignment) &&
+ visitor->Visit("minUniformBufferOffsetAlignment", &limits->minUniformBufferOffsetAlignment) &&
+ visitor->Visit("minStorageBufferOffsetAlignment", &limits->minStorageBufferOffsetAlignment) &&
+ visitor->Visit("minTexelOffset", &limits->minTexelOffset) &&
+ visitor->Visit("maxTexelOffset", &limits->maxTexelOffset) &&
+ visitor->Visit("minTexelGatherOffset", &limits->minTexelGatherOffset) &&
+ visitor->Visit("maxTexelGatherOffset", &limits->maxTexelGatherOffset) &&
+ visitor->Visit("minInterpolationOffset", &limits->minInterpolationOffset) &&
+ visitor->Visit("maxInterpolationOffset", &limits->maxInterpolationOffset) &&
+ visitor->Visit("subPixelInterpolationOffsetBits", &limits->subPixelInterpolationOffsetBits) &&
+ visitor->Visit("maxFramebufferWidth", &limits->maxFramebufferWidth) &&
+ visitor->Visit("maxFramebufferHeight", &limits->maxFramebufferHeight) &&
+ visitor->Visit("maxFramebufferLayers", &limits->maxFramebufferLayers) &&
+ visitor->Visit("framebufferColorSampleCounts", &limits->framebufferColorSampleCounts) &&
+ visitor->Visit("framebufferDepthSampleCounts", &limits->framebufferDepthSampleCounts) &&
+ visitor->Visit("framebufferStencilSampleCounts", &limits->framebufferStencilSampleCounts) &&
+ visitor->Visit("framebufferNoAttachmentsSampleCounts", &limits->framebufferNoAttachmentsSampleCounts) &&
+ visitor->Visit("maxColorAttachments", &limits->maxColorAttachments) &&
+ visitor->Visit("sampledImageColorSampleCounts", &limits->sampledImageColorSampleCounts) &&
+ visitor->Visit("sampledImageIntegerSampleCounts", &limits->sampledImageIntegerSampleCounts) &&
+ visitor->Visit("sampledImageDepthSampleCounts", &limits->sampledImageDepthSampleCounts) &&
+ visitor->Visit("sampledImageStencilSampleCounts", &limits->sampledImageStencilSampleCounts) &&
+ visitor->Visit("storageImageSampleCounts", &limits->storageImageSampleCounts) &&
+ visitor->Visit("maxSampleMaskWords", &limits->maxSampleMaskWords) &&
+ visitor->Visit("timestampComputeAndGraphics", &limits->timestampComputeAndGraphics) &&
+ visitor->Visit("timestampPeriod", &limits->timestampPeriod) &&
+ visitor->Visit("maxClipDistances", &limits->maxClipDistances) &&
+ visitor->Visit("maxCullDistances", &limits->maxCullDistances) &&
+ visitor->Visit("maxCombinedClipAndCullDistances", &limits->maxCombinedClipAndCullDistances) &&
+ visitor->Visit("discreteQueuePriorities", &limits->discreteQueuePriorities) &&
+ visitor->Visit("pointSizeRange", &limits->pointSizeRange) &&
+ visitor->Visit("lineWidthRange", &limits->lineWidthRange) &&
+ visitor->Visit("pointSizeGranularity", &limits->pointSizeGranularity) &&
+ visitor->Visit("lineWidthGranularity", &limits->lineWidthGranularity) &&
+ visitor->Visit("strictLines", &limits->strictLines) &&
+ visitor->Visit("standardSampleLocations", &limits->standardSampleLocations) &&
+ visitor->Visit("optimalBufferCopyOffsetAlignment", &limits->optimalBufferCopyOffsetAlignment) &&
+ visitor->Visit("optimalBufferCopyRowPitchAlignment", &limits->optimalBufferCopyRowPitchAlignment) &&
+ visitor->Visit("nonCoherentAtomSize", &limits->nonCoherentAtomSize);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceSparseProperties* properties) {
+ return
+ visitor->Visit("residencyStandard2DBlockShape", &properties->residencyStandard2DBlockShape) &&
+ visitor->Visit("residencyStandard2DMultisampleBlockShape", &properties->residencyStandard2DMultisampleBlockShape) &&
+ visitor->Visit("residencyStandard3DBlockShape", &properties->residencyStandard3DBlockShape) &&
+ visitor->Visit("residencyAlignedMipSize", &properties->residencyAlignedMipSize) &&
+ visitor->Visit("residencyNonResidentStrict", &properties->residencyNonResidentStrict);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceProperties* properties) {
+ return
+ visitor->Visit("apiVersion", &properties->apiVersion) &&
+ visitor->Visit("driverVersion", &properties->driverVersion) &&
+ visitor->Visit("vendorID", &properties->vendorID) &&
+ visitor->Visit("deviceID", &properties->deviceID) &&
+ visitor->Visit("deviceType", &properties->deviceType) &&
+ visitor->Visit("deviceName", &properties->deviceName) &&
+ visitor->Visit("pipelineCacheUUID", &properties->pipelineCacheUUID) &&
+ visitor->Visit("limits", &properties->limits) &&
+ visitor->Visit("sparseProperties", &properties->sparseProperties);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkPhysicalDeviceFeatures* features) {
+ return
+ visitor->Visit("robustBufferAccess", &features->robustBufferAccess) &&
+ visitor->Visit("fullDrawIndexUint32", &features->fullDrawIndexUint32) &&
+ visitor->Visit("imageCubeArray", &features->imageCubeArray) &&
+ visitor->Visit("independentBlend", &features->independentBlend) &&
+ visitor->Visit("geometryShader", &features->geometryShader) &&
+ visitor->Visit("tessellationShader", &features->tessellationShader) &&
+ visitor->Visit("sampleRateShading", &features->sampleRateShading) &&
+ visitor->Visit("dualSrcBlend", &features->dualSrcBlend) &&
+ visitor->Visit("logicOp", &features->logicOp) &&
+ visitor->Visit("multiDrawIndirect", &features->multiDrawIndirect) &&
+ visitor->Visit("drawIndirectFirstInstance", &features->drawIndirectFirstInstance) &&
+ visitor->Visit("depthClamp", &features->depthClamp) &&
+ visitor->Visit("depthBiasClamp", &features->depthBiasClamp) &&
+ visitor->Visit("fillModeNonSolid", &features->fillModeNonSolid) &&
+ visitor->Visit("depthBounds", &features->depthBounds) &&
+ visitor->Visit("wideLines", &features->wideLines) &&
+ visitor->Visit("largePoints", &features->largePoints) &&
+ visitor->Visit("alphaToOne", &features->alphaToOne) &&
+ visitor->Visit("multiViewport", &features->multiViewport) &&
+ visitor->Visit("samplerAnisotropy", &features->samplerAnisotropy) &&
+ visitor->Visit("textureCompressionETC2", &features->textureCompressionETC2) &&
+ visitor->Visit("textureCompressionASTC_LDR", &features->textureCompressionASTC_LDR) &&
+ visitor->Visit("textureCompressionBC", &features->textureCompressionBC) &&
+ visitor->Visit("occlusionQueryPrecise", &features->occlusionQueryPrecise) &&
+ visitor->Visit("pipelineStatisticsQuery", &features->pipelineStatisticsQuery) &&
+ visitor->Visit("vertexPipelineStoresAndAtomics", &features->vertexPipelineStoresAndAtomics) &&
+ visitor->Visit("fragmentStoresAndAtomics", &features->fragmentStoresAndAtomics) &&
+ visitor->Visit("shaderTessellationAndGeometryPointSize", &features->shaderTessellationAndGeometryPointSize) &&
+ visitor->Visit("shaderImageGatherExtended", &features->shaderImageGatherExtended) &&
+ visitor->Visit("shaderStorageImageExtendedFormats", &features->shaderStorageImageExtendedFormats) &&
+ visitor->Visit("shaderStorageImageMultisample", &features->shaderStorageImageMultisample) &&
+ visitor->Visit("shaderStorageImageReadWithoutFormat", &features->shaderStorageImageReadWithoutFormat) &&
+ visitor->Visit("shaderStorageImageWriteWithoutFormat", &features->shaderStorageImageWriteWithoutFormat) &&
+ visitor->Visit("shaderUniformBufferArrayDynamicIndexing", &features->shaderUniformBufferArrayDynamicIndexing) &&
+ visitor->Visit("shaderSampledImageArrayDynamicIndexing", &features->shaderSampledImageArrayDynamicIndexing) &&
+ visitor->Visit("shaderStorageBufferArrayDynamicIndexing", &features->shaderStorageBufferArrayDynamicIndexing) &&
+ visitor->Visit("shaderStorageImageArrayDynamicIndexing", &features->shaderStorageImageArrayDynamicIndexing) &&
+ visitor->Visit("shaderClipDistance", &features->shaderClipDistance) &&
+ visitor->Visit("shaderCullDistance", &features->shaderCullDistance) &&
+ visitor->Visit("shaderFloat64", &features->shaderFloat64) &&
+ visitor->Visit("shaderInt64", &features->shaderInt64) &&
+ visitor->Visit("shaderInt16", &features->shaderInt16) &&
+ visitor->Visit("shaderResourceResidency", &features->shaderResourceResidency) &&
+ visitor->Visit("shaderResourceMinLod", &features->shaderResourceMinLod) &&
+ visitor->Visit("sparseBinding", &features->sparseBinding) &&
+ visitor->Visit("sparseResidencyBuffer", &features->sparseResidencyBuffer) &&
+ visitor->Visit("sparseResidencyImage2D", &features->sparseResidencyImage2D) &&
+ visitor->Visit("sparseResidencyImage3D", &features->sparseResidencyImage3D) &&
+ visitor->Visit("sparseResidency2Samples", &features->sparseResidency2Samples) &&
+ visitor->Visit("sparseResidency4Samples", &features->sparseResidency4Samples) &&
+ visitor->Visit("sparseResidency8Samples", &features->sparseResidency8Samples) &&
+ visitor->Visit("sparseResidency16Samples", &features->sparseResidency16Samples) &&
+ visitor->Visit("sparseResidencyAliased", &features->sparseResidencyAliased) &&
+ visitor->Visit("variableMultisampleRate", &features->variableMultisampleRate) &&
+ visitor->Visit("inheritedQueries", &features->inheritedQueries);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkJsonExtVariablePointerFeatures* features) {
+ return visitor->Visit("variablePointerFeaturesKHR",
+ &features->variable_pointer_features_khr);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkMemoryType* type) {
+ return
+ visitor->Visit("propertyFlags", &type->propertyFlags) &&
+ visitor->Visit("heapIndex", &type->heapIndex);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkMemoryHeap* heap) {
+ return
+ visitor->Visit("size", &heap->size) &&
+ visitor->Visit("flags", &heap->flags);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkPhysicalDeviceMemoryProperties* properties) {
+ return
+ visitor->Visit("memoryTypeCount", &properties->memoryTypeCount) &&
+ visitor->VisitArray("memoryTypes", properties->memoryTypeCount, &properties->memoryTypes) &&
+ visitor->Visit("memoryHeapCount", &properties->memoryHeapCount) &&
+ visitor->VisitArray("memoryHeaps", properties->memoryHeapCount, &properties->memoryHeaps);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceSubgroupProperties* properties) {
+ return visitor->Visit("subgroupSize", &properties->subgroupSize) &&
+ visitor->Visit("supportedStages", &properties->supportedStages) &&
+ visitor->Visit("supportedOperations",
+ &properties->supportedOperations) &&
+ visitor->Visit("quadOperationsInAllStages",
+ &properties->quadOperationsInAllStages);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDevicePointClippingProperties* properties) {
+ return visitor->Visit("pointClippingBehavior",
+ &properties->pointClippingBehavior);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceMultiviewProperties* properties) {
+ return visitor->Visit("maxMultiviewViewCount",
+ &properties->maxMultiviewViewCount) &&
+ visitor->Visit("maxMultiviewInstanceIndex",
+ &properties->maxMultiviewInstanceIndex);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceIDProperties* properties) {
+ return visitor->Visit("deviceUUID", &properties->deviceUUID) &&
+ visitor->Visit("driverUUID", &properties->driverUUID) &&
+ visitor->Visit("deviceLUID", &properties->deviceLUID) &&
+ visitor->Visit("deviceNodeMask", &properties->deviceNodeMask) &&
+ visitor->Visit("deviceLUIDValid", &properties->deviceLUIDValid);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceMaintenance3Properties* properties) {
+ return visitor->Visit("maxPerSetDescriptors",
+ &properties->maxPerSetDescriptors) &&
+ visitor->Visit("maxMemoryAllocationSize",
+ &properties->maxMemoryAllocationSize);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDevice16BitStorageFeatures* features) {
+ return visitor->Visit("storageBuffer16BitAccess",
+ &features->storageBuffer16BitAccess) &&
+ visitor->Visit("uniformAndStorageBuffer16BitAccess",
+ &features->uniformAndStorageBuffer16BitAccess) &&
+ visitor->Visit("storagePushConstant16",
+ &features->storagePushConstant16) &&
+ visitor->Visit("storageInputOutput16",
+ &features->storageInputOutput16);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceMultiviewFeatures* features) {
+ return visitor->Visit("multiview", &features->multiview) &&
+ visitor->Visit("multiviewGeometryShader",
+ &features->multiviewGeometryShader) &&
+ visitor->Visit("multiviewTessellationShader",
+ &features->multiviewTessellationShader);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceVariablePointerFeatures* features) {
+ return visitor->Visit("variablePointersStorageBuffer",
+ &features->variablePointersStorageBuffer) &&
+ visitor->Visit("variablePointers", &features->variablePointers);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceProtectedMemoryFeatures* features) {
+ return visitor->Visit("protectedMemory", &features->protectedMemory);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* features) {
+ return visitor->Visit("samplerYcbcrConversion",
+ &features->samplerYcbcrConversion);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkPhysicalDeviceShaderDrawParameterFeatures* features) {
+ return visitor->Visit("shaderDrawParameters",
+ &features->shaderDrawParameters);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkExternalFenceProperties* properties) {
+ return visitor->Visit("exportFromImportedHandleTypes",
+ &properties->exportFromImportedHandleTypes) &&
+ visitor->Visit("compatibleHandleTypes",
+ &properties->compatibleHandleTypes) &&
+ visitor->Visit("externalFenceFeatures",
+ &properties->externalFenceFeatures);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor,
+ VkExternalSemaphoreProperties* properties) {
+ return visitor->Visit("exportFromImportedHandleTypes",
+ &properties->exportFromImportedHandleTypes) &&
+ visitor->Visit("compatibleHandleTypes",
+ &properties->compatibleHandleTypes) &&
+ visitor->Visit("externalSemaphoreFeatures",
+ &properties->externalSemaphoreFeatures);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkQueueFamilyProperties* properties) {
+ return
+ visitor->Visit("queueFlags", &properties->queueFlags) &&
+ visitor->Visit("queueCount", &properties->queueCount) &&
+ visitor->Visit("timestampValidBits", &properties->timestampValidBits) &&
+ visitor->Visit("minImageTransferGranularity", &properties->minImageTransferGranularity);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkExtensionProperties* properties) {
+ return
+ visitor->Visit("extensionName", &properties->extensionName) &&
+ visitor->Visit("specVersion", &properties->specVersion);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkLayerProperties* properties) {
+ return
+ visitor->Visit("layerName", &properties->layerName) &&
+ visitor->Visit("specVersion", &properties->specVersion) &&
+ visitor->Visit("implementationVersion", &properties->implementationVersion) &&
+ visitor->Visit("description", &properties->description);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkFormatProperties* properties) {
+ return
+ visitor->Visit("linearTilingFeatures", &properties->linearTilingFeatures) &&
+ visitor->Visit("optimalTilingFeatures", &properties->optimalTilingFeatures) &&
+ visitor->Visit("bufferFeatures", &properties->bufferFeatures);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkJsonLayer* layer) {
+ return visitor->Visit("properties", &layer->properties) &&
+ visitor->Visit("extensions", &layer->extensions);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkJsonDeviceGroup* device_group) {
+ return visitor->Visit("devices", &device_group->device_inds) &&
+ visitor->Visit("subsetAllocation",
+ &device_group->properties.subsetAllocation);
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkJsonDevice* device) {
+ bool ret = true;
+ switch (device->properties.apiVersion ^
+ VK_VERSION_PATCH(device->properties.apiVersion)) {
+ case VK_API_VERSION_1_1:
+ ret &=
+ visitor->Visit("subgroupProperties", &device->subgroup_properties) &&
+ visitor->Visit("pointClippingProperties",
+ &device->point_clipping_properties) &&
+ visitor->Visit("multiviewProperties",
+ &device->multiview_properties) &&
+ visitor->Visit("idProperties", &device->id_properties) &&
+ visitor->Visit("maintenance3Properties",
+ &device->maintenance3_properties) &&
+ visitor->Visit("16bitStorageFeatures",
+ &device->bit16_storage_features) &&
+ visitor->Visit("multiviewFeatures", &device->multiview_features) &&
+ visitor->Visit("variablePointerFeatures",
+ &device->variable_pointer_features) &&
+ visitor->Visit("protectedMemoryFeatures",
+ &device->protected_memory_features) &&
+ visitor->Visit("samplerYcbcrConversionFeatures",
+ &device->sampler_ycbcr_conversion_features) &&
+ visitor->Visit("shaderDrawParameterFeatures",
+ &device->shader_draw_parameter_features) &&
+ visitor->Visit("externalFenceProperties",
+ &device->external_fence_properties) &&
+ visitor->Visit("externalSemaphoreProperties",
+ &device->external_semaphore_properties);
+ case VK_API_VERSION_1_0:
+ ret &= visitor->Visit("properties", &device->properties) &&
+ visitor->Visit("features", &device->features) &&
+ visitor->Visit("VK_KHR_variable_pointers",
+ &device->ext_variable_pointer_features) &&
+ visitor->Visit("memory", &device->memory) &&
+ visitor->Visit("queues", &device->queues) &&
+ visitor->Visit("extensions", &device->extensions) &&
+ visitor->Visit("layers", &device->layers) &&
+ visitor->Visit("formats", &device->formats);
+ }
+ return ret;
+}
+
+template <typename Visitor>
+inline bool Iterate(Visitor* visitor, VkJsonInstance* instance) {
+ bool ret = true;
+ switch (instance->api_version ^ VK_VERSION_PATCH(instance->api_version)) {
+ case VK_API_VERSION_1_1:
+ ret &= visitor->Visit("deviceGroups", &instance->device_groups);
+ case VK_API_VERSION_1_0:
+ ret &= visitor->Visit("layers", &instance->layers) &&
+ visitor->Visit("extensions", &instance->extensions) &&
+ visitor->Visit("devices", &instance->devices);
+ }
+ return ret;
+}
+
+template <typename T>
+using EnableForArithmetic =
+ typename std::enable_if<std::is_arithmetic<T>::value, void>::type;
+
+template <typename T>
+using EnableForStruct =
+ typename std::enable_if<std::is_class<T>::value, void>::type;
+
+template <typename T>
+using EnableForEnum =
+ typename std::enable_if<std::is_enum<T>::value, void>::type;
+
+template <typename T, typename = EnableForStruct<T>, typename = void>
+Json::Value ToJsonValue(const T& value);
+
+template <typename T, typename = EnableForArithmetic<T>>
+inline Json::Value ToJsonValue(const T& value) {
+ return Json::Value(static_cast<double>(value));
+}
+
+inline Json::Value ToJsonValue(const uint64_t& value) {
+ char string[19] = {0}; // "0x" + 16 digits + terminal \0
+ snprintf(string, sizeof(string), "0x%016" PRIx64, value);
+ return Json::Value(string);
+}
+
+template <typename T, typename = EnableForEnum<T>, typename = void,
+ typename = void>
+inline Json::Value ToJsonValue(const T& value) {
+ return Json::Value(static_cast<double>(value));
+}
+
+template <typename T>
+inline Json::Value ArrayToJsonValue(uint32_t count, const T* values) {
+ Json::Value array(Json::arrayValue);
+ for (unsigned int i = 0; i < count; ++i) array.append(ToJsonValue(values[i]));
+ return array;
+}
+
+template <typename T, unsigned int N>
+inline Json::Value ToJsonValue(const T (&value)[N]) {
+ return ArrayToJsonValue(N, value);
+}
+
+template <size_t N>
+inline Json::Value ToJsonValue(const char (&value)[N]) {
+ assert(strlen(value) < N);
+ return Json::Value(value);
+}
+
+template <typename T>
+inline Json::Value ToJsonValue(const std::vector<T>& value) {
+ assert(value.size() <= std::numeric_limits<uint32_t>::max());
+ return ArrayToJsonValue(static_cast<uint32_t>(value.size()), value.data());
+}
+
+template <typename F, typename S>
+inline Json::Value ToJsonValue(const std::pair<F, S>& value) {
+ Json::Value array(Json::arrayValue);
+ array.append(ToJsonValue(value.first));
+ array.append(ToJsonValue(value.second));
+ return array;
+}
+
+template <typename F, typename S>
+inline Json::Value ToJsonValue(const std::map<F, S>& value) {
+ Json::Value array(Json::arrayValue);
+ for (auto& kv : value) array.append(ToJsonValue(kv));
+ return array;
+}
+
+class JsonWriterVisitor {
+ public:
+ JsonWriterVisitor() : object_(Json::objectValue) {}
+
+ ~JsonWriterVisitor() {}
+
+ template <typename T> bool Visit(const char* key, const T* value) {
+ object_[key] = ToJsonValue(*value);
+ return true;
+ }
+
+ template <typename T, uint32_t N>
+ bool VisitArray(const char* key, uint32_t count, const T (*value)[N]) {
+ assert(count <= N);
+ object_[key] = ArrayToJsonValue(count, *value);
+ return true;
+ }
+
+ Json::Value get_object() const { return object_; }
+
+ private:
+ Json::Value object_;
+};
+
+template <typename Visitor, typename T>
+inline void VisitForWrite(Visitor* visitor, const T& t) {
+ Iterate(visitor, const_cast<T*>(&t));
+}
+
+template <typename T, typename /*= EnableForStruct<T>*/, typename /*= void*/>
+Json::Value ToJsonValue(const T& value) {
+ JsonWriterVisitor visitor;
+ VisitForWrite(&visitor, value);
+ return visitor.get_object();
+}
+
+template <typename T, typename = EnableForStruct<T>>
+bool AsValue(Json::Value* json_value, T* t);
+
+inline bool AsValue(Json::Value* json_value, int32_t* value) {
+ if (json_value->type() != Json::realValue) return false;
+ double d = json_value->asDouble();
+ if (!IsIntegral(d) ||
+ d < static_cast<double>(std::numeric_limits<int32_t>::min()) ||
+ d > static_cast<double>(std::numeric_limits<int32_t>::max()))
+ return false;
+ *value = static_cast<int32_t>(d);
+ return true;
+}
+
+inline bool AsValue(Json::Value* json_value, uint64_t* value) {
+ if (json_value->type() != Json::stringValue) return false;
+ int result =
+ std::sscanf(json_value->asString().c_str(), "0x%016" PRIx64, value);
+ return result == 1;
+}
+
+inline bool AsValue(Json::Value* json_value, uint32_t* value) {
+ if (json_value->type() != Json::realValue) return false;
+ double d = json_value->asDouble();
+ if (!IsIntegral(d) || d < 0.0 ||
+ d > static_cast<double>(std::numeric_limits<uint32_t>::max()))
+ return false;
+ *value = static_cast<uint32_t>(d);
+ return true;
+}
+
+inline bool AsValue(Json::Value* json_value, uint8_t* value) {
+ uint32_t value32 = 0;
+ AsValue(json_value, &value32);
+ if (value32 > std::numeric_limits<uint8_t>::max())
+ return false;
+ *value = static_cast<uint8_t>(value32);
+ return true;
+}
+
+inline bool AsValue(Json::Value* json_value, float* value) {
+ if (json_value->type() != Json::realValue) return false;
+ *value = static_cast<float>(json_value->asDouble());
+ return true;
+}
+
+template <typename T>
+inline bool AsArray(Json::Value* json_value, uint32_t count, T* values) {
+ if (json_value->type() != Json::arrayValue || json_value->size() != count)
+ return false;
+ for (uint32_t i = 0; i < count; ++i) {
+ if (!AsValue(&(*json_value)[i], values + i)) return false;
+ }
+ return true;
+}
+
+template <typename T, unsigned int N>
+inline bool AsValue(Json::Value* json_value, T (*value)[N]) {
+ return AsArray(json_value, N, *value);
+}
+
+template <size_t N>
+inline bool AsValue(Json::Value* json_value, char (*value)[N]) {
+ if (json_value->type() != Json::stringValue) return false;
+ size_t len = json_value->asString().length();
+ if (len >= N)
+ return false;
+ memcpy(*value, json_value->asString().c_str(), len);
+ memset(*value + len, 0, N-len);
+ return true;
+}
+
+template <typename T, typename = EnableForEnum<T>, typename = void>
+inline bool AsValue(Json::Value* json_value, T* t) {
+ uint32_t value = 0;
+ if (!AsValue(json_value, &value))
+ return false;
+ if (!EnumTraits<T>::exist(value)) return false;
+ *t = static_cast<T>(value);
+ return true;
+}
+
+template <typename T>
+inline bool AsValue(Json::Value* json_value, std::vector<T>* value) {
+ if (json_value->type() != Json::arrayValue) return false;
+ int size = json_value->size();
+ value->resize(size);
+ return AsArray(json_value, size, value->data());
+}
+
+template <typename F, typename S>
+inline bool AsValue(Json::Value* json_value, std::pair<F, S>* value) {
+ if (json_value->type() != Json::arrayValue || json_value->size() != 2)
+ return false;
+ return AsValue(&(*json_value)[0], &value->first) &&
+ AsValue(&(*json_value)[1], &value->second);
+}
+
+template <typename F, typename S>
+inline bool AsValue(Json::Value* json_value, std::map<F, S>* value) {
+ if (json_value->type() != Json::arrayValue) return false;
+ int size = json_value->size();
+ for (int i = 0; i < size; ++i) {
+ std::pair<F, S> elem;
+ if (!AsValue(&(*json_value)[i], &elem)) return false;
+ if (!value->insert(elem).second)
+ return false;
+ }
+ return true;
+}
+
+template <typename T>
+bool ReadValue(Json::Value* object, const char* key, T* value,
+ std::string* errors) {
+ Json::Value json_value = (*object)[key];
+ if (!json_value) {
+ if (errors)
+ *errors = std::string(key) + " missing.";
+ return false;
+ }
+ if (AsValue(&json_value, value)) return true;
+ if (errors)
+ *errors = std::string("Wrong type for ") + std::string(key) + ".";
+ return false;
+}
+
+template <typename Visitor, typename T>
+inline bool VisitForRead(Visitor* visitor, T* t) {
+ return Iterate(visitor, t);
+}
+
+class JsonReaderVisitor {
+ public:
+ JsonReaderVisitor(Json::Value* object, std::string* errors)
+ : object_(object), errors_(errors) {}
+
+ template <typename T> bool Visit(const char* key, T* value) const {
+ return ReadValue(object_, key, value, errors_);
+ }
+
+ template <typename T, uint32_t N>
+ bool VisitArray(const char* key, uint32_t count, T (*value)[N]) {
+ if (count > N)
+ return false;
+ Json::Value json_value = (*object_)[key];
+ if (!json_value) {
+ if (errors_)
+ *errors_ = std::string(key) + " missing.";
+ return false;
+ }
+ if (AsArray(&json_value, count, *value)) return true;
+ if (errors_)
+ *errors_ = std::string("Wrong type for ") + std::string(key) + ".";
+ return false;
+ }
+
+
+ private:
+ Json::Value* object_;
+ std::string* errors_;
+};
+
+template <typename T, typename /*= EnableForStruct<T>*/>
+bool AsValue(Json::Value* json_value, T* t) {
+ if (json_value->type() != Json::objectValue) return false;
+ JsonReaderVisitor visitor(json_value, nullptr);
+ return VisitForRead(&visitor, t);
+}
+
+
+template <typename T> std::string VkTypeToJson(const T& t) {
+ JsonWriterVisitor visitor;
+ VisitForWrite(&visitor, t);
+ return visitor.get_object().toStyledString();
+}
+
+template <typename T> bool VkTypeFromJson(const std::string& json,
+ T* t,
+ std::string* errors) {
+ *t = T();
+ Json::Value object(Json::objectValue);
+ Json::Reader reader;
+ reader.parse(json, object, false);
+ if (!object) {
+ if (errors) errors->assign(reader.getFormatedErrorMessages());
+ return false;
+ }
+ return AsValue(&object, t);
+}
+
+} // anonymous namespace
+
+std::string VkJsonInstanceToJson(const VkJsonInstance& instance) {
+ return VkTypeToJson(instance);
+}
+
+bool VkJsonInstanceFromJson(const std::string& json,
+ VkJsonInstance* instance,
+ std::string* errors) {
+ return VkTypeFromJson(json, instance, errors);
+}
+
+std::string VkJsonDeviceToJson(const VkJsonDevice& device) {
+ return VkTypeToJson(device);
+}
+
+bool VkJsonDeviceFromJson(const std::string& json,
+ VkJsonDevice* device,
+ std::string* errors) {
+ return VkTypeFromJson(json, device, errors);
+};
+
+std::string VkJsonImageFormatPropertiesToJson(
+ const VkImageFormatProperties& properties) {
+ return VkTypeToJson(properties);
+}
+
+bool VkJsonImageFormatPropertiesFromJson(const std::string& json,
+ VkImageFormatProperties* properties,
+ std::string* errors) {
+ return VkTypeFromJson(json, properties, errors);
+};
diff --git a/vulkan/vkjson/vkjson.h b/vulkan/vkjson/vkjson.h
new file mode 100644
index 0000000..5e8428a
--- /dev/null
+++ b/vulkan/vkjson/vkjson.h
@@ -0,0 +1,162 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2015-2016 The Khronos Group Inc.
+// Copyright (c) 2015-2016 Valve Corporation
+// Copyright (c) 2015-2016 LunarG, Inc.
+// Copyright (c) 2015-2016 Google, 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.
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef VKJSON_H_
+#define VKJSON_H_
+
+#include <vulkan/vulkan.h>
+#include <string.h>
+
+#include <map>
+#include <string>
+#include <vector>
+
+#ifdef WIN32
+#undef min
+#undef max
+#endif
+
+#ifndef VK_API_VERSION_1_0
+#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)
+#endif
+
+#ifndef VK_API_VERSION_1_1
+#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)
+#endif
+
+struct VkJsonLayer {
+ VkLayerProperties properties;
+ std::vector<VkExtensionProperties> extensions;
+};
+
+struct VkJsonExtVariablePointerFeatures {
+ VkJsonExtVariablePointerFeatures() {
+ memset(&variable_pointer_features_khr, 0,
+ sizeof(VkPhysicalDeviceVariablePointerFeaturesKHR));
+ }
+ VkPhysicalDeviceVariablePointerFeaturesKHR variable_pointer_features_khr;
+};
+
+struct VkJsonDevice {
+ VkJsonDevice() {
+ memset(&properties, 0, sizeof(VkPhysicalDeviceProperties));
+ memset(&features, 0, sizeof(VkPhysicalDeviceFeatures));
+ memset(&memory, 0, sizeof(VkPhysicalDeviceMemoryProperties));
+ memset(&subgroup_properties, 0, sizeof(VkPhysicalDeviceSubgroupProperties));
+ memset(&point_clipping_properties, 0,
+ sizeof(VkPhysicalDevicePointClippingProperties));
+ memset(&multiview_properties, 0,
+ sizeof(VkPhysicalDeviceMultiviewProperties));
+ memset(&id_properties, 0, sizeof(VkPhysicalDeviceIDProperties));
+ memset(&maintenance3_properties, 0,
+ sizeof(VkPhysicalDeviceMaintenance3Properties));
+ memset(&bit16_storage_features, 0,
+ sizeof(VkPhysicalDevice16BitStorageFeatures));
+ memset(&multiview_features, 0, sizeof(VkPhysicalDeviceMultiviewFeatures));
+ memset(&variable_pointer_features, 0,
+ sizeof(VkPhysicalDeviceVariablePointerFeatures));
+ memset(&protected_memory_features, 0,
+ sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
+ memset(&sampler_ycbcr_conversion_features, 0,
+ sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
+ memset(&shader_draw_parameter_features, 0,
+ sizeof(VkPhysicalDeviceShaderDrawParameterFeatures));
+ }
+ VkPhysicalDeviceProperties properties;
+ VkPhysicalDeviceFeatures features;
+ VkJsonExtVariablePointerFeatures ext_variable_pointer_features;
+ VkPhysicalDeviceMemoryProperties memory;
+ std::vector<VkQueueFamilyProperties> queues;
+ std::vector<VkExtensionProperties> extensions;
+ std::vector<VkLayerProperties> layers;
+ std::map<VkFormat, VkFormatProperties> formats;
+ VkPhysicalDeviceSubgroupProperties subgroup_properties;
+ VkPhysicalDevicePointClippingProperties point_clipping_properties;
+ VkPhysicalDeviceMultiviewProperties multiview_properties;
+ VkPhysicalDeviceIDProperties id_properties;
+ VkPhysicalDeviceMaintenance3Properties maintenance3_properties;
+ VkPhysicalDevice16BitStorageFeatures bit16_storage_features;
+ VkPhysicalDeviceMultiviewFeatures multiview_features;
+ VkPhysicalDeviceVariablePointerFeatures variable_pointer_features;
+ VkPhysicalDeviceProtectedMemoryFeatures protected_memory_features;
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures
+ sampler_ycbcr_conversion_features;
+ VkPhysicalDeviceShaderDrawParameterFeatures shader_draw_parameter_features;
+ std::map<VkExternalFenceHandleTypeFlagBits, VkExternalFenceProperties>
+ external_fence_properties;
+ std::map<VkExternalSemaphoreHandleTypeFlagBits, VkExternalSemaphoreProperties>
+ external_semaphore_properties;
+};
+
+struct VkJsonDeviceGroup {
+ VkJsonDeviceGroup() {
+ memset(&properties, 0, sizeof(VkPhysicalDeviceGroupProperties));
+ }
+ VkPhysicalDeviceGroupProperties properties;
+ std::vector<uint32_t> device_inds;
+};
+
+struct VkJsonInstance {
+ VkJsonInstance() : api_version(0) {}
+ uint32_t api_version;
+ std::vector<VkJsonLayer> layers;
+ std::vector<VkExtensionProperties> extensions;
+ std::vector<VkJsonDevice> devices;
+ std::vector<VkJsonDeviceGroup> device_groups;
+};
+
+VkJsonInstance VkJsonGetInstance();
+std::string VkJsonInstanceToJson(const VkJsonInstance& instance);
+bool VkJsonInstanceFromJson(const std::string& json,
+ VkJsonInstance* instance,
+ std::string* errors);
+
+VkJsonDevice VkJsonGetDevice(VkInstance instance,
+ VkPhysicalDevice device,
+ uint32_t instanceExtensionCount,
+ const char* const* instanceExtensions);
+std::string VkJsonDeviceToJson(const VkJsonDevice& device);
+bool VkJsonDeviceFromJson(const std::string& json,
+ VkJsonDevice* device,
+ std::string* errors);
+
+std::string VkJsonImageFormatPropertiesToJson(
+ const VkImageFormatProperties& properties);
+bool VkJsonImageFormatPropertiesFromJson(const std::string& json,
+ VkImageFormatProperties* properties,
+ std::string* errors);
+
+// Backward-compatibility aliases
+typedef VkJsonDevice VkJsonAllProperties;
+inline VkJsonAllProperties VkJsonGetAllProperties(
+ VkPhysicalDevice physicalDevice) {
+ return VkJsonGetDevice(VK_NULL_HANDLE, physicalDevice, 0, nullptr);
+}
+inline std::string VkJsonAllPropertiesToJson(
+ const VkJsonAllProperties& properties) {
+ return VkJsonDeviceToJson(properties);
+}
+inline bool VkJsonAllPropertiesFromJson(const std::string& json,
+ VkJsonAllProperties* properties,
+ std::string* errors) {
+ return VkJsonDeviceFromJson(json, properties, errors);
+}
+
+#endif // VKJSON_H_
diff --git a/vulkan/vkjson/vkjson_info.cc b/vulkan/vkjson/vkjson_info.cc
new file mode 100644
index 0000000..3c4b08b
--- /dev/null
+++ b/vulkan/vkjson/vkjson_info.cc
@@ -0,0 +1,184 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2015-2016 The Khronos Group Inc.
+// Copyright (c) 2015-2016 Valve Corporation
+// Copyright (c) 2015-2016 LunarG, Inc.
+// Copyright (c) 2015-2016 Google, 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.
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef VK_PROTOTYPES
+#define VK_PROTOTYPES
+#endif
+
+#include "vkjson.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <iostream>
+#include <vector>
+
+const uint32_t unsignedNegOne = (uint32_t)(-1);
+
+struct Options {
+ bool instance = false;
+ uint32_t device_index = unsignedNegOne;
+ std::string device_name;
+ std::string output_file;
+};
+
+bool ParseOptions(int argc, char* argv[], Options* options) {
+ for (int i = 1; i < argc; ++i) {
+ std::string arg(argv[i]);
+ if (arg == "--instance" || arg == "-i") {
+ options->instance = true;
+ } else if (arg == "--first" || arg == "-f") {
+ options->device_index = 0;
+ } else {
+ ++i;
+ if (i >= argc) {
+ std::cerr << "Missing parameter after: " << arg << std::endl;
+ return false;
+ }
+ std::string arg2(argv[i]);
+ if (arg == "--device-index" || arg == "-d") {
+ int result = sscanf(arg2.c_str(), "%u", &options->device_index);
+ if (result != 1) {
+ options->device_index = static_cast<uint32_t>(-1);
+ std::cerr << "Unable to parse index: " << arg2 << std::endl;
+ return false;
+ }
+ } else if (arg == "--device-name" || arg == "-n") {
+ options->device_name = arg2;
+ } else if (arg == "--output" || arg == "-o") {
+ options->output_file = arg2;
+ } else {
+ std::cerr << "Unknown argument: " << arg << std::endl;
+ return false;
+ }
+ }
+ }
+ if (options->instance && (options->device_index != unsignedNegOne ||
+ !options->device_name.empty())) {
+ std::cerr << "Specifying a specific device is incompatible with dumping "
+ "the whole instance." << std::endl;
+ return false;
+ }
+ if (options->device_index != unsignedNegOne && !options->device_name.empty()) {
+ std::cerr << "Must specify only one of device index and device name."
+ << std::endl;
+ return false;
+ }
+ if (options->instance && options->output_file.empty()) {
+ std::cerr << "Must specify an output file when dumping the whole instance."
+ << std::endl;
+ return false;
+ }
+ if (!options->output_file.empty() && !options->instance &&
+ options->device_index == unsignedNegOne && options->device_name.empty()) {
+ std::cerr << "Must specify instance, device index, or device name when "
+ "specifying "
+ "output file." << std::endl;
+ return false;
+ }
+ return true;
+}
+
+bool Dump(const VkJsonInstance& instance, const Options& options) {
+ const VkJsonDevice* out_device = nullptr;
+ if (options.device_index != unsignedNegOne) {
+ if (static_cast<uint32_t>(options.device_index) >=
+ instance.devices.size()) {
+ std::cerr << "Error: device " << options.device_index
+ << " requested but only " << instance.devices.size()
+ << " devices found." << std::endl;
+ return false;
+ }
+ out_device = &instance.devices[options.device_index];
+ } else if (!options.device_name.empty()) {
+ for (const auto& device : instance.devices) {
+ if (device.properties.deviceName == options.device_name) {
+ out_device = &device;
+ }
+ }
+ if (!out_device) {
+ std::cerr << "Error: device '" << options.device_name
+ << "' requested but not found." << std::endl;
+ return false;
+ }
+ }
+
+ std::string output_file;
+ if (options.output_file.empty()) {
+ assert(out_device);
+#if defined(ANDROID)
+ output_file.assign("/sdcard/Android/" + std::string(out_device->properties.deviceName));
+#else
+ output_file.assign(out_device->properties.deviceName);
+#endif
+ output_file.append(".json");
+ } else {
+ output_file = options.output_file;
+ }
+ FILE* file = nullptr;
+ if (output_file == "-") {
+ file = stdout;
+ } else {
+ file = fopen(output_file.c_str(), "w");
+ if (!file) {
+ std::cerr << "Unable to open file " << output_file << "." << std::endl;
+ return false;
+ }
+ }
+
+ std::string json = out_device ? VkJsonDeviceToJson(*out_device)
+ : VkJsonInstanceToJson(instance);
+ fwrite(json.data(), 1, json.size(), file);
+ fputc('\n', file);
+
+ if (output_file != "-") {
+ fclose(file);
+ std::cout << "Wrote file " << output_file;
+ if (out_device)
+ std::cout << " for device " << out_device->properties.deviceName;
+ std::cout << "." << std::endl;
+ }
+ return true;
+}
+
+int main(int argc, char* argv[]) {
+#if defined(ANDROID)
+ int vulkanSupport = InitVulkan();
+ if (vulkanSupport == 0)
+ return 1;
+#endif
+ Options options;
+ if (!ParseOptions(argc, argv, &options))
+ return 1;
+
+ VkJsonInstance instance = VkJsonGetInstance();
+ if (options.instance || options.device_index != unsignedNegOne ||
+ !options.device_name.empty()) {
+ Dump(instance, options);
+ } else {
+ for (uint32_t i = 0, n = static_cast<uint32_t>(instance.devices.size()); i < n; i++) {
+ options.device_index = i;
+ Dump(instance, options);
+ }
+ }
+
+ return 0;
+}
diff --git a/vulkan/vkjson/vkjson_instance.cc b/vulkan/vkjson/vkjson_instance.cc
new file mode 100644
index 0000000..db0450d
--- /dev/null
+++ b/vulkan/vkjson/vkjson_instance.cc
@@ -0,0 +1,417 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2015-2016 The Khronos Group Inc.
+// Copyright (c) 2015-2016 Valve Corporation
+// Copyright (c) 2015-2016 LunarG, Inc.
+// Copyright (c) 2015-2016 Google, 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.
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef VK_PROTOTYPES
+#define VK_PROTOTYPES
+#endif
+
+#include "vkjson.h"
+
+#include <algorithm>
+#include <utility>
+
+namespace {
+const char* kSupportedInstanceExtensions[] = {
+ "VK_KHR_get_physical_device_properties2"};
+
+bool EnumerateExtensions(const char* layer_name,
+ std::vector<VkExtensionProperties>* extensions) {
+ VkResult result;
+ uint32_t count = 0;
+ result = vkEnumerateInstanceExtensionProperties(layer_name, &count, nullptr);
+ if (result != VK_SUCCESS)
+ return false;
+ extensions->resize(count);
+ result = vkEnumerateInstanceExtensionProperties(layer_name, &count,
+ extensions->data());
+ if (result != VK_SUCCESS)
+ return false;
+ return true;
+}
+
+bool HasExtension(const char* extension_name,
+ uint32_t count,
+ const char* const* extensions) {
+ return std::find_if(extensions, extensions + count,
+ [extension_name](const char* extension) {
+ return strcmp(extension, extension_name) == 0;
+ }) != extensions + count;
+}
+
+bool HasExtension(const char* extension_name,
+ const std::vector<VkExtensionProperties>& extensions) {
+ return std::find_if(extensions.cbegin(), extensions.cend(),
+ [extension_name](const VkExtensionProperties& extension) {
+ return strcmp(extension.extensionName,
+ extension_name) == 0;
+ }) != extensions.cend();
+}
+} // anonymous namespace
+
+VkJsonDevice VkJsonGetDevice(VkInstance instance,
+ VkPhysicalDevice physical_device,
+ uint32_t instance_extension_count,
+ const char* const* instance_extensions) {
+ VkJsonDevice device;
+
+ PFN_vkGetPhysicalDeviceFeatures2KHR vkpGetPhysicalDeviceFeatures2KHR =
+ nullptr;
+ if (instance != VK_NULL_HANDLE &&
+ HasExtension("VK_KHR_get_physical_device_properties2",
+ instance_extension_count, instance_extensions)) {
+ vkpGetPhysicalDeviceFeatures2KHR =
+ reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures2KHR>(
+ vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2KHR"));
+ }
+
+ uint32_t extension_count = 0;
+ vkEnumerateDeviceExtensionProperties(physical_device, nullptr,
+ &extension_count, nullptr);
+ if (extension_count > 0) {
+ device.extensions.resize(extension_count);
+ vkEnumerateDeviceExtensionProperties(
+ physical_device, nullptr, &extension_count, device.extensions.data());
+ }
+
+ uint32_t layer_count = 0;
+ vkEnumerateDeviceLayerProperties(physical_device, &layer_count, nullptr);
+ if (layer_count > 0) {
+ device.layers.resize(layer_count);
+ vkEnumerateDeviceLayerProperties(physical_device, &layer_count,
+ device.layers.data());
+ }
+
+ vkGetPhysicalDeviceProperties(physical_device, &device.properties);
+ if (HasExtension("VK_KHR_get_physical_device_properties2",
+ instance_extension_count, instance_extensions)) {
+ VkPhysicalDeviceFeatures2KHR features = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
+ nullptr,
+ {} // features
+ };
+ if (HasExtension("VK_KHR_variable_pointers", device.extensions)) {
+ device.ext_variable_pointer_features.variable_pointer_features_khr.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR;
+ device.ext_variable_pointer_features.variable_pointer_features_khr.pNext =
+ features.pNext;
+ features.pNext =
+ &device.ext_variable_pointer_features.variable_pointer_features_khr;
+ }
+ vkpGetPhysicalDeviceFeatures2KHR(physical_device, &features);
+ device.features = features.features;
+ } else {
+ vkGetPhysicalDeviceFeatures(physical_device, &device.features);
+ }
+ vkGetPhysicalDeviceMemoryProperties(physical_device, &device.memory);
+
+ uint32_t queue_family_count = 0;
+ vkGetPhysicalDeviceQueueFamilyProperties(physical_device, &queue_family_count,
+ nullptr);
+ if (queue_family_count > 0) {
+ device.queues.resize(queue_family_count);
+ vkGetPhysicalDeviceQueueFamilyProperties(
+ physical_device, &queue_family_count, device.queues.data());
+ }
+
+ VkFormatProperties format_properties = {};
+ for (VkFormat format = VK_FORMAT_R4G4_UNORM_PACK8;
+ format <= VK_FORMAT_END_RANGE;
+ format = static_cast<VkFormat>(format + 1)) {
+ vkGetPhysicalDeviceFormatProperties(physical_device, format,
+ &format_properties);
+ if (format_properties.linearTilingFeatures ||
+ format_properties.optimalTilingFeatures ||
+ format_properties.bufferFeatures) {
+ device.formats.insert(std::make_pair(format, format_properties));
+ }
+ }
+
+ if (device.properties.apiVersion >= VK_API_VERSION_1_1) {
+ for (VkFormat format = VK_FORMAT_G8B8G8R8_422_UNORM;
+ format <= VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM;
+ format = static_cast<VkFormat>(format + 1)) {
+ vkGetPhysicalDeviceFormatProperties(physical_device, format,
+ &format_properties);
+ if (format_properties.linearTilingFeatures ||
+ format_properties.optimalTilingFeatures ||
+ format_properties.bufferFeatures) {
+ device.formats.insert(std::make_pair(format, format_properties));
+ }
+ }
+
+ PFN_vkGetPhysicalDeviceProperties2 vkpGetPhysicalDeviceProperties2 =
+ reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>(
+ vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2"));
+ if (vkpGetPhysicalDeviceProperties2) {
+ VkPhysicalDeviceProperties2 properties2 = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, nullptr, {}};
+
+ device.subgroup_properties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
+ device.subgroup_properties.pNext = properties2.pNext;
+ properties2.pNext = &device.subgroup_properties;
+
+ device.point_clipping_properties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
+ device.point_clipping_properties.pNext = properties2.pNext;
+ properties2.pNext = &device.point_clipping_properties;
+
+ device.multiview_properties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
+ device.multiview_properties.pNext = properties2.pNext;
+ properties2.pNext = &device.multiview_properties;
+
+ device.id_properties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
+ device.id_properties.pNext = properties2.pNext;
+ properties2.pNext = &device.id_properties;
+
+ device.maintenance3_properties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
+ device.maintenance3_properties.pNext = properties2.pNext;
+ properties2.pNext = &device.maintenance3_properties;
+
+ (*vkpGetPhysicalDeviceProperties2)(physical_device, &properties2);
+ }
+
+ PFN_vkGetPhysicalDeviceFeatures2 vkpGetPhysicalDeviceFeatures2 =
+ reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures2>(
+ vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2"));
+ if (vkpGetPhysicalDeviceFeatures2) {
+ VkPhysicalDeviceFeatures2 features2 = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, nullptr, {}};
+
+ device.bit16_storage_features.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
+ device.bit16_storage_features.pNext = features2.pNext;
+ features2.pNext = &device.bit16_storage_features;
+
+ device.multiview_features.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
+ device.multiview_features.pNext = features2.pNext;
+ features2.pNext = &device.multiview_features;
+
+ device.variable_pointer_features.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
+ device.variable_pointer_features.pNext = features2.pNext;
+ features2.pNext = &device.variable_pointer_features;
+
+ device.protected_memory_features.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
+ device.protected_memory_features.pNext = features2.pNext;
+ features2.pNext = &device.protected_memory_features;
+
+ device.sampler_ycbcr_conversion_features.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
+ device.sampler_ycbcr_conversion_features.pNext = features2.pNext;
+ features2.pNext = &device.sampler_ycbcr_conversion_features;
+
+ device.shader_draw_parameter_features.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES;
+ device.shader_draw_parameter_features.pNext = features2.pNext;
+ features2.pNext = &device.shader_draw_parameter_features;
+
+ (*vkpGetPhysicalDeviceFeatures2)(physical_device, &features2);
+ }
+
+ PFN_vkGetPhysicalDeviceExternalFenceProperties
+ vkpGetPhysicalDeviceExternalFenceProperties =
+ reinterpret_cast<PFN_vkGetPhysicalDeviceExternalFenceProperties>(
+ vkGetInstanceProcAddr(
+ instance, "vkGetPhysicalDeviceExternalFenceProperties"));
+ if (vkpGetPhysicalDeviceExternalFenceProperties) {
+ VkPhysicalDeviceExternalFenceInfo external_fence_info = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, nullptr,
+ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT};
+ VkExternalFenceProperties external_fence_properties = {};
+
+ for (VkExternalFenceHandleTypeFlagBits handle_type =
+ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT;
+ handle_type <= VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
+ handle_type = static_cast<VkExternalFenceHandleTypeFlagBits>(
+ handle_type << 1)) {
+ external_fence_info.handleType = handle_type;
+ (*vkpGetPhysicalDeviceExternalFenceProperties)(
+ physical_device, &external_fence_info, &external_fence_properties);
+ if (external_fence_properties.exportFromImportedHandleTypes ||
+ external_fence_properties.compatibleHandleTypes ||
+ external_fence_properties.externalFenceFeatures) {
+ device.external_fence_properties.insert(
+ std::make_pair(handle_type, external_fence_properties));
+ }
+ }
+ }
+
+ PFN_vkGetPhysicalDeviceExternalSemaphoreProperties
+ vkpGetPhysicalDeviceExternalSemaphoreProperties = reinterpret_cast<
+ PFN_vkGetPhysicalDeviceExternalSemaphoreProperties>(
+ vkGetInstanceProcAddr(
+ instance, "vkGetPhysicalDeviceExternalSemaphoreProperties"));
+ if (vkpGetPhysicalDeviceExternalSemaphoreProperties) {
+ VkPhysicalDeviceExternalSemaphoreInfo external_semaphore_info = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, nullptr,
+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT};
+ VkExternalSemaphoreProperties external_semaphore_properties = {};
+
+ for (VkExternalSemaphoreHandleTypeFlagBits handle_type =
+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT;
+ handle_type <= VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT;
+ handle_type = static_cast<VkExternalSemaphoreHandleTypeFlagBits>(
+ handle_type << 1)) {
+ external_semaphore_info.handleType = handle_type;
+ (*vkpGetPhysicalDeviceExternalSemaphoreProperties)(
+ physical_device, &external_semaphore_info,
+ &external_semaphore_properties);
+ if (external_semaphore_properties.exportFromImportedHandleTypes ||
+ external_semaphore_properties.compatibleHandleTypes ||
+ external_semaphore_properties.externalSemaphoreFeatures) {
+ device.external_semaphore_properties.insert(
+ std::make_pair(handle_type, external_semaphore_properties));
+ }
+ }
+ }
+ }
+
+ return device;
+}
+
+VkJsonInstance VkJsonGetInstance() {
+ VkJsonInstance instance;
+ VkResult result;
+ uint32_t count;
+
+ count = 0;
+ result = vkEnumerateInstanceLayerProperties(&count, nullptr);
+ if (result != VK_SUCCESS)
+ return VkJsonInstance();
+ if (count > 0) {
+ std::vector<VkLayerProperties> layers(count);
+ result = vkEnumerateInstanceLayerProperties(&count, layers.data());
+ if (result != VK_SUCCESS)
+ return VkJsonInstance();
+ instance.layers.reserve(count);
+ for (auto& layer : layers) {
+ instance.layers.push_back(VkJsonLayer{layer, std::vector<VkExtensionProperties>()});
+ if (!EnumerateExtensions(layer.layerName,
+ &instance.layers.back().extensions))
+ return VkJsonInstance();
+ }
+ }
+
+ if (!EnumerateExtensions(nullptr, &instance.extensions))
+ return VkJsonInstance();
+
+ std::vector<const char*> instance_extensions;
+ for (const auto extension : kSupportedInstanceExtensions) {
+ if (HasExtension(extension, instance.extensions))
+ instance_extensions.push_back(extension);
+ }
+
+ const VkApplicationInfo app_info = {VK_STRUCTURE_TYPE_APPLICATION_INFO,
+ nullptr,
+ "vkjson_info",
+ 1,
+ "",
+ 0,
+ VK_API_VERSION_1_0};
+ VkInstanceCreateInfo instance_info = {
+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
+ nullptr,
+ 0,
+ &app_info,
+ 0,
+ nullptr,
+ static_cast<uint32_t>(instance_extensions.size()),
+ instance_extensions.data()};
+ VkInstance vkinstance;
+ result = vkCreateInstance(&instance_info, nullptr, &vkinstance);
+ if (result != VK_SUCCESS)
+ return VkJsonInstance();
+
+ count = 0;
+ result = vkEnumeratePhysicalDevices(vkinstance, &count, nullptr);
+ if (result != VK_SUCCESS) {
+ vkDestroyInstance(vkinstance, nullptr);
+ return VkJsonInstance();
+ }
+
+ std::vector<VkPhysicalDevice> devices(count, VK_NULL_HANDLE);
+ result = vkEnumeratePhysicalDevices(vkinstance, &count, devices.data());
+ if (result != VK_SUCCESS) {
+ vkDestroyInstance(vkinstance, nullptr);
+ return VkJsonInstance();
+ }
+
+ std::map<VkPhysicalDevice, uint32_t> device_map;
+ const uint32_t sz = devices.size();
+ instance.devices.reserve(sz);
+ for (uint32_t i = 0; i < sz; ++i) {
+ device_map.insert(std::make_pair(devices[i], i));
+ instance.devices.emplace_back(VkJsonGetDevice(vkinstance, devices[i],
+ instance_extensions.size(),
+ instance_extensions.data()));
+ }
+
+ PFN_vkEnumerateInstanceVersion vkpEnumerateInstanceVersion =
+ reinterpret_cast<PFN_vkEnumerateInstanceVersion>(
+ vkGetInstanceProcAddr(nullptr, "vkEnumerateInstanceVersion"));
+ if (!vkpEnumerateInstanceVersion) {
+ instance.api_version = VK_API_VERSION_1_0;
+ } else {
+ result = (*vkpEnumerateInstanceVersion)(&instance.api_version);
+ if (result != VK_SUCCESS) {
+ vkDestroyInstance(vkinstance, nullptr);
+ return VkJsonInstance();
+ }
+ }
+
+ PFN_vkEnumeratePhysicalDeviceGroups vkpEnumeratePhysicalDeviceGroups =
+ reinterpret_cast<PFN_vkEnumeratePhysicalDeviceGroups>(
+ vkGetInstanceProcAddr(vkinstance, "vkEnumeratePhysicalDeviceGroups"));
+ if (vkpEnumeratePhysicalDeviceGroups) {
+ count = 0;
+ result = (*vkpEnumeratePhysicalDeviceGroups)(vkinstance, &count, nullptr);
+ if (result != VK_SUCCESS) {
+ vkDestroyInstance(vkinstance, nullptr);
+ return VkJsonInstance();
+ }
+
+ VkJsonDeviceGroup device_group;
+ std::vector<VkPhysicalDeviceGroupProperties> group_properties;
+ group_properties.resize(count);
+ result = (*vkpEnumeratePhysicalDeviceGroups)(vkinstance, &count,
+ group_properties.data());
+ if (result != VK_SUCCESS) {
+ vkDestroyInstance(vkinstance, nullptr);
+ return VkJsonInstance();
+ }
+ for (auto properties : group_properties) {
+ device_group.properties = properties;
+ for (uint32_t i = 0; i < properties.physicalDeviceCount; ++i) {
+ device_group.device_inds.push_back(
+ device_map[properties.physicalDevices[i]]);
+ }
+ instance.device_groups.push_back(device_group);
+ }
+ }
+
+ vkDestroyInstance(vkinstance, nullptr);
+ return instance;
+}
diff --git a/vulkan/vkjson/vkjson_unittest.cc b/vulkan/vkjson/vkjson_unittest.cc
new file mode 100644
index 0000000..de765cd
--- /dev/null
+++ b/vulkan/vkjson/vkjson_unittest.cc
@@ -0,0 +1,101 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2015-2016 The Khronos Group Inc.
+// Copyright (c) 2015-2016 Valve Corporation
+// Copyright (c) 2015-2016 LunarG, Inc.
+// Copyright (c) 2015-2016 Google, 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.
+///////////////////////////////////////////////////////////////////////////////
+
+#include "vkjson.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <iostream>
+
+#define EXPECT(X) if (!(X)) \
+ ReportFailure(__FILE__, __LINE__, #X);
+
+#define ASSERT(X) if (!(X)) { \
+ ReportFailure(__FILE__, __LINE__, #X); \
+ return 2; \
+}
+
+int g_failures;
+
+void ReportFailure(const char* file, int line, const char* assertion) {
+ std::cout << file << ":" << line << ": \"" << assertion << "\" failed."
+ << std::endl;
+ ++g_failures;
+}
+
+int main(int argc, char* argv[]) {
+ std::string errors;
+ bool result = false;
+
+ VkJsonInstance instance;
+ instance.devices.resize(1);
+ VkJsonDevice& device = instance.devices[0];
+
+ const char name[] = "Test device";
+ memcpy(device.properties.deviceName, name, sizeof(name));
+ device.properties.limits.maxImageDimension1D = 3;
+ device.properties.limits.maxSamplerLodBias = 3.5f;
+ device.properties.limits.bufferImageGranularity = 0x1ffffffffull;
+ device.properties.limits.maxViewportDimensions[0] = 1;
+ device.properties.limits.maxViewportDimensions[1] = 2;
+ VkFormatProperties format_props = {
+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
+ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
+ VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT};
+ device.formats.insert(std::make_pair(VK_FORMAT_R8_UNORM, format_props));
+ device.formats.insert(std::make_pair(VK_FORMAT_R8G8_UNORM, format_props));
+
+ std::string json = VkJsonInstanceToJson(instance);
+ std::cout << json << std::endl;
+
+ VkJsonInstance instance2;
+ result = VkJsonInstanceFromJson(json, &instance2, &errors);
+ EXPECT(result);
+ if (!result)
+ std::cout << "Error: " << errors << std::endl;
+ const VkJsonDevice& device2 = instance2.devices.at(0);
+
+ EXPECT(!memcmp(&device.properties, &device2.properties,
+ sizeof(device.properties)));
+ for (auto& kv : device.formats) {
+ auto it = device2.formats.find(kv.first);
+ EXPECT(it != device2.formats.end());
+ EXPECT(!memcmp(&kv.second, &it->second, sizeof(kv.second)));
+ }
+
+ VkImageFormatProperties props = {};
+ json = VkJsonImageFormatPropertiesToJson(props);
+ VkImageFormatProperties props2 = {};
+ result = VkJsonImageFormatPropertiesFromJson(json, &props2, &errors);
+ EXPECT(result);
+ if (!result)
+ std::cout << "Error: " << errors << std::endl;
+
+ EXPECT(!memcmp(&props, &props2, sizeof(props)));
+
+ if (g_failures) {
+ std::cout << g_failures << " failures." << std::endl;
+ return 1;
+ } else {
+ std::cout << "Success." << std::endl;
+ return 0;
+ }
+}