зеркало из https://github.com/AvaloniaUI/angle.git
Add frontend for ANDROID_extension_pack_es31a
- Add entry to registry_xml file - Add handling in the DirectiveHandler Bug: angleproject:3608 Change-Id: I1cc32a4a97fd9974f65786a9a972b4b541abf658 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3388405 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Brandon Schade <b.schade@samsung.com>
This commit is contained in:
Родитель
28f223acb4
Коммит
7dda50fc00
|
@ -71,6 +71,7 @@ using data from registry_xml.py and gl.xml.
|
|||
| [GL_NV_EGL_stream_consumer_external](https://khronos.org/registry/OpenGL/extensions/NV/NV_EGL_stream_consumer_external.txt) | | | | | | |
|
||||
| [GL_OES_EGL_sync](https://khronos.org/registry/OpenGL/extensions/OES/OES_EGL_sync.txt) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
|
||||
| [GL_OES_element_index_uint](https://khronos.org/registry/OpenGL/extensions/OES/OES_element_index_uint.txt) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
|
||||
| [GL_ANDROID_extension_pack_es31a](https://khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt) | | | | | | |
|
||||
| [GL_EXT_external_buffer](https://khronos.org/registry/OpenGL/extensions/EXT/EXT_external_buffer.txt) | | | | | | ✔ |
|
||||
| [GL_OES_fbo_render_mipmap](https://khronos.org/registry/OpenGL/extensions/OES/OES_fbo_render_mipmap.txt) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
|
||||
| [GL_NV_fence](https://khronos.org/registry/OpenGL/extensions/NV/NV_fence.txt) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
// Version number for shader translation API.
|
||||
// It is incremented every time the API changes.
|
||||
#define ANGLE_SH_VERSION 268
|
||||
#define ANGLE_SH_VERSION 269
|
||||
|
||||
enum ShShaderSpec
|
||||
{
|
||||
|
@ -416,6 +416,7 @@ struct ShBuiltInResources
|
|||
int EXT_clip_cull_distance;
|
||||
int EXT_primitive_bounding_box;
|
||||
int ANGLE_base_vertex_base_instance_shader_builtin;
|
||||
int ANDROID_extension_pack_es31a;
|
||||
|
||||
// Set to 1 to enable replacing GL_EXT_draw_buffers #extension directives
|
||||
// with GL_NV_draw_buffers in ESSL output. This flag can be used to emulate
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"doc/ExtensionSupport.md":
|
||||
"d8c6c1f870a8c2cbac53fea3f2eb7439",
|
||||
"29902812db94a55b4067fb526ce36be6",
|
||||
"scripts/cl.xml":
|
||||
"f923201d4ea3e1130763b19fa7faa7a2",
|
||||
"scripts/egl.xml":
|
||||
|
@ -26,13 +26,13 @@
|
|||
"scripts/gl_angle_ext.xml":
|
||||
"474989440f980a079935dff3ab4d7b24",
|
||||
"scripts/registry_xml.py":
|
||||
"838b5d91a4fe140b06b1a33341ff6272",
|
||||
"c7e68268b6cfea2c705d273863ecce74",
|
||||
"scripts/wgl.xml":
|
||||
"c36001431919e1c435f1215a85f7e1db",
|
||||
"src/libANGLE/gen_extensions.py":
|
||||
"186e7b22cb560bf4f32e2b1b8a025dd8",
|
||||
"src/libANGLE/gles_extensions_autogen.cpp":
|
||||
"010570a5d57c47700cb4d5f1efc3415a",
|
||||
"0ca4b30896452e67bd9faea06adb3695",
|
||||
"src/libANGLE/gles_extensions_autogen.h":
|
||||
"e736895597b454b71655f89de808c73c"
|
||||
"c167818862bb1a2b1f4ae445926da6bc"
|
||||
}
|
|
@ -12,7 +12,7 @@
|
|||
"scripts/gl_angle_ext.xml":
|
||||
"474989440f980a079935dff3ab4d7b24",
|
||||
"scripts/registry_xml.py":
|
||||
"838b5d91a4fe140b06b1a33341ff6272",
|
||||
"c7e68268b6cfea2c705d273863ecce74",
|
||||
"scripts/wgl.xml":
|
||||
"c36001431919e1c435f1215a85f7e1db",
|
||||
"src/libEGL/egl_loader_autogen.cpp":
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"scripts/gl_angle_ext.xml":
|
||||
"474989440f980a079935dff3ab4d7b24",
|
||||
"scripts/registry_xml.py":
|
||||
"838b5d91a4fe140b06b1a33341ff6272",
|
||||
"c7e68268b6cfea2c705d273863ecce74",
|
||||
"scripts/wgl.xml":
|
||||
"c36001431919e1c435f1215a85f7e1db",
|
||||
"src/common/entry_points_enum_autogen.cpp":
|
||||
|
@ -42,7 +42,7 @@
|
|||
"src/libANGLE/Context_gles_3_2_autogen.h":
|
||||
"48567dca16fd881dfe6d61fee0e3106f",
|
||||
"src/libANGLE/Context_gles_ext_autogen.h":
|
||||
"35576e57a1a1c3c4bb34966c29822168",
|
||||
"4f435eb90e92ae5f84778353489c24f3",
|
||||
"src/libANGLE/capture/capture_gles_1_0_autogen.cpp":
|
||||
"7ec7ef8f779b809a45d74b97502c419b",
|
||||
"src/libANGLE/capture/capture_gles_1_0_autogen.h":
|
||||
|
@ -66,7 +66,7 @@
|
|||
"src/libANGLE/capture/capture_gles_ext_autogen.cpp":
|
||||
"77f385678e62ecfe5a5faea3cc8ce2a6",
|
||||
"src/libANGLE/capture/capture_gles_ext_autogen.h":
|
||||
"c5784a842c304d6fcd17cb4aacb6c258",
|
||||
"3ca406b8b1522a83a586dfcebbab4494",
|
||||
"src/libANGLE/capture/frame_capture_replay_autogen.cpp":
|
||||
"e2e6419d43bc96a65b8a8e94222a910a",
|
||||
"src/libANGLE/capture/frame_capture_utils_autogen.cpp":
|
||||
|
@ -88,7 +88,7 @@
|
|||
"src/libANGLE/validationES3_autogen.h":
|
||||
"0147506ce91c68d8ccbca9688c7251ba",
|
||||
"src/libANGLE/validationESEXT_autogen.h":
|
||||
"fb356f72147121ac9688a9914db4274c",
|
||||
"e961fe18f50b1dfc825fff2d3030a91f",
|
||||
"src/libANGLE/validationGL1_autogen.h":
|
||||
"a247dddc40418180d4b2dbefeb75f233",
|
||||
"src/libANGLE/validationGL2_autogen.h":
|
||||
|
@ -162,17 +162,17 @@
|
|||
"src/libGLESv2/entry_points_gles_3_2_autogen.h":
|
||||
"647f932a299cdb4726b60bbba059f0d2",
|
||||
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
|
||||
"b3ec2c61304be996592de8098375584f",
|
||||
"03b4cd7d24b85cc74eacd49c89575abe",
|
||||
"src/libGLESv2/entry_points_gles_ext_autogen.h":
|
||||
"dcfca78241b89714cfe7c1e9e25eca48",
|
||||
"d4c6ff6c8b1931581e3134606c2d9108",
|
||||
"src/libGLESv2/libGLESv2_autogen.cpp":
|
||||
"3098b8d1364055bed7251d747a861375",
|
||||
"4ab4913d56589003a5a5c970c7e5158e",
|
||||
"src/libGLESv2/libGLESv2_autogen.def":
|
||||
"de949b21fa3730340f3653589c4e970f",
|
||||
"df38a627a47cd517f32f6bf96f4c957b",
|
||||
"src/libGLESv2/libGLESv2_no_capture_autogen.def":
|
||||
"d1ae52a184e954c2a1325be9348c5d11",
|
||||
"b3f4b764d65a571d8d9d4e926d55f4f2",
|
||||
"src/libGLESv2/libGLESv2_with_capture_autogen.def":
|
||||
"3bd5b53e4e8806cba619441dd8dc136d",
|
||||
"884836485f319c79075d10ab5687e0c2",
|
||||
"src/libOpenCL/libOpenCL_autogen.cpp":
|
||||
"10849978c910dc1af5dd4f0c815d1581"
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
"scripts/gl_angle_ext.xml":
|
||||
"474989440f980a079935dff3ab4d7b24",
|
||||
"scripts/registry_xml.py":
|
||||
"838b5d91a4fe140b06b1a33341ff6272",
|
||||
"c7e68268b6cfea2c705d273863ecce74",
|
||||
"src/libANGLE/capture/gl_enum_utils_autogen.cpp":
|
||||
"45a1968f41cfe2d3ac0de7f1678e03dc",
|
||||
"src/libANGLE/capture/gl_enum_utils_autogen.h":
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"scripts/gl_angle_ext.xml":
|
||||
"474989440f980a079935dff3ab4d7b24",
|
||||
"scripts/registry_xml.py":
|
||||
"838b5d91a4fe140b06b1a33341ff6272",
|
||||
"c7e68268b6cfea2c705d273863ecce74",
|
||||
"scripts/wgl.xml":
|
||||
"c36001431919e1c435f1215a85f7e1db",
|
||||
"src/libGL/proc_table_wgl_autogen.cpp":
|
||||
|
|
|
@ -220,6 +220,7 @@ angle_es_only_extensions = [
|
|||
]
|
||||
|
||||
gles_es_only_extensions = [
|
||||
"GL_ANDROID_extension_pack_es31a",
|
||||
"GL_ANGLE_depth_texture",
|
||||
"GL_ANGLE_translated_shader_source",
|
||||
"GL_EXT_debug_label",
|
||||
|
|
|
@ -162,6 +162,78 @@ void TDirectiveHandler::handleExtension(const angle::pp::SourceLocation &loc,
|
|||
iter->second = behaviorVal;
|
||||
}
|
||||
}
|
||||
// All the extensions listed in the spec here:
|
||||
// https://www.khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt
|
||||
// are implicitly enabled when GL_ANDROID_extension_pack_es31a is enabled
|
||||
if (name == "GL_ANDROID_extension_pack_es31a")
|
||||
{
|
||||
constexpr char kGeometryShaderExtName[] = "GL_EXT_geometry_shader";
|
||||
constexpr char kTessellationShaderExtName[] = "GL_EXT_tessellation_shader";
|
||||
constexpr char kGpuShader5ExtName[] = "GL_EXT_gpu_shader5";
|
||||
constexpr char kTextureBufferExtName[] = "GL_EXT_texture_buffer";
|
||||
constexpr char kTextureCubeMapArrayExtName[] = "GL_EXT_texture_cube_map_array";
|
||||
constexpr char kSampleVariablesExtName[] = "GL_OES_sample_variables";
|
||||
constexpr char kShaderMultisampleInterpolationExtName[] =
|
||||
"GL_OES_shader_multisample_interpolation";
|
||||
constexpr char kShaderImageAtomicExtName[] = "GL_OES_shader_image_atomic";
|
||||
constexpr char kTextureStorageMultisample2dArrayExtName[] =
|
||||
"GL_OES_texture_storage_multisample_2d_array";
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kGeometryShaderExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kTessellationShaderExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kGpuShader5ExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kTextureBufferExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kTextureCubeMapArrayExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kSampleVariablesExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter =
|
||||
mExtensionBehavior.find(GetExtensionByName(kShaderMultisampleInterpolationExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(GetExtensionByName(kShaderImageAtomicExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
|
||||
iter = mExtensionBehavior.find(
|
||||
GetExtensionByName(kTextureStorageMultisample2dArrayExtName));
|
||||
if (iter != mExtensionBehavior.end())
|
||||
{
|
||||
iter->second = behaviorVal;
|
||||
}
|
||||
}
|
||||
// EXT_shader_io_blocks is implicitly enabled when EXT_geometry_shader or
|
||||
// EXT_tessellation_shader is enabled.
|
||||
if (name == "GL_EXT_geometry_shader" || name == "GL_EXT_tessellation_shader")
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#define LIST_EXTENSIONS(OP) \
|
||||
OP(ANDROID_extension_pack_es31a) \
|
||||
OP(ANGLE_base_vertex_base_instance_shader_builtin) \
|
||||
OP(ANGLE_multi_draw) \
|
||||
OP(ANGLE_texture_multisample) \
|
||||
|
|
|
@ -19,6 +19,7 @@ enum class TExtension : uint8_t
|
|||
{
|
||||
UNDEFINED, // Special value used to indicate no extension.
|
||||
|
||||
ANDROID_extension_pack_es31a,
|
||||
ANGLE_base_vertex_base_instance_shader_builtin,
|
||||
ANGLE_multi_draw,
|
||||
ANGLE_texture_multisample,
|
||||
|
|
|
@ -177,6 +177,10 @@ void InitExtensionBehavior(const ShBuiltInResources &resources, TExtensionBehavi
|
|||
{
|
||||
extBehavior[TExtension::EXT_clip_cull_distance] = EBhUndefined;
|
||||
}
|
||||
if (resources.ANDROID_extension_pack_es31a)
|
||||
{
|
||||
extBehavior[TExtension::ANDROID_extension_pack_es31a] = EBhUndefined;
|
||||
}
|
||||
}
|
||||
|
||||
void ResetExtensionBehavior(const ShBuiltInResources &resources,
|
||||
|
|
|
@ -183,6 +183,9 @@ Compiler::Compiler(rx::GLImplFactory *implFactory, const State &state, egl::Disp
|
|||
mResources.OES_sample_variables = extensions.sampleVariablesOES;
|
||||
mResources.MaxSamples = caps.maxSamples;
|
||||
|
||||
// ANDROID_extension_pack_es31a
|
||||
mResources.ANDROID_extension_pack_es31a = extensions.extensionPackEs31aANDROID;
|
||||
|
||||
// GLSL ES 3.1 constants
|
||||
mResources.MaxProgramTextureGatherOffset = caps.maxProgramTextureGatherOffset;
|
||||
mResources.MinProgramTextureGatherOffset = caps.minProgramTextureGatherOffset;
|
||||
|
|
|
@ -3496,9 +3496,10 @@ Extensions Context::generateSupportedExtensions() const
|
|||
if (getClientVersion() < ES_3_1)
|
||||
{
|
||||
// Disable ES3.1+ extensions
|
||||
supportedExtensions.geometryShaderEXT = false;
|
||||
supportedExtensions.geometryShaderOES = false;
|
||||
supportedExtensions.tessellationShaderEXT = false;
|
||||
supportedExtensions.geometryShaderEXT = false;
|
||||
supportedExtensions.geometryShaderOES = false;
|
||||
supportedExtensions.tessellationShaderEXT = false;
|
||||
supportedExtensions.extensionPackEs31aANDROID = false;
|
||||
|
||||
// TODO(http://anglebug.com/2775): Multisample arrays could be supported on ES 3.0 as well
|
||||
// once 2D multisample texture extension is exposed there.
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
\
|
||||
/* GLES2+ Extensions */ \
|
||||
\
|
||||
/* GL_ANDROID_extension_pack_es31a */ \
|
||||
/* GL_ANGLE_depth_texture */ \
|
||||
/* GL_ANGLE_framebuffer_blit */ \
|
||||
/* GL_ANGLE_instanced_arrays */ \
|
||||
|
|
|
@ -19,6 +19,8 @@ namespace gl
|
|||
|
||||
// Method Captures
|
||||
|
||||
// GL_ANDROID_extension_pack_es31a
|
||||
|
||||
// GL_ANGLE_base_vertex_base_instance
|
||||
angle::CallCapture CaptureDrawArraysInstancedBaseInstanceANGLE(const State &glState,
|
||||
bool isCallValid,
|
||||
|
|
|
@ -87,6 +87,7 @@ const ExtensionInfoMap &GetExtensionInfoMap()
|
|||
map["GL_NV_EGL_stream_consumer_external"] = enableableExtension(&Extensions::EGLStreamConsumerExternalNV);
|
||||
map["GL_OES_EGL_sync"] = esOnlyExtension(&Extensions::EGLSyncOES);
|
||||
map["GL_OES_element_index_uint"] = enableableExtension(&Extensions::elementIndexUintOES);
|
||||
map["GL_ANDROID_extension_pack_es31a"] = esOnlyExtension(&Extensions::extensionPackEs31aANDROID);
|
||||
map["GL_EXT_external_buffer"] = enableableExtension(&Extensions::externalBufferEXT);
|
||||
map["GL_OES_fbo_render_mipmap"] = enableableExtension(&Extensions::fboRenderMipmapOES);
|
||||
map["GL_NV_fence"] = esOnlyExtension(&Extensions::fenceNV);
|
||||
|
|
|
@ -214,6 +214,9 @@ struct Extensions
|
|||
// GL_OES_element_index_uint
|
||||
bool elementIndexUintOES = false;
|
||||
|
||||
// GL_ANDROID_extension_pack_es31a
|
||||
bool extensionPackEs31aANDROID = false;
|
||||
|
||||
// GL_EXT_external_buffer
|
||||
bool externalBufferEXT = false;
|
||||
|
||||
|
|
|
@ -18,6 +18,8 @@ namespace gl
|
|||
{
|
||||
class Context;
|
||||
|
||||
// GL_ANDROID_extension_pack_es31a
|
||||
|
||||
// GL_ANGLE_base_vertex_base_instance
|
||||
bool ValidateDrawArraysInstancedBaseInstanceANGLE(const Context *context,
|
||||
angle::EntryPoint entryPoint,
|
||||
|
|
|
@ -36,6 +36,8 @@ using namespace gl;
|
|||
|
||||
extern "C" {
|
||||
|
||||
// GL_ANDROID_extension_pack_es31a
|
||||
|
||||
// GL_ANGLE_base_vertex_base_instance
|
||||
void GL_APIENTRY GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,
|
||||
GLint first,
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
extern "C" {
|
||||
|
||||
// GL_ANDROID_extension_pack_es31a
|
||||
|
||||
// GL_ANGLE_base_vertex_base_instance
|
||||
ANGLE_EXPORT void GL_APIENTRY GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,
|
||||
GLint first,
|
||||
|
|
|
@ -2713,6 +2713,8 @@ void GL_APIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const
|
|||
return GL_VertexPointer(size, type, stride, pointer);
|
||||
}
|
||||
|
||||
// GL_ANDROID_extension_pack_es31a
|
||||
|
||||
// GL_ANGLE_base_vertex_base_instance
|
||||
void GL_APIENTRY glDrawArraysInstancedBaseInstanceANGLE(GLenum mode,
|
||||
GLint first,
|
||||
|
|
|
@ -460,6 +460,8 @@ EXPORTS
|
|||
glTranslatex
|
||||
glVertexPointer
|
||||
|
||||
; GL_ANDROID_extension_pack_es31a
|
||||
|
||||
; GL_ANGLE_base_vertex_base_instance
|
||||
glDrawArraysInstancedBaseInstanceANGLE
|
||||
glDrawElementsInstancedBaseVertexBaseInstanceANGLE
|
||||
|
|
|
@ -460,6 +460,8 @@ EXPORTS
|
|||
glTranslatex
|
||||
glVertexPointer
|
||||
|
||||
; GL_ANDROID_extension_pack_es31a
|
||||
|
||||
; GL_ANGLE_base_vertex_base_instance
|
||||
glDrawArraysInstancedBaseInstanceANGLE
|
||||
glDrawElementsInstancedBaseVertexBaseInstanceANGLE
|
||||
|
|
|
@ -460,6 +460,8 @@ EXPORTS
|
|||
glTranslatex
|
||||
glVertexPointer
|
||||
|
||||
; GL_ANDROID_extension_pack_es31a
|
||||
|
||||
; GL_ANGLE_base_vertex_base_instance
|
||||
glDrawArraysInstancedBaseInstanceANGLE
|
||||
glDrawElementsInstancedBaseVertexBaseInstanceANGLE
|
||||
|
|
Загрузка…
Ссылка в новой задаче