blob: f8cd28d50c95da249ba89254526714432da82843 (
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
122
123
124
|
/*
* 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;
// @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 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);
}
// @AfterClass
public static void release() {
if(glcontext!= null) {
glcontext = null;
}
}
@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);
}
assertNotNull(glcontext);
out.println(device.getPlatform());
CLContext context = CLGLContext.create(glcontext, device);
assertNotNull(context);
assertTrue(glcontext.isCurrent());
try{
out.println(context);
/*
CLDevice currentDevice = context.getCurrentGLCLDevice();
assertNotNull(currentDevice);
out.println(currentDevice);
*/
}finally{
context.release();
}
glcontext.destroy();
release();
}
}
|