| Index: src/gpu/gl/GrGLInterface.cpp
|
| diff --git a/src/gpu/gl/GrGLInterface.cpp b/src/gpu/gl/GrGLInterface.cpp
|
| index 7cb6239a855473044b58ad9a0420941ef8662162..c0ff716d190c6e825f31e60111442eafedcfe0ca 100644
|
| --- a/src/gpu/gl/GrGLInterface.cpp
|
| +++ b/src/gpu/gl/GrGLInterface.cpp
|
| @@ -116,14 +116,18 @@ GrGLInterface* GrGLInterface::NewClone(const GrGLInterface* interface) {
|
| return clone;
|
| }
|
|
|
| +#define RETURN_FALSE_INTERFACE \
|
| + GrDebugCrash("GrGLInterface::validate() failed."); \
|
| + return false; \
|
| +
|
| bool GrGLInterface::validate() const {
|
|
|
| if (kNone_GrGLStandard == fStandard) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
|
|
| if (!fExtensions.isInitialized()) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
|
|
| // functions that are always required
|
| @@ -219,7 +223,7 @@ bool GrGLInterface::validate() const {
|
| NULL == fFunctions.fGenFramebuffers ||
|
| NULL == fFunctions.fGenRenderbuffers ||
|
| NULL == fFunctions.fRenderbufferStorage) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
|
|
| GrGLVersion glVer = GrGLGetVersion(this);
|
| @@ -242,7 +246,7 @@ bool GrGLInterface::validate() const {
|
| if (NULL == fFunctions.fStencilFuncSeparate ||
|
| NULL == fFunctions.fStencilMaskSeparate ||
|
| NULL == fFunctions.fStencilOpSeparate) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| } else if (kGL_GrGLStandard == fStandard) {
|
|
|
| @@ -250,15 +254,15 @@ bool GrGLInterface::validate() const {
|
| if (NULL == fFunctions.fStencilFuncSeparate ||
|
| NULL == fFunctions.fStencilMaskSeparate ||
|
| NULL == fFunctions.fStencilOpSeparate) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (glVer >= GR_GL_VER(3,0) && NULL == fFunctions.fBindFragDataLocation) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| if (glVer >= GR_GL_VER(2,0) || fExtensions.has("GL_ARB_draw_buffers")) {
|
| if (NULL == fFunctions.fDrawBuffers) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
|
|
| @@ -270,7 +274,7 @@ bool GrGLInterface::validate() const {
|
| NULL == fFunctions.fGetQueryiv ||
|
| NULL == fFunctions.fGetQueryObjectiv ||
|
| NULL == fFunctions.fGetQueryObjectuiv) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (glVer >= GR_GL_VER(3,3) ||
|
| @@ -278,12 +282,12 @@ bool GrGLInterface::validate() const {
|
| fExtensions.has("GL_EXT_timer_query")) {
|
| if (NULL == fFunctions.fGetQueryObjecti64v ||
|
| NULL == fFunctions.fGetQueryObjectui64v) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (glVer >= GR_GL_VER(3,3) || fExtensions.has("GL_ARB_timer_query")) {
|
| if (NULL == fFunctions.fQueryCounter) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (!isCoreProfile) {
|
| @@ -292,7 +296,7 @@ bool GrGLInterface::validate() const {
|
| NULL == fFunctions.fMatrixMode ||
|
| NULL == fFunctions.fTexGenfv ||
|
| NULL == fFunctions.fTexGeni) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (fExtensions.has("GL_NV_path_rendering")) {
|
| @@ -345,7 +349,7 @@ bool GrGLInterface::validate() const {
|
| NULL == fFunctions.fIsPointInStrokePath ||
|
| NULL == fFunctions.fGetPathLength ||
|
| NULL == fFunctions.fPointAlongPath) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| }
|
| @@ -355,7 +359,7 @@ bool GrGLInterface::validate() const {
|
| (glVer >= GR_GL_VER(1,3)) ||
|
| fExtensions.has("GL_ARB_texture_compression")) {
|
| if (NULL == fFunctions.fCompressedTexImage2D) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
|
|
| @@ -364,7 +368,7 @@ bool GrGLInterface::validate() const {
|
| (NULL == fFunctions.fGetTexLevelParameteriv ||
|
| NULL == fFunctions.fDrawBuffer ||
|
| NULL == fFunctions.fReadBuffer)) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
|
|
| // GL_EXT_texture_storage is part of desktop 4.2
|
| @@ -374,12 +378,12 @@ bool GrGLInterface::validate() const {
|
| fExtensions.has("GL_ARB_texture_storage") ||
|
| fExtensions.has("GL_EXT_texture_storage")) {
|
| if (NULL == fFunctions.fTexStorage2D) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| } else if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_EXT_texture_storage")) {
|
| if (NULL == fFunctions.fTexStorage2D) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
|
|
| @@ -387,7 +391,7 @@ bool GrGLInterface::validate() const {
|
| // FIXME: Remove this once Chromium is updated to provide this function
|
| #if 0
|
| if (NULL == fFunctions.fDiscardFramebuffer) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| #endif
|
| }
|
| @@ -398,36 +402,36 @@ bool GrGLInterface::validate() const {
|
| if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_ARB_framebuffer_object")) {
|
| if (NULL == fFunctions.fRenderbufferStorageMultisample ||
|
| NULL == fFunctions.fBlitFramebuffer) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| } else {
|
| if (fExtensions.has("GL_EXT_framebuffer_blit") &&
|
| NULL == fFunctions.fBlitFramebuffer) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| if (fExtensions.has("GL_EXT_framebuffer_multisample") &&
|
| NULL == fFunctions.fRenderbufferStorageMultisample) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| } else {
|
| if (glVer >= GR_GL_VER(3,0) || fExtensions.has("GL_CHROMIUM_framebuffer_multisample")) {
|
| if (NULL == fFunctions.fRenderbufferStorageMultisample ||
|
| NULL == fFunctions.fBlitFramebuffer) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (fExtensions.has("GL_APPLE_framebuffer_multisample")) {
|
| if (NULL == fFunctions.fRenderbufferStorageMultisampleES2APPLE ||
|
| NULL == fFunctions.fResolveMultisampleFramebuffer) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| if (fExtensions.has("GL_IMG_multisampled_render_to_texture") ||
|
| fExtensions.has("GL_EXT_multisampled_render_to_texture")) {
|
| if (NULL == fFunctions.fRenderbufferStorageMultisampleES2EXT ||
|
| NULL == fFunctions.fFramebufferTexture2DMultisample) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| }
|
| @@ -438,7 +442,7 @@ bool GrGLInterface::validate() const {
|
| if (kGL_GrGLStandard == fStandard || fExtensions.has("GL_OES_mapbuffer")) {
|
| if (NULL == fFunctions.fMapBuffer ||
|
| NULL == fFunctions.fUnmapBuffer) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
|
|
| @@ -446,14 +450,14 @@ bool GrGLInterface::validate() const {
|
| if (kGL_GrGLStandard == fStandard &&
|
| (glVer >= GR_GL_VER(3,3) || fExtensions.has("GL_ARB_blend_func_extended"))) {
|
| if (NULL == fFunctions.fBindFragDataLocationIndexed) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
|
|
| // glGetStringi was added in version 3.0 of both desktop and ES.
|
| if (glVer >= GR_GL_VER(3, 0)) {
|
| if (NULL == fFunctions.fGetStringi) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
|
|
| @@ -462,7 +466,7 @@ bool GrGLInterface::validate() const {
|
| if (NULL == fFunctions.fBindVertexArray ||
|
| NULL == fFunctions.fDeleteVertexArrays ||
|
| NULL == fFunctions.fGenVertexArrays) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| } else {
|
| @@ -470,7 +474,7 @@ bool GrGLInterface::validate() const {
|
| if (NULL == fFunctions.fBindVertexArray ||
|
| NULL == fFunctions.fDeleteVertexArrays ||
|
| NULL == fFunctions.fGenVertexArrays) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| }
|
| @@ -480,7 +484,7 @@ bool GrGLInterface::validate() const {
|
| if (NULL == fFunctions.fInsertEventMarker ||
|
| NULL == fFunctions.fPushGroupMarker ||
|
| NULL == fFunctions.fPopGroupMarker) {
|
| - return false;
|
| + RETURN_FALSE_INTERFACE
|
| }
|
| }
|
| #endif
|
|
|