summaryrefslogtreecommitdiffstats
path: root/test/com/jogamp/opencl/gl/CLGLTest.java
blob: e28648229e4d4d1a9410ddfac5a9647b06b54938 (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
/*
 * Created on Saturday, April 24 2010 02:58 AM
 */

package com.jogamp.opencl.gl;

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 org.junit.AfterClass;
import org.junit.BeforeClass;
import javax.media.opengl.GLContext;
import org.junit.Test;

import static org.junit.Assert.*;
import static org.junit.Assume.*;
import static java.lang.System.*;

/**
 * Test testing the JOGL - JOCL interoperability.
 * @author Michael Bien
 */
public class CLGLTest {

    private static GLContext glcontext;

    @BeforeClass
    public static void init() {

        GLProfile.initSingleton();

        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()), false /* undecorated */);
        assertNotNull(window);

        window.setSize(640, 480);

        GLWindow glWindow = GLWindow.create(window);
        
        assumeNotNull(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.destroy();
            glcontext = null;
        }
    }

    @Test
    public void createContextTest() {

        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);
        }

        assumeNotNull(glcontext);
        CLContext context = CLGLContext.create(glcontext, device);
        assertNotNull(context);
        assertTrue(glcontext.isCurrent());

        try{
            out.println(context);
        }finally{
            context.release();
        }


    }


}