Add missing attribute to eglGetConfigAttrib
EGL_ANGLE_iosurface_client_buffer added a new attribute to the config:
EGL_BIND_TO_TEXTURE_TARGET_ANGLE, which needed to be properly exposed
in the EGL frontend.
Bug: chromium:1015454
Change-Id: I58881df18d711ed7974a0a06e53fed42b1f28638
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/41709
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libEGL/Config.cpp b/src/OpenGL/libEGL/Config.cpp
index 1af9229..62dc92f 100644
--- a/src/OpenGL/libEGL/Config.cpp
+++ b/src/OpenGL/libEGL/Config.cpp
@@ -18,6 +18,7 @@
#include "Config.h"
+#include "Display.h"
#include "common/debug.h"
#include <EGL/eglext.h>
@@ -192,6 +193,7 @@
// the intent of EGL_ANDROID_framebuffer_target is to prevent any copies or conversions.
mFramebufferTargetAndroid = (displayFormat == renderTargetFormat) ? EGL_TRUE : EGL_FALSE;
mRecordableAndroid = EGL_TRUE;
+ mBindToTextureTargetANGLE = EGL_TEXTURE_RECTANGLE_ANGLE;
}
EGLConfig Config::getHandle() const
@@ -398,6 +400,7 @@
case EGL_CONFORMANT: match = (config->mConformant & attribIt->second) == attribIt->second; break;
case EGL_RECORDABLE_ANDROID: match = config->mRecordableAndroid == (EGLBoolean)attribIt->second; break;
case EGL_FRAMEBUFFER_TARGET_ANDROID: match = config->mFramebufferTargetAndroid == (EGLBoolean)attribIt->second; break;
+ case EGL_BIND_TO_TEXTURE_TARGET_ANGLE: match = config->mBindToTextureTargetANGLE == (EGLBoolean)attribIt->second; break;
// Ignored attributes
case EGL_MAX_PBUFFER_WIDTH:
diff --git a/src/OpenGL/libEGL/Config.h b/src/OpenGL/libEGL/Config.h
index 46719e1..d173b51 100644
--- a/src/OpenGL/libEGL/Config.h
+++ b/src/OpenGL/libEGL/Config.h
@@ -76,6 +76,7 @@
EGLBoolean mRecordableAndroid; // EGL_ANDROID_recordable
EGLBoolean mFramebufferTargetAndroid; // EGL_ANDROID_framebuffer_target
+ EGLenum mBindToTextureTargetANGLE; // EGL_ANGLE_iosurface_client_buffer
};
struct CompareConfig
diff --git a/src/OpenGL/libEGL/Display.cpp b/src/OpenGL/libEGL/Display.cpp
index eeb44e5..426769e 100644
--- a/src/OpenGL/libEGL/Display.cpp
+++ b/src/OpenGL/libEGL/Display.cpp
@@ -279,6 +279,7 @@
case EGL_MAX_PBUFFER_PIXELS: *value = configuration->mMaxPBufferPixels; break;
case EGL_RECORDABLE_ANDROID: *value = configuration->mRecordableAndroid; break;
case EGL_FRAMEBUFFER_TARGET_ANDROID: *value = configuration->mFramebufferTargetAndroid; break;
+ case EGL_BIND_TO_TEXTURE_TARGET_ANGLE: *value = configuration->mBindToTextureTargetANGLE; break;
default:
return false;
}
diff --git a/src/OpenGL/libEGL/Display.h b/src/OpenGL/libEGL/Display.h
index a187e21..106a4e0 100644
--- a/src/OpenGL/libEGL/Display.h
+++ b/src/OpenGL/libEGL/Display.h
@@ -33,6 +33,7 @@
#define EGL_TEXTURE_RECTANGLE_ANGLE 0x345B
#define EGL_TEXTURE_TYPE_ANGLE 0x345C
#define EGL_TEXTURE_INTERNAL_FORMAT_ANGLE 0x345D
+#define EGL_BIND_TO_TEXTURE_TARGET_ANGLE 0x348D
#endif // EGL_ANGLE_iosurface_client_buffer
namespace egl