diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp index 0609e54e53..4c726a8ea9 100644 --- a/src/libANGLE/Context.cpp +++ b/src/libANGLE/Context.cpp @@ -4816,6 +4816,13 @@ void Context::updateCaps() mRequiresRobustBehavior = mState.isWebGL() || mState.hasRobustAccess(); mBufferAccessValidationEnabled = !mSupportedExtensions.robustBufferAccessBehaviorKHR && mRequiresRobustBehavior; + fprintf(stderr, + "[POC][Context::initializeDefaultResources] isWebGL=%d hasRobustAccess=%d " + "backend.robustBufferAccessBehaviorKHR=%d -> " + "mBufferAccessValidationEnabled=%d\n", + (int)mState.isWebGL(), (int)mState.hasRobustAccess(), + (int)mSupportedExtensions.robustBufferAccessBehaviorKHR, + (int)mBufferAccessValidationEnabled); // Cache this in the VertexArrays. They need to check it in state change notifications. // Note: vertex array objects are private to context and so the map doesn't need locking diff --git a/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp b/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp index 8ebc52f5ac..4e465cb6c7 100644 --- a/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp +++ b/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp @@ -205,6 +205,16 @@ egl::Error DisplayEGL::initializeContext(EGLContext shareContext, } native_egl::AttributeVector attribVector = attribsWithRobustness.toIntVector(); + { + fprintf(stderr, + "[POC][DisplayEGL::initializeContext] creating native EGL " + "context with attribs:"); + for (size_t i = 0; i + 1 < attribVector.size(); i += 2) + fprintf(stderr, " 0x%x=0x%x", attribVector[i], attribVector[i + 1]); + fprintf(stderr, + " (EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT=0x30BF: %s)\n", + attribsWithRobustness.contains(0x30BF) ? "PRESENT" : "**MISSING**"); + } EGLContext context = mEGL->createContext(mConfig, shareContext, attribVector.data()); if (context != EGL_NO_CONTEXT) { diff --git a/src/libANGLE/renderer/gl/renderergl_utils.cpp b/src/libANGLE/renderer/gl/renderergl_utils.cpp index b8219a1080..b7893992fb 100644 --- a/src/libANGLE/renderer/gl/renderergl_utils.cpp +++ b/src/libANGLE/renderer/gl/renderergl_utils.cpp @@ -1716,6 +1716,21 @@ void GenerateCaps(const FunctionsGL *functions, extensions->robustnessEXT && (functions->hasGLExtension("GL_ARB_robust_buffer_access_behavior") || functions->hasGLESExtension("GL_KHR_robust_buffer_access_behavior")); + { + // POC INSTRUMENTATION: log whether the native driver context actually + // has GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT set. ANGLE just decided to + // advertise robustBufferAccessBehaviorKHR based on the extension + // string alone -- this prints the ground truth. + GLint nativeFlags = 0; + functions->getIntegerv(GL_CONTEXT_FLAGS, &nativeFlags); + fprintf(stderr, + "[POC][renderergl_utils] native GL_CONTEXT_FLAGS=0x%x " + "ROBUST_ACCESS_BIT=%s, advertising " + "robustBufferAccessBehaviorKHR=%s\n", + nativeFlags, + (nativeFlags & GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT) ? "SET" : "**UNSET**", + extensions->robustBufferAccessBehaviorKHR ? "true" : "false"); + } extensions->stencilTexturingANGLE = functions->isAtLeastGL(gl::Version(4, 3)) || functions->hasGLExtension("GL_ARB_stencil_texturing") ||