Commit e431aaa1 by Jonah Ryan-Davis Committed by Commit Bot

Rename EGL_ANGLE_workaround_control to EGL_ANGLE_feature_control.

For consistency, call these ANGLE "features", a subset of which may be workarounds. Also, whether the feature is enabled/disabled should be publically visible as "status". Bug: angleproject:1621 Change-Id: I0de90a932fbfe1fc9b59138153d616d29fa7268b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643410Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
parent 071d2a44
Name Name
ANGLE_workaround_control EGL_ANGLE_feature_control
Name Strings Name Strings
EGL_ANGLE_workaround_control EGL_ANGLE_feature_control
Contributors Contributors
...@@ -40,10 +40,10 @@ Dependencies ...@@ -40,10 +40,10 @@ Dependencies
Overview Overview
This extension adds two methods to query arrays holding This extension adds two methods to query arrays holding
information about the available workarounds for a given device. information about the available features for a given device.
One method is used to query the total count of available One method is used to query the total count of available
workarounds. Another method is used to query a string property features. Another method is used to query a string property
of an individual workaround given the workaround index. of an individual feature given the feature's index.
IP Status IP Status
...@@ -69,15 +69,15 @@ New Tokens ...@@ -69,15 +69,15 @@ New Tokens
Accepted as a queried <name> in eglQueryStringiANGLE: Accepted as a queried <name> in eglQueryStringiANGLE:
EGL_WORKAROUND_NAME_ANGLE 0x3460 EGL_FEATURE_NAME_ANGLE 0x3460
EGL_WORKAROUND_CATEGORY_ANGLE 0x3461 EGL_FEATURE_CATEGORY_ANGLE 0x3461
EGL_WORKAROUND_DESCRIPTION_ANGLE 0x3462 EGL_FEATURE_DESCRIPTION_ANGLE 0x3462
EGL_WORKAROUND_BUG_ANGLE 0x3463 EGL_FEATURE_BUG_ANGLE 0x3463
EGL_WORKAROUND_ENABLED_ANGLE 0x3464 EGL_FEATURE_STATUS_ANGLE 0x3464
Accepted as a queried <attribute> in eglQueryDisplayAttribANGLE Accepted as a queried <attribute> in eglQueryDisplayAttribANGLE
EGL_WORKAROUND_COUNT_ANGLE 0x3465 EGL_FEATURE_COUNT_ANGLE 0x3465
Add the following to the end of section 3.3 "EGL Queries": Add the following to the end of section 3.3 "EGL Queries":
...@@ -87,26 +87,26 @@ Add the following to the end of section 3.3 "EGL Queries": ...@@ -87,26 +87,26 @@ Add the following to the end of section 3.3 "EGL Queries":
eGLQueryStringiANGLE returns a pointer to a static, zero- eGLQueryStringiANGLE returns a pointer to a static, zero-
terminated string describing some aspect of the EGL terminated string describing some aspect of the EGL
implementation running on the specified display, from an array of implementation running on the specified display, from an array of
strings. name may be one of EGL_WORKAROUND_NAME_ANGLE, strings. name may be one of EGL_FEATURE_NAME_ANGLE,
EGL_WORKAROUND_CATEGORY_ANGLE, EGL_WORKAROUND_DESCRIPTION_ANGLE, EGL_FEATURE_CATEGORY_ANGLE, EGL_FEATURE_DESCRIPTION_ANGLE,
EGL_WORKAROUND_BUG_ANGLE, or EGL_WORKAROUND_ENABLED_ANGLE. Index EGL_FEATURE_BUG_ANGLE, or EGL_FEATURE_STATUS_ANGLE. Index
must be a valid index to access into the array of strings. must be a valid index to access into the array of strings.
The EGL_WORKAROUND_NAME_ANGLE array contains strings that The EGL_FEATURE_NAME_ANGLE array contains strings that
describe the name of each workaround available in the display. describe the name of each feature available in the display.
The EGL_WORKAROUND_CATEGORY_ANGLE array contains strings The EGL_FEATURE_CATEGORY_ANGLE array contains strings
with corresponding indices to the array of names. Each string with corresponding indices to the array of names. Each string
describes the category of the workaround at the specified index. describes the category of the feature at the specified index.
The EGL_WORKAROUND_DESCRIPTION_ANGLE array contains strings The EGL_FEATURE_DESCRIPTION_ANGLE array contains strings
with corresponding indices to the array of names. Each string with corresponding indices to the array of names. Each string
describes the workaround at the specified index. describes the feature at the specified index.
The EGL_WORKAROUND_BUG_ANGLE array contains strings The EGL_FEATURE_BUG_ANGLE array contains strings
with corresponding indices to the array of names. Each string with corresponding indices to the array of names. Each string
describes the bug related to the workaround at the specified describes the bug related to the feature at the specified
index. index.
The EGL_WORKAROUND_ENABLED_ANGLE array contains strings The EGL_FEATURE_STATUS_ANGLE array contains strings
with corresponding indices to the array of names. Each string has with corresponding indices to the array of names. Each string has
the value "true" if the workaround is currently enabled, or the value "enabled" if the feature is currently enabled, or
"false" if the workaround is currently disabled. "disabled" if the feature is currently disabled.
Errors Errors
...@@ -127,8 +127,8 @@ Add a section "3.4 Display Attributes" after "3.3 EGL Versioning" ...@@ -127,8 +127,8 @@ Add a section "3.4 Display Attributes" after "3.3 EGL Versioning"
EGLAttrib *value); EGLAttrib *value);
On success, EGL_TRUE is returned. On success, EGL_TRUE is returned.
If <attribute> is EGL_WORKAROUND_COUNT_ANGLE, the total count of If <attribute> is EGL_FEATURE_COUNT_ANGLE, the total count of
available workarounds is returned in <value>. available features is returned in <value>.
On failure, EGL_FALSE is returned. On failure, EGL_FALSE is returned.
An EGL_BAD_DISPLAY error is generated if dpy is not a valid An EGL_BAD_DISPLAY error is generated if dpy is not a valid
......
...@@ -209,21 +209,21 @@ EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy, ...@@ -209,21 +209,21 @@ EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
#define EGL_HIGH_POWER_ANGLE 0x0002 #define EGL_HIGH_POWER_ANGLE 0x0002
#endif /* EGL_ANGLE_power_preference */ #endif /* EGL_ANGLE_power_preference */
#ifndef EGL_ANGLE_workaround_control #ifndef EGL_ANGLE_feature_control
#define EGL_ANGLE_workaround_control 1 #define EGL_ANGLE_feature_control 1
#define EGL_WORKAROUND_NAME_ANGLE 0x3460 #define EGL_FEATURE_NAME_ANGLE 0x3460
#define EGL_WORKAROUND_CATEGORY_ANGLE 0x3461 #define EGL_FEATURE_CATEGORY_ANGLE 0x3461
#define EGL_WORKAROUND_DESCRIPTION_ANGLE 0x3462 #define EGL_FEATURE_DESCRIPTION_ANGLE 0x3462
#define EGL_WORKAROUND_BUG_ANGLE 0x3463 #define EGL_FEATURE_BUG_ANGLE 0x3463
#define EGL_WORKAROUND_ENABLED_ANGLE 0x3464 #define EGL_FEATURE_STATUS_ANGLE 0x3464
#define EGL_WORKAROUND_COUNT_ANGLE 0x3465 #define EGL_FEATURE_COUNT_ANGLE 0x3465
typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGIANGLEPROC) (EGLDisplay dpy, EGLint name, EGLint index); typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGIANGLEPROC) (EGLDisplay dpy, EGLint name, EGLint index);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBANGLEPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBANGLEPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
#ifdef EGL_EGLEXT_PROTOTYPES #ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI const char *EGLAPIENTRY eglQueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLint index); EGLAPI const char *EGLAPIENTRY eglQueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLint index);
EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribANGLE(EGLDisplay dpy, EGLint attribute, EGLAttrib *value); EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribANGLE(EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
#endif #endif
#endif /* EGL_ANGLE_workaround_control */ #endif /* EGL_ANGLE_feature_control */
// clang-format on // clang-format on
......
...@@ -32,6 +32,7 @@ constexpr char kFeatureCategoryD3DWorkarounds[] = "D3D workarounds"; ...@@ -32,6 +32,7 @@ constexpr char kFeatureCategoryD3DWorkarounds[] = "D3D workarounds";
constexpr char kFeatureCategoryD3DCompilerWorkarounds[] = "D3D compiler workarounds"; constexpr char kFeatureCategoryD3DCompilerWorkarounds[] = "D3D compiler workarounds";
constexpr char kFeatureCategoryVulkanWorkarounds[] = "Vulkan workarounds"; constexpr char kFeatureCategoryVulkanWorkarounds[] = "Vulkan workarounds";
constexpr char kFeatureCategoryVulkanFeatures[] = "Vulkan features"; constexpr char kFeatureCategoryVulkanFeatures[] = "Vulkan features";
constexpr char kFeatureCategoryUnknown[] = "Unknown";
inline const char *FeatureCategoryToString(const FeatureCategory &fc) inline const char *FeatureCategoryToString(const FeatureCategory &fc)
{ {
...@@ -62,11 +63,23 @@ inline const char *FeatureCategoryToString(const FeatureCategory &fc) ...@@ -62,11 +63,23 @@ inline const char *FeatureCategoryToString(const FeatureCategory &fc)
break; break;
default: default:
return "Unknown"; return kFeatureCategoryUnknown;
break; break;
} }
} }
constexpr char kFeatureStatusEnabled[] = "enabled";
constexpr char kFeatureStatusDisabled[] = "disabled";
inline const char *FeatureStatusToString(const bool &status)
{
if (status)
{
return kFeatureStatusEnabled;
}
return kFeatureStatusDisabled;
}
struct Feature; struct Feature;
using FeatureMap = std::map<std::string, Feature *>; using FeatureMap = std::map<std::string, Feature *>;
......
...@@ -90,6 +90,12 @@ ...@@ -90,6 +90,12 @@
<command name="eglReleaseDeviceANGLE"/> <command name="eglReleaseDeviceANGLE"/>
</require> </require>
</extension> </extension>
<extension name="EGL_ANGLE_feature_control" supported="egl">
<require>
<command name="eglQueryStringiANGLE"/>
<command name="eglQueryDisplayAttribANGLE"/>
</require>
</extension>
<extension name="EGL_ANGLE_stream_producer_d3d_texture" supported="egl"> <extension name="EGL_ANGLE_stream_producer_d3d_texture" supported="egl">
<require> <require>
<command name="eglCreateStreamProducerD3DTextureANGLE"/> <command name="eglCreateStreamProducerD3DTextureANGLE"/>
...@@ -109,11 +115,5 @@ ...@@ -109,11 +115,5 @@
<command name="eglProgramCacheResizeANGLE"/> <command name="eglProgramCacheResizeANGLE"/>
</require> </require>
</extension> </extension>
<extension name="EGL_ANGLE_workaround_control" supported="egl">
<require>
<command name="eglQueryStringiANGLE"/>
<command name="eglQueryDisplayAttribANGLE"/>
</require>
</extension>
</extensions> </extensions>
</registry> </registry>
...@@ -80,12 +80,12 @@ supported_egl_extensions = [ ...@@ -80,12 +80,12 @@ supported_egl_extensions = [
"EGL_ANGLE_d3d_share_handle_client_buffer", "EGL_ANGLE_d3d_share_handle_client_buffer",
"EGL_ANGLE_device_creation", "EGL_ANGLE_device_creation",
"EGL_ANGLE_device_d3d", "EGL_ANGLE_device_d3d",
"EGL_ANGLE_feature_control",
"EGL_ANGLE_program_cache_control", "EGL_ANGLE_program_cache_control",
"EGL_ANGLE_query_surface_pointer", "EGL_ANGLE_query_surface_pointer",
"EGL_ANGLE_stream_producer_d3d_texture", "EGL_ANGLE_stream_producer_d3d_texture",
"EGL_ANGLE_surface_d3d_texture_2d_share_handle", "EGL_ANGLE_surface_d3d_texture_2d_share_handle",
"EGL_ANGLE_window_fixed_size", "EGL_ANGLE_window_fixed_size",
"EGL_ANGLE_workaround_control",
"EGL_CHROMIUM_get_sync_values", "EGL_CHROMIUM_get_sync_values",
"EGL_EXT_create_context_robustness", "EGL_EXT_create_context_robustness",
"EGL_EXT_device_query", "EGL_EXT_device_query",
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
"GL/EGL entry points:scripts/egl.xml": "GL/EGL entry points:scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292", "842e24514c4cfe09fba703c17a0fd292",
"GL/EGL entry points:scripts/egl_angle_ext.xml": "GL/EGL entry points:scripts/egl_angle_ext.xml":
"5a960e91d1b0837828638e19db1b685a", "fc2e249239fb1365f6d145cdf1a3cfcf",
"GL/EGL entry points:scripts/entry_point_packed_gl_enums.json": "GL/EGL entry points:scripts/entry_point_packed_gl_enums.json":
"28238b0f52826c3794eaa1aa940238bf", "28238b0f52826c3794eaa1aa940238bf",
"GL/EGL entry points:scripts/generate_entry_points.py": "GL/EGL entry points:scripts/generate_entry_points.py":
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
"GL/EGL entry points:scripts/gl_angle_ext.xml": "GL/EGL entry points:scripts/gl_angle_ext.xml":
"11e1eb2cbe51ae6e7b8705d3506846d5", "11e1eb2cbe51ae6e7b8705d3506846d5",
"GL/EGL entry points:scripts/registry_xml.py": "GL/EGL entry points:scripts/registry_xml.py":
"79d48343cb33f2f534720f84dcba1b4f", "7f043b31380aa2fb0c82e65f802f8cf1",
"GL/EGL entry points:src/libANGLE/Context_gles_1_0_autogen.h": "GL/EGL entry points:src/libANGLE/Context_gles_1_0_autogen.h":
"fad4ec629b41e9d97ff57a132ad946cb", "fad4ec629b41e9d97ff57a132ad946cb",
"GL/EGL entry points:src/libANGLE/validationES1_autogen.h": "GL/EGL entry points:src/libANGLE/validationES1_autogen.h":
...@@ -138,25 +138,25 @@ ...@@ -138,25 +138,25 @@
"GL/EGL entry points:src/libGLESv2/libGLESv2_autogen.cpp": "GL/EGL entry points:src/libGLESv2/libGLESv2_autogen.cpp":
"c99457bcd86a5b94c61185c1bcddfdcb", "c99457bcd86a5b94c61185c1bcddfdcb",
"GL/EGL entry points:src/libGLESv2/libGLESv2_autogen.def": "GL/EGL entry points:src/libGLESv2/libGLESv2_autogen.def":
"054028c2a9caa4b303fc65e18e0320bc", "cc194ee102fd102ec7f52df0877053c1",
"GL/EGL/WGL loader:scripts/egl.xml": "GL/EGL/WGL loader:scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292", "842e24514c4cfe09fba703c17a0fd292",
"GL/EGL/WGL loader:scripts/egl_angle_ext.xml": "GL/EGL/WGL loader:scripts/egl_angle_ext.xml":
"5a960e91d1b0837828638e19db1b685a", "fc2e249239fb1365f6d145cdf1a3cfcf",
"GL/EGL/WGL loader:scripts/generate_loader.py": "GL/EGL/WGL loader:scripts/generate_loader.py":
"5a7cd014230fe04664d9613e65399d42", "5a7cd014230fe04664d9613e65399d42",
"GL/EGL/WGL loader:scripts/registry_xml.py": "GL/EGL/WGL loader:scripts/registry_xml.py":
"79d48343cb33f2f534720f84dcba1b4f", "7f043b31380aa2fb0c82e65f802f8cf1",
"GL/EGL/WGL loader:scripts/wgl.xml": "GL/EGL/WGL loader:scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4", "aa96419c582af2f6673430e2847693f4",
"GL/EGL/WGL loader:src/libEGL/egl_loader_autogen.cpp": "GL/EGL/WGL loader:src/libEGL/egl_loader_autogen.cpp":
"aa736e910cee09355f7ac646dd5e8576", "0ebe5668fba36b5b4ad5abb64c21ca32",
"GL/EGL/WGL loader:src/libEGL/egl_loader_autogen.h": "GL/EGL/WGL loader:src/libEGL/egl_loader_autogen.h":
"bdd2e54a7b23b9616efa14e0b4cc7169", "adfee42620344b47b5f2c934e4c58e37",
"GL/EGL/WGL loader:util/egl_loader_autogen.cpp": "GL/EGL/WGL loader:util/egl_loader_autogen.cpp":
"c7ee1ebf9d35e29d3ae907f3b71c3b74", "5e2ea1c54813036aa363eac2c1388f4a",
"GL/EGL/WGL loader:util/egl_loader_autogen.h": "GL/EGL/WGL loader:util/egl_loader_autogen.h":
"25c81800fe7efbc656570355824bf71b", "a4f0d640554d9c2b4f90f1f2271a1104",
"GL/EGL/WGL loader:util/gles_loader_autogen.cpp": "GL/EGL/WGL loader:util/gles_loader_autogen.cpp":
"34056ce8d9c18d3cdcd23e16b94508c4", "34056ce8d9c18d3cdcd23e16b94508c4",
"GL/EGL/WGL loader:util/gles_loader_autogen.h": "GL/EGL/WGL loader:util/gles_loader_autogen.h":
...@@ -418,7 +418,7 @@ ...@@ -418,7 +418,7 @@
"proc table:src/libGLESv2/proc_table_autogen.cpp": "proc table:src/libGLESv2/proc_table_autogen.cpp":
"7cf8dbd79fddffd89d2348d1210ba4ca", "7cf8dbd79fddffd89d2348d1210ba4ca",
"proc table:src/libGLESv2/proc_table_data.json": "proc table:src/libGLESv2/proc_table_data.json":
"d92a9202be39597e148545b6c0a7abb3", "4dfc7f64b7a44b93c83504d1c5332814",
"uniform type:src/common/gen_uniform_type_table.py": "uniform type:src/common/gen_uniform_type_table.py":
"9dd389f2b5793ba635169d61cef2dde9", "9dd389f2b5793ba635169d61cef2dde9",
"uniform type:src/common/uniform_type_info_autogen.cpp": "uniform type:src/common/uniform_type_info_autogen.cpp":
......
...@@ -1410,7 +1410,7 @@ DisplayExtensions::DisplayExtensions() ...@@ -1410,7 +1410,7 @@ DisplayExtensions::DisplayExtensions()
getFrameTimestamps(false), getFrameTimestamps(false),
recordable(false), recordable(false),
powerPreference(false), powerPreference(false),
workaroundControlANGLE(false) featureControlANGLE(false)
{} {}
std::vector<std::string> DisplayExtensions::getStrings() const std::vector<std::string> DisplayExtensions::getStrings() const
...@@ -1465,7 +1465,7 @@ std::vector<std::string> DisplayExtensions::getStrings() const ...@@ -1465,7 +1465,7 @@ std::vector<std::string> DisplayExtensions::getStrings() const
InsertExtensionString("EGL_ANDROID_get_frame_timestamps", getFrameTimestamps, &extensionStrings); InsertExtensionString("EGL_ANDROID_get_frame_timestamps", getFrameTimestamps, &extensionStrings);
InsertExtensionString("EGL_ANDROID_recordable", recordable, &extensionStrings); InsertExtensionString("EGL_ANDROID_recordable", recordable, &extensionStrings);
InsertExtensionString("EGL_ANGLE_power_preference", powerPreference, &extensionStrings); InsertExtensionString("EGL_ANGLE_power_preference", powerPreference, &extensionStrings);
InsertExtensionString("EGL_ANGLE_workaround_control", workaroundControlANGLE, &extensionStrings); InsertExtensionString("EGL_ANGLE_feature_control", featureControlANGLE, &extensionStrings);
// TODO(jmadill): Enable this when complete. // TODO(jmadill): Enable this when complete.
//InsertExtensionString("KHR_create_context_no_error", createContextNoError, &extensionStrings); //InsertExtensionString("KHR_create_context_no_error", createContextNoError, &extensionStrings);
// clang-format on // clang-format on
......
...@@ -884,8 +884,8 @@ struct DisplayExtensions ...@@ -884,8 +884,8 @@ struct DisplayExtensions
// EGL_ANGLE_power_preference // EGL_ANGLE_power_preference
bool powerPreference; bool powerPreference;
// EGL_ANGLE_workaround_control // EGL_ANGLE_feature_control
bool workaroundControlANGLE; bool featureControlANGLE;
}; };
struct DeviceExtensions struct DeviceExtensions
......
...@@ -1247,8 +1247,8 @@ void Display::initDisplayExtensions() ...@@ -1247,8 +1247,8 @@ void Display::initDisplayExtensions()
// that ANativeWindow is not recordable. // that ANativeWindow is not recordable.
mDisplayExtensions.recordable = true; mDisplayExtensions.recordable = true;
// EGL_ANGLE_workaround_control is implemented on all backends. // EGL_ANGLE_feature_control is implemented on all backends.
mDisplayExtensions.workaroundControlANGLE = true; mDisplayExtensions.featureControlANGLE = true;
mDisplayExtensionString = GenerateExtensionsString(mDisplayExtensions); mDisplayExtensionString = GenerateExtensionsString(mDisplayExtensions);
} }
...@@ -1448,27 +1448,20 @@ const char *Display::queryStringi(const EGLint name, const EGLint index) ...@@ -1448,27 +1448,20 @@ const char *Display::queryStringi(const EGLint name, const EGLint index)
const char *result = nullptr; const char *result = nullptr;
switch (name) switch (name)
{ {
case EGL_WORKAROUND_NAME_ANGLE: case EGL_FEATURE_NAME_ANGLE:
result = mFeatures[index]->name; result = mFeatures[index]->name;
break; break;
case EGL_WORKAROUND_CATEGORY_ANGLE: case EGL_FEATURE_CATEGORY_ANGLE:
result = angle::FeatureCategoryToString(mFeatures[index]->category); result = angle::FeatureCategoryToString(mFeatures[index]->category);
break; break;
case EGL_WORKAROUND_DESCRIPTION_ANGLE: case EGL_FEATURE_DESCRIPTION_ANGLE:
result = mFeatures[index]->description; result = mFeatures[index]->description;
break; break;
case EGL_WORKAROUND_BUG_ANGLE: case EGL_FEATURE_BUG_ANGLE:
result = mFeatures[index]->bug; result = mFeatures[index]->bug;
break; break;
case EGL_WORKAROUND_ENABLED_ANGLE: case EGL_FEATURE_STATUS_ANGLE:
if (mFeatures[index]->enabled) result = angle::FeatureStatusToString(mFeatures[index]->enabled);
{
result = "true";
}
else
{
result = "false";
}
break; break;
default: default:
UNREACHABLE(); UNREACHABLE();
...@@ -1486,7 +1479,7 @@ EGLAttrib Display::queryAttrib(const EGLint attribute) ...@@ -1486,7 +1479,7 @@ EGLAttrib Display::queryAttrib(const EGLint attribute)
value = reinterpret_cast<EGLAttrib>(mDevice); value = reinterpret_cast<EGLAttrib>(mDevice);
break; break;
case EGL_WORKAROUND_COUNT_ANGLE: case EGL_FEATURE_COUNT_ANGLE:
value = mFeatures.size(); value = mFeatures.size();
break; break;
......
...@@ -3732,9 +3732,9 @@ Error ValidateQueryStringiANGLE(const Display *display, EGLint name, EGLint inde ...@@ -3732,9 +3732,9 @@ Error ValidateQueryStringiANGLE(const Display *display, EGLint name, EGLint inde
{ {
ANGLE_TRY(ValidateDisplay(display)); ANGLE_TRY(ValidateDisplay(display));
if (!display->getExtensions().workaroundControlANGLE) if (!display->getExtensions().featureControlANGLE)
{ {
return EglBadDisplay() << "EGL_ANGLE_workaround_control extension is not available."; return EglBadDisplay() << "EGL_ANGLE_feature_control extension is not available.";
} }
if (index < 0) if (index < 0)
...@@ -3744,11 +3744,11 @@ Error ValidateQueryStringiANGLE(const Display *display, EGLint name, EGLint inde ...@@ -3744,11 +3744,11 @@ Error ValidateQueryStringiANGLE(const Display *display, EGLint name, EGLint inde
switch (name) switch (name)
{ {
case EGL_WORKAROUND_NAME_ANGLE: case EGL_FEATURE_NAME_ANGLE:
case EGL_WORKAROUND_CATEGORY_ANGLE: case EGL_FEATURE_CATEGORY_ANGLE:
case EGL_WORKAROUND_DESCRIPTION_ANGLE: case EGL_FEATURE_DESCRIPTION_ANGLE:
case EGL_WORKAROUND_BUG_ANGLE: case EGL_FEATURE_BUG_ANGLE:
case EGL_WORKAROUND_ENABLED_ANGLE: case EGL_FEATURE_STATUS_ANGLE:
break; break;
default: default:
return EglBadParameter() << "name is not valid."; return EglBadParameter() << "name is not valid.";
...@@ -3775,11 +3775,10 @@ Error ValidateQueryDisplayAttribBase(const Display *display, const EGLint attrib ...@@ -3775,11 +3775,10 @@ Error ValidateQueryDisplayAttribBase(const Display *display, const EGLint attrib
} }
break; break;
case EGL_WORKAROUND_COUNT_ANGLE: case EGL_FEATURE_COUNT_ANGLE:
if (!display->getExtensions().workaroundControlANGLE) if (!display->getExtensions().featureControlANGLE)
{ {
return EglBadDisplay() return EglBadDisplay() << "EGL_ANGLE_feature_control extension is not available.";
<< "EGL_ANGLE_workaround_control extension is not available.";
} }
break; break;
......
...@@ -63,6 +63,8 @@ PFNEGLGETNEXTFRAMEIDANDROIDPROC EGL_GetNextFrameIdANDROID; ...@@ -63,6 +63,8 @@ PFNEGLGETNEXTFRAMEIDANDROIDPROC EGL_GetNextFrameIdANDROID;
PFNEGLPRESENTATIONTIMEANDROIDPROC EGL_PresentationTimeANDROID; PFNEGLPRESENTATIONTIMEANDROIDPROC EGL_PresentationTimeANDROID;
PFNEGLCREATEDEVICEANGLEPROC EGL_CreateDeviceANGLE; PFNEGLCREATEDEVICEANGLEPROC EGL_CreateDeviceANGLE;
PFNEGLRELEASEDEVICEANGLEPROC EGL_ReleaseDeviceANGLE; PFNEGLRELEASEDEVICEANGLEPROC EGL_ReleaseDeviceANGLE;
PFNEGLQUERYDISPLAYATTRIBANGLEPROC EGL_QueryDisplayAttribANGLE;
PFNEGLQUERYSTRINGIANGLEPROC EGL_QueryStringiANGLE;
PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC EGL_ProgramCacheGetAttribANGLE; PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC EGL_ProgramCacheGetAttribANGLE;
PFNEGLPROGRAMCACHEPOPULATEANGLEPROC EGL_ProgramCachePopulateANGLE; PFNEGLPROGRAMCACHEPOPULATEANGLEPROC EGL_ProgramCachePopulateANGLE;
PFNEGLPROGRAMCACHEQUERYANGLEPROC EGL_ProgramCacheQueryANGLE; PFNEGLPROGRAMCACHEQUERYANGLEPROC EGL_ProgramCacheQueryANGLE;
...@@ -70,8 +72,6 @@ PFNEGLPROGRAMCACHERESIZEANGLEPROC EGL_ProgramCacheResizeANGLE; ...@@ -70,8 +72,6 @@ PFNEGLPROGRAMCACHERESIZEANGLEPROC EGL_ProgramCacheResizeANGLE;
PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE; PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE;
PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC EGL_CreateStreamProducerD3DTextureANGLE; PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC EGL_CreateStreamProducerD3DTextureANGLE;
PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE; PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE;
PFNEGLQUERYDISPLAYATTRIBANGLEPROC EGL_QueryDisplayAttribANGLE;
PFNEGLQUERYSTRINGIANGLEPROC EGL_QueryStringiANGLE;
PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM; PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM;
PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT; PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT;
PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT; PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT;
...@@ -181,6 +181,10 @@ void LoadEGL_EGL(LoadProc loadProc) ...@@ -181,6 +181,10 @@ void LoadEGL_EGL(LoadProc loadProc)
reinterpret_cast<PFNEGLCREATEDEVICEANGLEPROC>(loadProc("EGL_CreateDeviceANGLE")); reinterpret_cast<PFNEGLCREATEDEVICEANGLEPROC>(loadProc("EGL_CreateDeviceANGLE"));
EGL_ReleaseDeviceANGLE = EGL_ReleaseDeviceANGLE =
reinterpret_cast<PFNEGLRELEASEDEVICEANGLEPROC>(loadProc("EGL_ReleaseDeviceANGLE")); reinterpret_cast<PFNEGLRELEASEDEVICEANGLEPROC>(loadProc("EGL_ReleaseDeviceANGLE"));
EGL_QueryDisplayAttribANGLE = reinterpret_cast<PFNEGLQUERYDISPLAYATTRIBANGLEPROC>(
loadProc("EGL_QueryDisplayAttribANGLE"));
EGL_QueryStringiANGLE =
reinterpret_cast<PFNEGLQUERYSTRINGIANGLEPROC>(loadProc("EGL_QueryStringiANGLE"));
EGL_ProgramCacheGetAttribANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC>( EGL_ProgramCacheGetAttribANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC>(
loadProc("EGL_ProgramCacheGetAttribANGLE")); loadProc("EGL_ProgramCacheGetAttribANGLE"));
EGL_ProgramCachePopulateANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEPOPULATEANGLEPROC>( EGL_ProgramCachePopulateANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEPOPULATEANGLEPROC>(
...@@ -196,10 +200,6 @@ void LoadEGL_EGL(LoadProc loadProc) ...@@ -196,10 +200,6 @@ void LoadEGL_EGL(LoadProc loadProc)
loadProc("EGL_CreateStreamProducerD3DTextureANGLE")); loadProc("EGL_CreateStreamProducerD3DTextureANGLE"));
EGL_StreamPostD3DTextureANGLE = reinterpret_cast<PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC>( EGL_StreamPostD3DTextureANGLE = reinterpret_cast<PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC>(
loadProc("EGL_StreamPostD3DTextureANGLE")); loadProc("EGL_StreamPostD3DTextureANGLE"));
EGL_QueryDisplayAttribANGLE = reinterpret_cast<PFNEGLQUERYDISPLAYATTRIBANGLEPROC>(
loadProc("EGL_QueryDisplayAttribANGLE"));
EGL_QueryStringiANGLE =
reinterpret_cast<PFNEGLQUERYSTRINGIANGLEPROC>(loadProc("EGL_QueryStringiANGLE"));
EGL_GetSyncValuesCHROMIUM = EGL_GetSyncValuesCHROMIUM =
reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("EGL_GetSyncValuesCHROMIUM")); reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("EGL_GetSyncValuesCHROMIUM"));
EGL_QueryDeviceAttribEXT = EGL_QueryDeviceAttribEXT =
......
...@@ -67,6 +67,8 @@ extern PFNEGLGETNEXTFRAMEIDANDROIDPROC EGL_GetNextFrameIdANDROID; ...@@ -67,6 +67,8 @@ extern PFNEGLGETNEXTFRAMEIDANDROIDPROC EGL_GetNextFrameIdANDROID;
extern PFNEGLPRESENTATIONTIMEANDROIDPROC EGL_PresentationTimeANDROID; extern PFNEGLPRESENTATIONTIMEANDROIDPROC EGL_PresentationTimeANDROID;
extern PFNEGLCREATEDEVICEANGLEPROC EGL_CreateDeviceANGLE; extern PFNEGLCREATEDEVICEANGLEPROC EGL_CreateDeviceANGLE;
extern PFNEGLRELEASEDEVICEANGLEPROC EGL_ReleaseDeviceANGLE; extern PFNEGLRELEASEDEVICEANGLEPROC EGL_ReleaseDeviceANGLE;
extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC EGL_QueryDisplayAttribANGLE;
extern PFNEGLQUERYSTRINGIANGLEPROC EGL_QueryStringiANGLE;
extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC EGL_ProgramCacheGetAttribANGLE; extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC EGL_ProgramCacheGetAttribANGLE;
extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC EGL_ProgramCachePopulateANGLE; extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC EGL_ProgramCachePopulateANGLE;
extern PFNEGLPROGRAMCACHEQUERYANGLEPROC EGL_ProgramCacheQueryANGLE; extern PFNEGLPROGRAMCACHEQUERYANGLEPROC EGL_ProgramCacheQueryANGLE;
...@@ -74,8 +76,6 @@ extern PFNEGLPROGRAMCACHERESIZEANGLEPROC EGL_ProgramCacheResizeANGLE; ...@@ -74,8 +76,6 @@ extern PFNEGLPROGRAMCACHERESIZEANGLEPROC EGL_ProgramCacheResizeANGLE;
extern PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE; extern PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE;
extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC EGL_CreateStreamProducerD3DTextureANGLE; extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC EGL_CreateStreamProducerD3DTextureANGLE;
extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE; extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE;
extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC EGL_QueryDisplayAttribANGLE;
extern PFNEGLQUERYSTRINGIANGLEPROC EGL_QueryStringiANGLE;
extern PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM; extern PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM;
extern PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT; extern PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT;
extern PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT; extern PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT;
......
...@@ -367,7 +367,7 @@ EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribut ...@@ -367,7 +367,7 @@ EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribut
return EGL_TRUE; return EGL_TRUE;
} }
// EGL_ANGLE_workaround_control // EGL_ANGLE_feature_control
EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy, EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy,
EGLint attribute, EGLint attribute,
EGLAttrib *value) EGLAttrib *value)
...@@ -1421,6 +1421,7 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy ...@@ -1421,6 +1421,7 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy
return EGL_TRUE; return EGL_TRUE;
} }
// EGL_ANGLE_feature_control
ANGLE_EXPORT const char *EGLAPIENTRY EGL_QueryStringiANGLE(EGLDisplay dpy, ANGLE_EXPORT const char *EGLAPIENTRY EGL_QueryStringiANGLE(EGLDisplay dpy,
EGLint name, EGLint name,
EGLint index) EGLint index)
......
...@@ -47,7 +47,7 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy, ...@@ -47,7 +47,7 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy,
EGLint attribute, EGLint attribute,
EGLAttrib *value); EGLAttrib *value);
// EGL_ANGLE_workaround_control // EGL_ANGLE_feature_control
ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy, ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy,
EGLint attribute, EGLint attribute,
EGLAttrib *value); EGLAttrib *value);
...@@ -205,7 +205,7 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy ...@@ -205,7 +205,7 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy
const EGLint *timestamps, const EGLint *timestamps,
EGLnsecsANDROID *values); EGLnsecsANDROID *values);
// EGL_ANGLE_workaround_control // EGL_ANGLE_feature_control
ANGLE_EXPORT const char *EGLAPIENTRY EGL_QueryStringiANGLE(EGLDisplay dpy, ANGLE_EXPORT const char *EGLAPIENTRY EGL_QueryStringiANGLE(EGLDisplay dpy,
EGLint name, EGLint name,
EGLint index); EGLint index);
......
...@@ -1476,6 +1476,10 @@ EXPORTS ...@@ -1476,6 +1476,10 @@ EXPORTS
EGL_CreateDeviceANGLE EGL_CreateDeviceANGLE
EGL_ReleaseDeviceANGLE EGL_ReleaseDeviceANGLE
; EGL_ANGLE_feature_control
EGL_QueryDisplayAttribANGLE
EGL_QueryStringiANGLE
; EGL_ANGLE_program_cache_control ; EGL_ANGLE_program_cache_control
EGL_ProgramCacheGetAttribANGLE EGL_ProgramCacheGetAttribANGLE
EGL_ProgramCachePopulateANGLE EGL_ProgramCachePopulateANGLE
...@@ -1489,10 +1493,6 @@ EXPORTS ...@@ -1489,10 +1493,6 @@ EXPORTS
EGL_CreateStreamProducerD3DTextureANGLE EGL_CreateStreamProducerD3DTextureANGLE
EGL_StreamPostD3DTextureANGLE EGL_StreamPostD3DTextureANGLE
; EGL_ANGLE_workaround_control
EGL_QueryDisplayAttribANGLE
EGL_QueryStringiANGLE
; EGL_CHROMIUM_get_sync_values ; EGL_CHROMIUM_get_sync_values
EGL_GetSyncValuesCHROMIUM EGL_GetSyncValuesCHROMIUM
......
...@@ -1001,7 +1001,7 @@ ...@@ -1001,7 +1001,7 @@
"GL_CHROMIUM_lose_context": [ "GL_CHROMIUM_lose_context": [
"glLoseContextCHROMIUM" "glLoseContextCHROMIUM"
], ],
"EGL_ANGLE_workaround_control": [ "EGL_ANGLE_feature_control": [
"eglQueryStringiANGLE", "eglQueryStringiANGLE",
"eglQueryDisplayAttribANGLE" "eglQueryDisplayAttribANGLE"
] ]
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# found in the LICENSE file. # found in the LICENSE file.
angle_white_box_tests_sources = [ angle_white_box_tests_sources = [
"egl_tests/EGLWorkaroundControlTest.cpp", "egl_tests/EGLFeatureControlTest.cpp",
"util_tests/PrintSystemInfoTest.cpp", "util_tests/PrintSystemInfoTest.cpp",
"test_utils/angle_test_configs.cpp", "test_utils/angle_test_configs.cpp",
"test_utils/angle_test_configs.h", "test_utils/angle_test_configs.h",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
// found in the LICENSE file. // found in the LICENSE file.
// //
// Tests the eglQueryStringiANGLE and eglQueryDisplayAttribANGLE functions exposed by the // Tests the eglQueryStringiANGLE and eglQueryDisplayAttribANGLE functions exposed by the
// extension EGL_ANGLE_workaround_control. // extension EGL_ANGLE_feature_control.
#include <gtest/gtest.h> #include <gtest/gtest.h>
...@@ -13,93 +13,87 @@ ...@@ -13,93 +13,87 @@
using namespace angle; using namespace angle;
class EGLWorkaroundControlTest : public ANGLETest class EGLFeatureControlTest : public ANGLETest
{ {
public: public:
void testSetUp() override void testSetUp() override
{ {
ASSERT_TRUE(IsEGLDisplayExtensionEnabled(getEGLWindow()->getDisplay(), ASSERT_TRUE(IsEGLDisplayExtensionEnabled(getEGLWindow()->getDisplay(),
"EGL_ANGLE_workaround_control")); "EGL_ANGLE_feature_control"));
} }
void testTearDown() override {} void testTearDown() override {}
}; };
// Ensure eglQueryStringiANGLE generates EGL_BAD_DISPLAY if the display passed in is invalid. // Ensure eglQueryStringiANGLE generates EGL_BAD_DISPLAY if the display passed in is invalid.
TEST_P(EGLWorkaroundControlTest, InvalidDisplay) TEST_P(EGLFeatureControlTest, InvalidDisplay)
{ {
EXPECT_EQ(nullptr, eglQueryStringiANGLE(EGL_NO_DISPLAY, EGL_WORKAROUND_NAME_ANGLE, 0)); EXPECT_EQ(nullptr, eglQueryStringiANGLE(EGL_NO_DISPLAY, EGL_FEATURE_NAME_ANGLE, 0));
EXPECT_EGL_ERROR(EGL_BAD_DISPLAY); EXPECT_EGL_ERROR(EGL_BAD_DISPLAY);
} }
// Ensure eglQueryStringiANGLE generates EGL_BAD_PARAMETER if the index is negative. // Ensure eglQueryStringiANGLE generates EGL_BAD_PARAMETER if the index is negative.
TEST_P(EGLWorkaroundControlTest, NegativeIndex) TEST_P(EGLFeatureControlTest, NegativeIndex)
{ {
EXPECT_EQ(nullptr, EXPECT_EQ(nullptr,
eglQueryStringiANGLE(getEGLWindow()->getDisplay(), EGL_WORKAROUND_NAME_ANGLE, -1)); eglQueryStringiANGLE(getEGLWindow()->getDisplay(), EGL_FEATURE_NAME_ANGLE, -1));
EXPECT_EGL_ERROR(EGL_BAD_PARAMETER); EXPECT_EGL_ERROR(EGL_BAD_PARAMETER);
} }
// Ensure eglQueryStringiANGLE generates EGL_BAD_PARAMETER if the index is out of bounds. // Ensure eglQueryStringiANGLE generates EGL_BAD_PARAMETER if the index is out of bounds.
TEST_P(EGLWorkaroundControlTest, IndexOutOfBounds) TEST_P(EGLFeatureControlTest, IndexOutOfBounds)
{ {
EGLDisplay dpy = getEGLWindow()->getDisplay(); EGLDisplay dpy = getEGLWindow()->getDisplay();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
EXPECT_EQ(nullptr, EXPECT_EQ(nullptr,
eglQueryStringiANGLE(dpy, EGL_WORKAROUND_NAME_ANGLE, display->getFeatures().size())); eglQueryStringiANGLE(dpy, EGL_FEATURE_NAME_ANGLE, display->getFeatures().size()));
EXPECT_EGL_ERROR(EGL_BAD_PARAMETER); EXPECT_EGL_ERROR(EGL_BAD_PARAMETER);
} }
// Ensure eglQueryStringiANGLE generates EGL_BAD_PARAMETER if the name is not one of the valid // Ensure eglQueryStringiANGLE generates EGL_BAD_PARAMETER if the name is not one of the valid
// options specified in the workaround. // options specified in EGL_ANGLE_feature_control.
TEST_P(EGLWorkaroundControlTest, InvalidName) TEST_P(EGLFeatureControlTest, InvalidName)
{ {
EXPECT_EQ(nullptr, eglQueryStringiANGLE(getEGLWindow()->getDisplay(), 100, 0)); EXPECT_EQ(nullptr, eglQueryStringiANGLE(getEGLWindow()->getDisplay(), 100, 0));
EXPECT_EGL_ERROR(EGL_BAD_PARAMETER); EXPECT_EGL_ERROR(EGL_BAD_PARAMETER);
} }
// For each valid name and index in the workaround description arrays, query the values and ensure // For each valid name and index in the feature description arrays, query the values and ensure
// that no error is generated, and that the values match the correct values frim ANGLE's display's // that no error is generated, and that the values match the correct values frim ANGLE's display's
// FeatureList. // FeatureList.
TEST_P(EGLWorkaroundControlTest, QueryAll) TEST_P(EGLFeatureControlTest, QueryAll)
{ {
EGLDisplay dpy = getEGLWindow()->getDisplay(); EGLDisplay dpy = getEGLWindow()->getDisplay();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
angle::FeatureList features = display->getFeatures(); angle::FeatureList features = display->getFeatures();
for (size_t i = 0; i < features.size(); i++) for (size_t i = 0; i < features.size(); i++)
{ {
EXPECT_STREQ(features[i]->name, eglQueryStringiANGLE(dpy, EGL_WORKAROUND_NAME_ANGLE, i)); EXPECT_STREQ(features[i]->name, eglQueryStringiANGLE(dpy, EGL_FEATURE_NAME_ANGLE, i));
EXPECT_STREQ(FeatureCategoryToString(features[i]->category), EXPECT_STREQ(FeatureCategoryToString(features[i]->category),
eglQueryStringiANGLE(dpy, EGL_WORKAROUND_CATEGORY_ANGLE, i)); eglQueryStringiANGLE(dpy, EGL_FEATURE_CATEGORY_ANGLE, i));
EXPECT_STREQ(features[i]->description, EXPECT_STREQ(features[i]->description,
eglQueryStringiANGLE(dpy, EGL_WORKAROUND_DESCRIPTION_ANGLE, i)); eglQueryStringiANGLE(dpy, EGL_FEATURE_DESCRIPTION_ANGLE, i));
EXPECT_STREQ(features[i]->bug, eglQueryStringiANGLE(dpy, EGL_WORKAROUND_BUG_ANGLE, i)); EXPECT_STREQ(features[i]->bug, eglQueryStringiANGLE(dpy, EGL_FEATURE_BUG_ANGLE, i));
if (features[i]->enabled) EXPECT_STREQ(FeatureStatusToString(features[i]->enabled),
{ eglQueryStringiANGLE(dpy, EGL_FEATURE_STATUS_ANGLE, i));
EXPECT_STREQ("true", eglQueryStringiANGLE(dpy, EGL_WORKAROUND_ENABLED_ANGLE, i));
}
else
{
EXPECT_STREQ("false", eglQueryStringiANGLE(dpy, EGL_WORKAROUND_ENABLED_ANGLE, i));
}
ASSERT_EGL_SUCCESS(); ASSERT_EGL_SUCCESS();
} }
} }
// Ensure eglQueryDisplayAttribANGLE returns the correct number of workarounds when queried with // Ensure eglQueryDisplayAttribANGLE returns the correct number of features when queried with
// attribute EGL_WORKAROUND_COUNT_ANGLE // attribute EGL_FEATURE_COUNT_ANGLE
TEST_P(EGLWorkaroundControlTest, WorkaroundCount) TEST_P(EGLFeatureControlTest, FeatureCount)
{ {
EGLDisplay dpy = getEGLWindow()->getDisplay(); EGLDisplay dpy = getEGLWindow()->getDisplay();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
EGLAttrib value = -1; EGLAttrib value = -1;
EXPECT_EQ(static_cast<EGLBoolean>(EGL_TRUE), EXPECT_EQ(static_cast<EGLBoolean>(EGL_TRUE),
eglQueryDisplayAttribANGLE(dpy, EGL_WORKAROUND_COUNT_ANGLE, &value)); eglQueryDisplayAttribANGLE(dpy, EGL_FEATURE_COUNT_ANGLE, &value));
EXPECT_EQ(display->getFeatures().size(), static_cast<size_t>(value)); EXPECT_EQ(display->getFeatures().size(), static_cast<size_t>(value));
ASSERT_EGL_SUCCESS(); ASSERT_EGL_SUCCESS();
} }
ANGLE_INSTANTIATE_TEST(EGLWorkaroundControlTest, ANGLE_INSTANTIATE_TEST(EGLFeatureControlTest,
ES2_D3D9(), ES2_D3D9(),
ES2_D3D11(), ES2_D3D11(),
ES2_OPENGL(), ES2_OPENGL(),
......
...@@ -64,6 +64,8 @@ ANGLE_UTIL_EXPORT PFNEGLGETNEXTFRAMEIDANDROIDPROC eglGetNextFrameIdANDROID; ...@@ -64,6 +64,8 @@ ANGLE_UTIL_EXPORT PFNEGLGETNEXTFRAMEIDANDROIDPROC eglGetNextFrameIdANDROID;
ANGLE_UTIL_EXPORT PFNEGLPRESENTATIONTIMEANDROIDPROC eglPresentationTimeANDROID; ANGLE_UTIL_EXPORT PFNEGLPRESENTATIONTIMEANDROIDPROC eglPresentationTimeANDROID;
ANGLE_UTIL_EXPORT PFNEGLCREATEDEVICEANGLEPROC eglCreateDeviceANGLE; ANGLE_UTIL_EXPORT PFNEGLCREATEDEVICEANGLEPROC eglCreateDeviceANGLE;
ANGLE_UTIL_EXPORT PFNEGLRELEASEDEVICEANGLEPROC eglReleaseDeviceANGLE; ANGLE_UTIL_EXPORT PFNEGLRELEASEDEVICEANGLEPROC eglReleaseDeviceANGLE;
ANGLE_UTIL_EXPORT PFNEGLQUERYDISPLAYATTRIBANGLEPROC eglQueryDisplayAttribANGLE;
ANGLE_UTIL_EXPORT PFNEGLQUERYSTRINGIANGLEPROC eglQueryStringiANGLE;
ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC eglProgramCacheGetAttribANGLE; ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC eglProgramCacheGetAttribANGLE;
ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEPOPULATEANGLEPROC eglProgramCachePopulateANGLE; ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEPOPULATEANGLEPROC eglProgramCachePopulateANGLE;
ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEQUERYANGLEPROC eglProgramCacheQueryANGLE; ANGLE_UTIL_EXPORT PFNEGLPROGRAMCACHEQUERYANGLEPROC eglProgramCacheQueryANGLE;
...@@ -72,8 +74,6 @@ ANGLE_UTIL_EXPORT PFNEGLQUERYSURFACEPOINTERANGLEPROC eglQuerySurfacePointerANGLE ...@@ -72,8 +74,6 @@ ANGLE_UTIL_EXPORT PFNEGLQUERYSURFACEPOINTERANGLEPROC eglQuerySurfacePointerANGLE
ANGLE_UTIL_EXPORT PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC ANGLE_UTIL_EXPORT PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
eglCreateStreamProducerD3DTextureANGLE; eglCreateStreamProducerD3DTextureANGLE;
ANGLE_UTIL_EXPORT PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE; ANGLE_UTIL_EXPORT PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE;
ANGLE_UTIL_EXPORT PFNEGLQUERYDISPLAYATTRIBANGLEPROC eglQueryDisplayAttribANGLE;
ANGLE_UTIL_EXPORT PFNEGLQUERYSTRINGIANGLEPROC eglQueryStringiANGLE;
ANGLE_UTIL_EXPORT PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM; ANGLE_UTIL_EXPORT PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM;
ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT; ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT;
ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT; ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
...@@ -185,6 +185,10 @@ void LoadEGL(LoadProc loadProc) ...@@ -185,6 +185,10 @@ void LoadEGL(LoadProc loadProc)
reinterpret_cast<PFNEGLCREATEDEVICEANGLEPROC>(loadProc("eglCreateDeviceANGLE")); reinterpret_cast<PFNEGLCREATEDEVICEANGLEPROC>(loadProc("eglCreateDeviceANGLE"));
eglReleaseDeviceANGLE = eglReleaseDeviceANGLE =
reinterpret_cast<PFNEGLRELEASEDEVICEANGLEPROC>(loadProc("eglReleaseDeviceANGLE")); reinterpret_cast<PFNEGLRELEASEDEVICEANGLEPROC>(loadProc("eglReleaseDeviceANGLE"));
eglQueryDisplayAttribANGLE =
reinterpret_cast<PFNEGLQUERYDISPLAYATTRIBANGLEPROC>(loadProc("eglQueryDisplayAttribANGLE"));
eglQueryStringiANGLE =
reinterpret_cast<PFNEGLQUERYSTRINGIANGLEPROC>(loadProc("eglQueryStringiANGLE"));
eglProgramCacheGetAttribANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC>( eglProgramCacheGetAttribANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC>(
loadProc("eglProgramCacheGetAttribANGLE")); loadProc("eglProgramCacheGetAttribANGLE"));
eglProgramCachePopulateANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEPOPULATEANGLEPROC>( eglProgramCachePopulateANGLE = reinterpret_cast<PFNEGLPROGRAMCACHEPOPULATEANGLEPROC>(
...@@ -200,10 +204,6 @@ void LoadEGL(LoadProc loadProc) ...@@ -200,10 +204,6 @@ void LoadEGL(LoadProc loadProc)
loadProc("eglCreateStreamProducerD3DTextureANGLE")); loadProc("eglCreateStreamProducerD3DTextureANGLE"));
eglStreamPostD3DTextureANGLE = reinterpret_cast<PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC>( eglStreamPostD3DTextureANGLE = reinterpret_cast<PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC>(
loadProc("eglStreamPostD3DTextureANGLE")); loadProc("eglStreamPostD3DTextureANGLE"));
eglQueryDisplayAttribANGLE =
reinterpret_cast<PFNEGLQUERYDISPLAYATTRIBANGLEPROC>(loadProc("eglQueryDisplayAttribANGLE"));
eglQueryStringiANGLE =
reinterpret_cast<PFNEGLQUERYSTRINGIANGLEPROC>(loadProc("eglQueryStringiANGLE"));
eglGetSyncValuesCHROMIUM = eglGetSyncValuesCHROMIUM =
reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("eglGetSyncValuesCHROMIUM")); reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("eglGetSyncValuesCHROMIUM"));
eglQueryDeviceAttribEXT = eglQueryDeviceAttribEXT =
......
...@@ -71,6 +71,8 @@ ANGLE_UTIL_EXPORT extern PFNEGLGETNEXTFRAMEIDANDROIDPROC eglGetNextFrameIdANDROI ...@@ -71,6 +71,8 @@ ANGLE_UTIL_EXPORT extern PFNEGLGETNEXTFRAMEIDANDROIDPROC eglGetNextFrameIdANDROI
ANGLE_UTIL_EXPORT extern PFNEGLPRESENTATIONTIMEANDROIDPROC eglPresentationTimeANDROID; ANGLE_UTIL_EXPORT extern PFNEGLPRESENTATIONTIMEANDROIDPROC eglPresentationTimeANDROID;
ANGLE_UTIL_EXPORT extern PFNEGLCREATEDEVICEANGLEPROC eglCreateDeviceANGLE; ANGLE_UTIL_EXPORT extern PFNEGLCREATEDEVICEANGLEPROC eglCreateDeviceANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLRELEASEDEVICEANGLEPROC eglReleaseDeviceANGLE; ANGLE_UTIL_EXPORT extern PFNEGLRELEASEDEVICEANGLEPROC eglReleaseDeviceANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC eglQueryDisplayAttribANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYSTRINGIANGLEPROC eglQueryStringiANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC eglProgramCacheGetAttribANGLE; ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEGETATTRIBANGLEPROC eglProgramCacheGetAttribANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC eglProgramCachePopulateANGLE; ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEPOPULATEANGLEPROC eglProgramCachePopulateANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEQUERYANGLEPROC eglProgramCacheQueryANGLE; ANGLE_UTIL_EXPORT extern PFNEGLPROGRAMCACHEQUERYANGLEPROC eglProgramCacheQueryANGLE;
...@@ -79,8 +81,6 @@ ANGLE_UTIL_EXPORT extern PFNEGLQUERYSURFACEPOINTERANGLEPROC eglQuerySurfacePoint ...@@ -79,8 +81,6 @@ ANGLE_UTIL_EXPORT extern PFNEGLQUERYSURFACEPOINTERANGLEPROC eglQuerySurfacePoint
ANGLE_UTIL_EXPORT extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC ANGLE_UTIL_EXPORT extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
eglCreateStreamProducerD3DTextureANGLE; eglCreateStreamProducerD3DTextureANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE; ANGLE_UTIL_EXPORT extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDISPLAYATTRIBANGLEPROC eglQueryDisplayAttribANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYSTRINGIANGLEPROC eglQueryStringiANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM; ANGLE_UTIL_EXPORT extern PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT; ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT; ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment