blob: 27c2425cc330d114c726ee525213d763e6d23c60 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/*
* Created on Saturday, April 24 2010 02:58 AM
*/
package com.jogamp.opencl.gl;
import com.jogamp.common.os.Platform;
import org.junit.Rule;
import org.junit.rules.MethodRule;
import org.junit.rules.Timeout;
import com.jogamp.opencl.CLDevice;
import com.jogamp.newt.Display;
import com.jogamp.newt.NewtFactory;
import com.jogamp.newt.Screen;
import com.jogamp.newt.Window;
import com.jogamp.newt.opengl.GLWindow;
import com.jogamp.opencl.CLContext;
import com.jogamp.opencl.CLPlatform;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
import javax.media.opengl.GLContext;
import org.junit.Test;
import static org.junit.Assert.*;
import static java.lang.System.*;
/**
* Test testing the JOGL - JOCL interoperability.
* @author Michael Bien
*/
public class CLGLTest {
@Rule
public MethodRule methodTimeout= new Timeout(5000);
private static GLContext glcontext;
private static GLWindow glWindow;
private static Window window;
// @BeforeClass
public static void init() {
GLProfile.initSingleton(true);
// FIXME remove when JOCL is stabelized on mac
if(Platform.getOS().toLowerCase().contains("mac")) {
fail("quick exit to prevent deadlock");
}
Display display = NewtFactory.createDisplay(null); // local display
assertNotNull(display);
Screen screen = NewtFactory.createScreen(display, 0); // screen 0
assertNotNull(screen);
window = NewtFactory.createWindow(screen, new GLCapabilities(GLProfile.getDefault()));
assertNotNull(window);
window.setSize(640, 480);
glWindow = GLWindow.create(window);
assertNotNull(glWindow);
glWindow.setVisible(true);
glcontext = glWindow.getContext();
// glcontext.makeCurrent();
out.println("useing glcontext:");
out.println(glcontext);
}
@Test
public void createContextTest() {
init();
out.println(" - - - glcl; createContextTest - - - ");
CLDevice[] devices = CLPlatform.getDefault().listCLDevices();
CLDevice device = null;
for (CLDevice d : devices) {
if(d.isGLMemorySharingSupported()) {
device = d;
break;
}
}
if(device == null) {
out.println("Aborting test: no GLCL capable devices found.");
return;
}else{
out.println("isGLMemorySharingSupported==true on: \n "+device);
}
out.println(device.getPlatform());
assertNotNull(glcontext);
glcontext.makeCurrent();
assertTrue(glcontext.isCurrent());
CLContext context = CLGLContext.create(glcontext, device);
assertNotNull(context);
try{
out.println(context);
/*
CLDevice currentDevice = context.getCurrentGLCLDevice();
assertNotNull(currentDevice);
out.println(currentDevice);
*/
}finally{
// destroy cl context, gl context still current
context.release();
glcontext.release();
glWindow.destroy();
}
}
}
|