From 1250944aaa9251c08eda3a37b21f15106903f42d Mon Sep 17 00:00:00 2001 From: cdalton Date: Thu, 17 Dec 2015 11:11:40 -0800 Subject: [PATCH] Fixup GL instanced rendering commands We've ended up with a flag in both GrCaps and GrGLCaps to indicate the same instanced rendering functionality. This change removes the GrGLCaps version of the flag and also also fixes the interface assembler to use the proper suffix when loading the EXT version of the extension. BUG=skia: Review URL: https://codereview.chromium.org/1537483002 --- src/gpu/gl/GrGLAssembleInterface.cpp | 9 +++++++-- src/gpu/gl/GrGLCaps.cpp | 12 ------------ src/gpu/gl/GrGLCaps.h | 4 ---- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/gpu/gl/GrGLAssembleInterface.cpp b/src/gpu/gl/GrGLAssembleInterface.cpp index 3a748b24fe..6b578f34fc 100644 --- a/src/gpu/gl/GrGLAssembleInterface.cpp +++ b/src/gpu/gl/GrGLAssembleInterface.cpp @@ -779,13 +779,18 @@ const GrGLInterface* GrGLAssembleGLESInterface(void* ctx, GrGLGetProc get) { GET_PROC_SUFFIX(CoverageModulation, CHROMIUM); } - if (version >= GR_GL_VER(3,0) || extensions.has("GL_EXT_draw_instanced")) { + if (version >= GR_GL_VER(3,0)) { GET_PROC(DrawArraysInstanced); GET_PROC(DrawElementsInstanced); + } else if (extensions.has("GL_EXT_draw_instanced")) { + GET_PROC_SUFFIX(DrawArraysInstanced, EXT); + GET_PROC_SUFFIX(DrawElementsInstanced, EXT); } - if (version >= GR_GL_VER(3,0) || extensions.has("GL_EXT_instanced_arrays")) { + if (version >= GR_GL_VER(3,0)) { GET_PROC(VertexAttribDivisor); + } else if (extensions.has("GL_EXT_instanced_arrays")) { + GET_PROC_SUFFIX(VertexAttribDivisor, EXT); } if (extensions.has("GL_NV_bindless_texture")) { diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp index a1e2bad469..c7856c9367 100644 --- a/src/gpu/gl/GrGLCaps.cpp +++ b/src/gpu/gl/GrGLCaps.cpp @@ -39,7 +39,6 @@ GrGLCaps::GrGLCaps(const GrContextOptions& contextOptions, fImagingSupport = false; fTwoFormatLimit = false; fVertexArrayObjectSupport = false; - fInstancedDrawingSupport = false; fDirectStateAccessSupport = false; fDebugSupport = false; fES2CompatibilitySupport = false; @@ -210,16 +209,6 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, ctxInfo.hasExtension("GL_OES_vertex_array_object"); } - if ((kGL_GrGLStandard == standard && version >= GR_GL_VER(3,2)) || - (kGLES_GrGLStandard == standard && version >= GR_GL_VER(3,0))) { - fInstancedDrawingSupport = true; - } else { - fInstancedDrawingSupport = (ctxInfo.hasExtension("GL_ARB_draw_instanced") || - ctxInfo.hasExtension("GL_EXT_draw_instanced")) && - (ctxInfo.hasExtension("GL_ARB_instanced_arrays") || - ctxInfo.hasExtension("GL_EXT_instanced_arrays")); - } - if (kGL_GrGLStandard == standard) { fDirectStateAccessSupport = ctxInfo.hasExtension("GL_EXT_direct_state_access"); } else { @@ -1221,7 +1210,6 @@ SkString GrGLCaps::dump() const { r.appendf("GL_ARB_imaging support: %s\n", (fImagingSupport ? "YES": "NO")); r.appendf("Two Format Limit: %s\n", (fTwoFormatLimit ? "YES": "NO")); r.appendf("Vertex array object support: %s\n", (fVertexArrayObjectSupport ? "YES": "NO")); - r.appendf("Instanced drawing support: %s\n", (fInstancedDrawingSupport ? "YES": "NO")); r.appendf("Direct state access support: %s\n", (fDirectStateAccessSupport ? "YES": "NO")); r.appendf("Debug support: %s\n", (fDebugSupport ? "YES": "NO")); r.appendf("Multisample disable support: %s\n", (fMultisampleDisableSupport ? "YES" : "NO")); diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h index 026ae23fb7..c8fad0ade6 100644 --- a/src/gpu/gl/GrGLCaps.h +++ b/src/gpu/gl/GrGLCaps.h @@ -209,9 +209,6 @@ public: /// Is there support for Vertex Array Objects? bool vertexArrayObjectSupport() const { return fVertexArrayObjectSupport; } - /// Is there support for glDraw*Instanced and glVertexAttribDivisor? - bool instancedDrawingSupport() const { return fInstancedDrawingSupport; } - /// Is there support for GL_EXT_direct_state_access? bool directStateAccessSupport() const { return fDirectStateAccessSupport; } @@ -363,7 +360,6 @@ private: bool fImagingSupport : 1; bool fTwoFormatLimit : 1; bool fVertexArrayObjectSupport : 1; - bool fInstancedDrawingSupport : 1; bool fDirectStateAccessSupport : 1; bool fDebugSupport : 1; bool fES2CompatibilitySupport : 1;