diff options
author | Sven Gothel <[email protected]> | 2013-01-27 14:08:07 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-01-27 14:08:07 +0100 |
commit | 2fe180fbee15b82e2ae14fe3c95887db246c874d (patch) | |
tree | 62664ce340fef807fd061b849aea5a46bba7b314 /src/test/com/jogamp | |
parent | 3f4eeaf76efa8f1f8b305c8dc1770dc679ced307 (diff) |
Bug 665 (part 3) - Allow dis-association of GLContext's GLDrawable .. - Add EGL/ES2 tests, attempt to fix wrapped EGL case
- Bug 665 (part 2) was commit 7fd5f76e1eb4bbf93fe9b1171744bd755d8f96e4
- Add EGL/ES2 tests in
- TestGLContextDrawableSwitch01NEWT
- TestGLContextDrawableSwitch11NEWT
- Attempt to fix wrapped EGL case (incomplete)
- Using EGL/ES w/ non native EGL device/surface, but natively wrapped instances (most of the cases),
a 'complicated' delegation of
Native-Upstream -> EGL-Proxy -> EGL-Instance
is being used heavily relying on the objects lifecycle.
GLEventListenerState tries to roll back the realized state
and even sets the upstream device handle,
but this doesn't seem to be sufficient on X11.
Discussion:
It might turn out that we only can implement the survival of GLContext
and it's display device reliable w/ EGL within the GLAutoDrawable implementation,
which can hold the previous not destructed instances.
Diffstat (limited to 'src/test/com/jogamp')
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch01NEWT.java | 57 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch11NEWT.java | 63 |
2 files changed, 98 insertions, 22 deletions
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch01NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch01NEWT.java index 08a0857a9..8b1449493 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch01NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch01NEWT.java @@ -64,14 +64,18 @@ import org.junit.Test; * i.e. ctx1/draw1, ctx2/draw2 -> ctx1/draw2, ctx2/draw1. */ public class TestGLContextDrawableSwitch01NEWT extends UITestCase { - static GLProfile glp; - static GLCapabilities caps; static int width, height; + static GLCapabilities getCaps(String profile) { + if( !GLProfile.isAvailable(profile) ) { + System.err.println("Profile "+profile+" n/a"); + return null; + } + return new GLCapabilities(GLProfile.get(profile)); + } + @BeforeClass public static void initClass() { - glp = GLProfile.getGL2ES2(); - caps = new GLCapabilities(glp); width = 256; height = 256; } @@ -124,7 +128,20 @@ public class TestGLContextDrawableSwitch01NEWT extends UITestCase { } @Test(timeout=30000) - public void testSwitch2WindowSingleContext() throws InterruptedException { + public void testSwitch2WindowSingleContextGL2ES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2ES2); + if(null == reqGLCaps) return; + testSwitch2WindowSingleContextImpl(reqGLCaps); + } + + @Test(timeout=30000) + public void testSwitch2WindowSingleContextGLES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); + if(null == reqGLCaps) return; + testSwitch2WindowSingleContextImpl(reqGLCaps); + } + + private void testSwitch2WindowSingleContextImpl(GLCapabilities caps) throws InterruptedException { final QuitAdapter quitAdapter = new QuitAdapter(); GLAutoDrawable glad1 = createGLAutoDrawable(caps, 64, 64, width, height, quitAdapter); @@ -178,7 +195,20 @@ public class TestGLContextDrawableSwitch01NEWT extends UITestCase { } @Test(timeout=30000) - public void testSwitch2GLWindowOneDemo() throws InterruptedException { + public void testSwitch2GLWindowOneDemoGL2ES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2ES2); + if(null == reqGLCaps) return; + testSwitch2GLWindowOneDemoImpl(reqGLCaps); + } + + @Test(timeout=30000) + public void testSwitch2GLWindowOneDemoGLES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); + if(null == reqGLCaps) return; + testSwitch2GLWindowOneDemoImpl(reqGLCaps); + } + + private void testSwitch2GLWindowOneDemoImpl(GLCapabilities caps) throws InterruptedException { final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); final GearsES2 gears = new GearsES2(1); final QuitAdapter quitAdapter = new QuitAdapter(); @@ -238,7 +268,20 @@ public class TestGLContextDrawableSwitch01NEWT extends UITestCase { } @Test(timeout=30000) - public void testSwitch2GLWindowEachWithOwnDemo() throws InterruptedException { + public void testSwitch2GLWindowEachWithOwnDemoGL2ES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2ES2); + if(null == reqGLCaps) return; + testSwitch2GLWindowEachWithOwnDemoImpl(reqGLCaps); + } + + @Test(timeout=30000) + public void testSwitch2GLWindowEachWithOwnDemoGLES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); + if(null == reqGLCaps) return; + testSwitch2GLWindowEachWithOwnDemoImpl(reqGLCaps); + } + + public void testSwitch2GLWindowEachWithOwnDemoImpl(GLCapabilities caps) throws InterruptedException { final GearsES2 gears = new GearsES2(1); final RedSquareES2 rsquare = new RedSquareES2(1); final QuitAdapter quitAdapter = new QuitAdapter(); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch11NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch11NEWT.java index cd308e165..4af9a3932 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch11NEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLContextDrawableSwitch11NEWT.java @@ -69,19 +69,23 @@ import org.junit.Test; * </p> */ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { - static GLProfile glp; - static GLCapabilities caps; static int width, height; + static GLCapabilities getCaps(String profile) { + if( !GLProfile.isAvailable(profile) ) { + System.err.println("Profile "+profile+" n/a"); + return null; + } + return new GLCapabilities(GLProfile.get(profile)); + } + @BeforeClass public static void initClass() { - glp = GLProfile.getGL2ES2(); - caps = new GLCapabilities(glp); width = 256; height = 256; } - private GLAutoDrawable createGLAutoDrawable(GLCapabilities caps, int x, int y, int width, int height, WindowListener wl) throws InterruptedException { + private GLAutoDrawable createGLAutoDrawableWithoutContext(GLCapabilities caps, int x, int y, int width, int height, WindowListener wl) throws InterruptedException { final Window window = NewtFactory.createWindow(caps); Assert.assertNotNull(window); window.setPosition(x, y); @@ -126,7 +130,20 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { } @Test(timeout=30000) - public void test01() throws InterruptedException { + public void test01GLADDelegateGL2ES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2ES2); + if(null == reqGLCaps) return; + test01GLADDelegateImpl(reqGLCaps); + } + + @Test(timeout=30000) + public void test01GLADDelegateGLES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); + if(null == reqGLCaps) return; + test01GLADDelegateImpl(reqGLCaps); + } + + private void test01GLADDelegateImpl(GLCapabilities caps) throws InterruptedException { final QuitAdapter quitAdapter = new QuitAdapter(); final GLEventListenerCounter glelCounter = new GLEventListenerCounter(); @@ -140,7 +157,7 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { // - create glad1 w/o context // - create context using glad1 and assign it to glad1 { - final GLAutoDrawable glad1 = createGLAutoDrawable(caps, 64, 64, width, height, quitAdapter); + final GLAutoDrawable glad1 = createGLAutoDrawableWithoutContext(caps, 64, 64, width, height, quitAdapter); final GLContext context1 = glad1.createContext(null); glad1.setContext(context1); animator.add(glad1); @@ -149,7 +166,7 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { glad1.addGLEventListener(new GearsES2(1)); glad1.addGLEventListener(snapshotGLEventListener); snapshotGLEventListener.setMakeSnapshot(); - + long t1 = System.currentTimeMillis(); while( !quitAdapter.shouldQuit() && ( t1 - t0 ) < duration/2 ) { @@ -157,8 +174,6 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { t1 = System.currentTimeMillis(); } - // - dis-associate context from glad1 - // - destroy glad1 Assert.assertEquals(1, glelCounter.initCount); Assert.assertTrue(1 <= glelCounter.reshapeCount); Assert.assertTrue(1 <= glelCounter.displayCount); @@ -168,6 +183,8 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { Assert.assertEquals(context1.getGLReadDrawable(), glad1.getDelegatedDrawable()); Assert.assertEquals(context1.getGLDrawable(), glad1.getDelegatedDrawable()); + // - dis-associate context from glad1 + // - destroy glad1 glls1 = GLEventListenerState.moveFrom(glad1); Assert.assertEquals(1, glelCounter.initCount); @@ -191,7 +208,7 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { // - create glad2 w/ survived context { - final GLAutoDrawable glad2 = createGLAutoDrawable(caps, 2*64+width, 64, width+100, height+100, quitAdapter); + final GLAutoDrawable glad2 = createGLAutoDrawableWithoutContext(caps, 2*64+width, 64, width+100, height+100, quitAdapter); snapshotGLEventListener.setMakeSnapshot(); Assert.assertEquals(null, glad2.getContext()); @@ -199,6 +216,8 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { glls1.moveTo(glad2); + Assert.assertTrue(glad2.isRealized()); + Assert.assertEquals(1, glelCounter.initCount); Assert.assertTrue(1 <= glelCounter.reshapeCount); Assert.assertTrue(1 <= glelCounter.displayCount); @@ -226,7 +245,20 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { } @Test(timeout=30000) - public void test02() throws InterruptedException { + public void test02GLWindowGL2ES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GL2ES2); + if(null == reqGLCaps) return; + test02GLWindowImpl(reqGLCaps); + } + + @Test(timeout=30000) + public void test02GLWindowGLES2() throws InterruptedException { + final GLCapabilities reqGLCaps = getCaps(GLProfile.GLES2); + if(null == reqGLCaps) return; + test02GLWindowImpl(reqGLCaps); + } + + private void test02GLWindowImpl(GLCapabilities caps) throws InterruptedException { final QuitAdapter quitAdapter = new QuitAdapter(); final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); @@ -244,7 +276,6 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { glad1.setSize(width, height); glad1.setPosition(64, 64); glad1.addWindowListener(quitAdapter); - glad1.setVisible(true); animator.add(glad1); glad1.addGLEventListener(glelTracker); @@ -252,6 +283,8 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { glad1.addGLEventListener(snapshotGLEventListener); snapshotGLEventListener.setMakeSnapshot(); + glad1.setVisible(true); + long t1 = System.currentTimeMillis(); while( !quitAdapter.shouldQuit() && ( t1 - t0 ) < duration/2 ) { @@ -297,13 +330,13 @@ public class TestGLContextDrawableSwitch11NEWT extends UITestCase { glad2.setSize(width+100, height+100); glad2.setPosition(2*64+width, 64); glad2.addWindowListener(quitAdapter); - glad2.setVisible(true); snapshotGLEventListener.setMakeSnapshot(); + glad2.setVisible(true); Assert.assertNotNull(glad2.getContext()); Assert.assertEquals(0, glad2.getGLEventListenerCount()); - glls1.moveTo(glad2); + glls1.moveTo(glad2); Assert.assertEquals(1, glelTracker.initCount); Assert.assertTrue(1 <= glelTracker.reshapeCount); |