Re: [Piglit] [PATCH] egl: Test more invalid GLES2 context versions
On 11/05/2012 02:53 PM, Chad Versace wrote: In test egl-create-context-invalid-gl-version, try to create OpenGL ES2 contexts with additional invalid versions: 3.2, 3.9, 4.7. Fails with mesa-84b437 on Intel Sandybridge. CC: Matt Turner matts...@gmail.com --- tests/egl/spec/egl_khr_create_context/invalid-gl-version.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c index ee33fb9..d83c40b 100644 --- a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c +++ b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c @@ -82,6 +82,9 @@ int main(int argc, char **argv) pass = pass try_version(0, 0); pass = pass try_version(0, -1); pass = pass try_version(1, 2); + pass = pass try_version(3, 2); + pass = pass try_version(3, 9); + pass = pass try_version(4, 7); All of the other subtests check for GLES versions that can *never* be value. It is conceivable that someday 3.2 or 3.9 or 4.7 could be valid. One test that we are missing is a test that tries to create a context of a particular version and verifies that it got a context of that version. It seems like that would be the right way to check for this problem. You may get a context when you ask for 3.2, but I bet glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) only say 3.0. My preference is to not add a test that may break on a future valid implementation. We need that other test anyway. EGL_KHR_create_context_teardown(); } ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH] egl: Test more invalid GLES2 context versions
On 11/06/2012 12:51 PM, Chad Versace wrote: On 11/06/2012 12:19 PM, Ian Romanick wrote: On 11/05/2012 02:53 PM, Chad Versace wrote: In test egl-create-context-invalid-gl-version, try to create OpenGL ES2 contexts with additional invalid versions: 3.2, 3.9, 4.7. Fails with mesa-84b437 on Intel Sandybridge. CC: Matt Turner matts...@gmail.com --- tests/egl/spec/egl_khr_create_context/invalid-gl-version.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c index ee33fb9..d83c40b 100644 --- a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c +++ b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c @@ -82,6 +82,9 @@ int main(int argc, char **argv) pass = pass try_version(0, 0); pass = pass try_version(0, -1); pass = pass try_version(1, 2); +pass = pass try_version(3, 2); +pass = pass try_version(3, 9); +pass = pass try_version(4, 7); All of the other subtests check for GLES versions that can *never* be value. It is conceivable that someday 3.2 or 3.9 or 4.7 could be valid. One test that we are missing is a test that tries to create a context of a particular version and verifies that it got a context of that version. It seems like that would be the right way to check for this problem. You may get a context when you ask for 3.2, but I bet glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) only say 3.0. My preference is to not add a test that may break on a future valid implementation. We need that other test anyway. That's a sensible suggestion. I'll write that test. In that new test, I still want to verify that Mesa returns EGL_BAD_MATCH if context creation fails soley due to the driver not supporting the requested, perhaps invalid, version. Currently, in situations where EGL_BAD_MATCH is the correct error to emit, Mesa emits one of EGL_SUCCESS (!), EGL_BAD_CONFIG, or EGL_BAD_MATCH depending on where internally context creation failed. We really need a test to ensure that Mesa doesn't do that. Can you refresh my memory... what are the cases where we generate EGL_BAD_CONFIG? I see a way to write the new test so that, if context creation fails, the only reasonably expected error is EGL_BAD_MATCH. The pattern looks like the code below. Let me know if you think this is a sensible approach. I think so. // A minimal ES2 config. EGLint config_attrs[] = { EGL_BUFFER_SIZE, 32, EGL_RED_SIZE, 1, EGL_BLUE_SIZE,1, EGL_GREEN_SIZE, 1, EGL_ALPHA_SIZE, 1, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_OPENGL_ES3_BIT_KHR? EGL_NONE, }; EGLint context_attrs[] = { EGL_CONTEXT_MAJOR_VERSION_KHR, 3, EGL_CONTEXT_MINOR_VERSION_KHR, 2, EGL_NONE, }; EGLConfig config; EGLContext ctx; eglBindAPI(EGL_OPENGL_ES); eglChooseConfig(..., config_attrs, config); assert(config != 0); ctx = eglCreateContext(..., config, context_attrs); // If the driver supports the requested context version and api, // then we can reasonably expect context creation to succeed because // the chosen config is minimal. Therefore, if context creation fails, // it is safe to assume that failure occurred due to the driver not // supporting the requested context version and api, in which case // the EGL_KHR_create_context spec requires EGL_BAD_MATCH to be emitted. if (ctx) { // Verify the context's actual version. } else { if (eglGetError() == EGL_BAD_MATCH) PASS(); else FAIL(); } ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH] egl: Test more invalid GLES2 context versions
On 11/06/2012 04:21 PM, Ian Romanick wrote: On 11/06/2012 12:51 PM, Chad Versace wrote: On 11/06/2012 12:19 PM, Ian Romanick wrote: On 11/05/2012 02:53 PM, Chad Versace wrote: In test egl-create-context-invalid-gl-version, try to create OpenGL ES2 contexts with additional invalid versions: 3.2, 3.9, 4.7. Fails with mesa-84b437 on Intel Sandybridge. CC: Matt Turner matts...@gmail.com --- tests/egl/spec/egl_khr_create_context/invalid-gl-version.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c index ee33fb9..d83c40b 100644 --- a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c +++ b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c @@ -82,6 +82,9 @@ int main(int argc, char **argv) pass = pass try_version(0, 0); pass = pass try_version(0, -1); pass = pass try_version(1, 2); +pass = pass try_version(3, 2); +pass = pass try_version(3, 9); +pass = pass try_version(4, 7); All of the other subtests check for GLES versions that can *never* be value. It is conceivable that someday 3.2 or 3.9 or 4.7 could be valid. One test that we are missing is a test that tries to create a context of a particular version and verifies that it got a context of that version. It seems like that would be the right way to check for this problem. You may get a context when you ask for 3.2, but I bet glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) only say 3.0. My preference is to not add a test that may break on a future valid implementation. We need that other test anyway. That's a sensible suggestion. I'll write that test. In that new test, I still want to verify that Mesa returns EGL_BAD_MATCH if context creation fails soley due to the driver not supporting the requested, perhaps invalid, version. Currently, in situations where EGL_BAD_MATCH is the correct error to emit, Mesa emits one of EGL_SUCCESS (!), EGL_BAD_CONFIG, or EGL_BAD_MATCH depending on where internally context creation failed. We really need a test to ensure that Mesa doesn't do that. Can you refresh my memory... what are the cases where we generate EGL_BAD_CONFIG? When the user requests a GLES context = 4.0. By examining the code, it's apparent that Mesa doesn't intend to emit EGL_BAD_CONFIG; it's an accident due to unexpected interaction between eglGetContextAPIBit (internal function) and its caller. I see a way to write the new test so that, if context creation fails, the only reasonably expected error is EGL_BAD_MATCH. The pattern looks like the code below. Let me know if you think this is a sensible approach. I think so. Great. // A minimal ES2 config. EGLint config_attrs[] = { EGL_BUFFER_SIZE, 32, EGL_RED_SIZE, 1, EGL_BLUE_SIZE,1, EGL_GREEN_SIZE, 1, EGL_ALPHA_SIZE, 1, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_OPENGL_ES3_BIT_KHR? I intended to use the ES2 bit. That's how the OpenGL ES3 conformance suite creates ES3 contexts. I'm unsure if that bit is strictly required to create an ES3 context. The current situation is: (1) Mesa doesn't recognize the bit and emits an error on encountering it and (2) the OpenGL ES3 conformance suite doesn't set the bit when creating ES3 contexts. See my mail today to the Khronos EGL list for details. EGL_NONE, }; EGLint context_attrs[] = { EGL_CONTEXT_MAJOR_VERSION_KHR, 3, EGL_CONTEXT_MINOR_VERSION_KHR, 2, EGL_NONE, }; EGLConfig config; EGLContext ctx; eglBindAPI(EGL_OPENGL_ES); eglChooseConfig(..., config_attrs, config); assert(config != 0); ctx = eglCreateContext(..., config, context_attrs); // If the driver supports the requested context version and api, // then we can reasonably expect context creation to succeed because // the chosen config is minimal. Therefore, if context creation fails, // it is safe to assume that failure occurred due to the driver not // supporting the requested context version and api, in which case // the EGL_KHR_create_context spec requires EGL_BAD_MATCH to be emitted. if (ctx) { // Verify the context's actual version. } else { if (eglGetError() == EGL_BAD_MATCH) PASS(); else FAIL(); } ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH] egl: Test more invalid GLES2 context versions
On Mon, Nov 5, 2012 at 2:53 PM, Chad Versace chad.vers...@linux.intel.com wrote: In test egl-create-context-invalid-gl-version, try to create OpenGL ES2 contexts with additional invalid versions: 3.2, 3.9, 4.7. Fails with mesa-84b437 on Intel Sandybridge. CC: Matt Turner matts...@gmail.com --- tests/egl/spec/egl_khr_create_context/invalid-gl-version.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c index ee33fb9..d83c40b 100644 --- a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c +++ b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c @@ -82,6 +82,9 @@ int main(int argc, char **argv) pass = pass try_version(0, 0); pass = pass try_version(0, -1); pass = pass try_version(1, 2); + pass = pass try_version(3, 2); + pass = pass try_version(3, 9); + pass = pass try_version(4, 7); EGL_KHR_create_context_teardown(); } -- 1.7.11.7 That looks like it's adding the checks to the if (EGL_KHR_create_context_setup(EGL_OPENGL_ES_BIT)) block. I suppose we could check that, but it doesn't look like that's what you meant from the commit message. Maybe we should have checks to make sure that asking for version 2.0 of an ES1 context is an error. Doesn't seem terribly important though. Since this test is testing invalid versions, what happens when there actually is a GLES 3.2? :) ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH] egl: Test more invalid GLES2 context versions
On 11/05/2012 04:01 PM, Matt Turner wrote: On Mon, Nov 5, 2012 at 2:53 PM, Chad Versace chad.vers...@linux.intel.com wrote: In test egl-create-context-invalid-gl-version, try to create OpenGL ES2 contexts with additional invalid versions: 3.2, 3.9, 4.7. Fails with mesa-84b437 on Intel Sandybridge. CC: Matt Turner matts...@gmail.com --- tests/egl/spec/egl_khr_create_context/invalid-gl-version.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c index ee33fb9..d83c40b 100644 --- a/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c +++ b/tests/egl/spec/egl_khr_create_context/invalid-gl-version.c @@ -82,6 +82,9 @@ int main(int argc, char **argv) pass = pass try_version(0, 0); pass = pass try_version(0, -1); pass = pass try_version(1, 2); + pass = pass try_version(3, 2); + pass = pass try_version(3, 9); + pass = pass try_version(4, 7); EGL_KHR_create_context_teardown(); } -- 1.7.11.7 That looks like it's adding the checks to the if (EGL_KHR_create_context_setup(EGL_OPENGL_ES_BIT)) block. I suppose we could check that, but it doesn't look like that's what you meant from the commit message. Maybe we should have checks to make sure that asking for version 2.0 of an ES1 context is an error. Doesn't seem terribly important though. Oops. v2 coming soon. Since this test is testing invalid versions, what happens when there actually is a GLES 3.2? :) Then this test will regress, and we'll bump it to GLES 3.3 :) Currently, if you request an OpenGL ES 3.2 context, Mesa will gladly create one for you. That's why we need a test for this. I have Mesa patches to fix this, pending on this tests acceptance. ___ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit