Dawn: Break dependency on ANGLE
Fixed: dawn:1715
Change-Id: I6d7965a9a73c42a2aca59b03379aa68aea1695c8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/124460
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/generator/opengl_loader_generator.py b/generator/opengl_loader_generator.py
index ba2d47c..db253e2 100644
--- a/generator/opengl_loader_generator.py
+++ b/generator/opengl_loader_generator.py
@@ -240,10 +240,6 @@
required=True,
type=str,
help='The Khronos gl.xml to use.')
- parser.add_argument('--gl-angle-ext-xml',
- required=True,
- type=str,
- help='The ANGLE gl_angle_ext.xml to use.')
parser.add_argument(
'--supported-extensions',
required=True,
@@ -254,24 +250,14 @@
def get_file_renders(self, args):
supported_extensions = []
- supported_angle_extensions = []
with open(args.supported_extensions) as f:
supported_extensions_json = json.loads(f.read())
supported_extensions = supported_extensions_json[
'supported_extensions']
- supported_angle_extensions = supported_extensions_json[
- 'supported_angle_extensions']
params = compute_params(
etree.parse(args.gl_xml).getroot(), supported_extensions)
- angle_params = compute_params(
- etree.parse(args.gl_angle_ext_xml).getroot(),
- supported_angle_extensions)
-
- for key, value in params.items():
- params[key] += angle_params[key]
-
return [
FileRender(
'opengl/OpenGLFunctionsBase.cpp',
@@ -288,7 +274,6 @@
def get_dependencies(self, args):
return [
os.path.abspath(args.gl_xml),
- os.path.abspath(args.gl_angle_ext_xml),
os.path.abspath(args.supported_extensions)
]
diff --git a/generator/templates/opengl/OpenGLFunctionsBase.cpp b/generator/templates/opengl/OpenGLFunctionsBase.cpp
index 4899c15..b93cacd 100644
--- a/generator/templates/opengl/OpenGLFunctionsBase.cpp
+++ b/generator/templates/opengl/OpenGLFunctionsBase.cpp
@@ -47,6 +47,15 @@
}
{% endfor %}
+ // GL_ANGLE_base_vertex_base_instance
+ // See crbug.com/dawn/1715 for why this is embedded
+ if (IsGLExtensionSupported("GL_ANGLE_base_vertex_base_instance")) {
+ DAWN_TRY(LoadProc(getProc, &DrawArraysInstancedBaseInstanceANGLE, "glDrawArraysInstancedBaseInstanceANGLE"));
+ DAWN_TRY(LoadProc(getProc, &DrawElementsInstancedBaseVertexBaseInstanceANGLE, "glDrawElementsInstancedBaseVertexBaseInstanceANGLE"));
+ DAWN_TRY(LoadProc(getProc, &MultiDrawArraysInstancedBaseInstanceANGLE, "glMultiDrawArraysInstancedBaseInstanceANGLE"));
+ DAWN_TRY(LoadProc(getProc, &MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE, "glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE"));
+ }
+
return {};
}
diff --git a/generator/templates/opengl/OpenGLFunctionsBase.h b/generator/templates/opengl/OpenGLFunctionsBase.h
index 2150a71..80d7beb 100644
--- a/generator/templates/opengl/OpenGLFunctionsBase.h
+++ b/generator/templates/opengl/OpenGLFunctionsBase.h
@@ -32,6 +32,14 @@
{% endfor %}
{% endfor%}
+
+ // GL_ANGLE_base_vertex_base_instance
+ // See crbug.com/dawn/1715 for why this is embedded
+ PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEANGLEPROC DrawArraysInstancedBaseInstanceANGLE = nullptr;
+ PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEANGLEPROC DrawElementsInstancedBaseVertexBaseInstanceANGLE = nullptr;
+ PFNGLMULTIDRAWARRAYSINSTANCEDBASEINSTANCEANGLEPROC MultiDrawArraysInstancedBaseInstanceANGLE = nullptr;
+ PFNGLMULTIDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEANGLEPROC MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE = nullptr;
+
bool IsGLExtensionSupported(const char* extension) const;
protected:
diff --git a/generator/templates/opengl/opengl_platform.h b/generator/templates/opengl/opengl_platform.h
index c2063b7..0257719 100644
--- a/generator/templates/opengl/opengl_platform.h
+++ b/generator/templates/opengl/opengl_platform.h
@@ -70,4 +70,12 @@
{% endfor %}
{% endfor%}
+
+// GL_ANGLE_base_vertex_base_instance
+// See crbug.com/dawn/1715 for why this is embedded
+using PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEANGLEPROC = void(KHRONOS_APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount, GLuint baseInstance);
+using PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEANGLEPROC = void(KHRONOS_APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei instanceCount, GLint baseVertex, GLuint baseInstance);
+using PFNGLMULTIDRAWARRAYSINSTANCEDBASEINSTANCEANGLEPROC = void(KHRONOS_APIENTRY *)(GLenum mode, const GLint * firsts, const GLsizei * counts, const GLsizei * instanceCounts, const GLuint * baseInstances, GLsizei drawcount);
+using PFNGLMULTIDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEANGLEPROC = void(KHRONOS_APIENTRY *)(GLenum mode, const GLsizei * counts, GLenum type, const GLvoid *const* indices, const GLsizei * instanceCounts, const GLint * baseVertices, const GLuint * baseInstances, GLsizei drawcount);
+
#undef DAWN_GL_APIENTRY
diff --git a/src/dawn/native/BUILD.gn b/src/dawn/native/BUILD.gn
index f2f2bbc..49876a9 100644
--- a/src/dawn/native/BUILD.gn
+++ b/src/dawn/native/BUILD.gn
@@ -112,8 +112,6 @@
args = [
"--gl-xml",
rebase_path("${dawn_root}/third_party/khronos/gl.xml", root_build_dir),
- "--gl-angle-ext-xml",
- rebase_path("${dawn_angle_dir}/scripts/gl_angle_ext.xml", root_build_dir),
"--supported-extensions",
rebase_path("opengl/supported_extensions.json", root_build_dir),
]
diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt
index c255cd1..3a2e2fa 100644
--- a/src/dawn/native/CMakeLists.txt
+++ b/src/dawn/native/CMakeLists.txt
@@ -427,8 +427,6 @@
PRINT_NAME "OpenGL function loader"
ARGS "--gl-xml"
"${Dawn_SOURCE_DIR}/third_party/khronos/gl.xml"
- "--gl-angle-ext-xml"
- "${Dawn_SOURCE_DIR}/third_party/angle/scripts/gl_angle_ext.xml"
"--supported-extensions"
"${Dawn_SOURCE_DIR}/src/dawn/native/opengl/supported_extensions.json"
RESULT_VARIABLE "DAWN_NATIVE_OPENGL_AUTOGEN_SOURCES"