diff options
Diffstat (limited to 'src/com/jogamp/opencl/gl/CLGLContext.java')
-rw-r--r-- | src/com/jogamp/opencl/gl/CLGLContext.java | 120 |
1 files changed, 61 insertions, 59 deletions
diff --git a/src/com/jogamp/opencl/gl/CLGLContext.java b/src/com/jogamp/opencl/gl/CLGLContext.java index e99e7ac4..2564a82d 100644 --- a/src/com/jogamp/opencl/gl/CLGLContext.java +++ b/src/com/jogamp/opencl/gl/CLGLContext.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,7 +20,7 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. @@ -44,6 +44,8 @@ import com.jogamp.opencl.CLContext; import com.jogamp.opencl.CLDevice; import com.jogamp.opencl.CLMemory.Mem; import com.jogamp.opencl.CLPlatform; +import com.jogamp.opencl.llb.CL; +import com.jogamp.opencl.llb.CLContextBinding; import com.jogamp.opencl.llb.gl.CLGL; /** @@ -55,7 +57,7 @@ public final class CLGLContext extends CLContext { final long glID; private final GLContext glContext; - private CLGLContext(CLPlatform platform, GLContext glContext, long clContextID, long glContextID, ErrorDispatcher dispatcher) { + private CLGLContext(final CLPlatform platform, final GLContext glContext, final long clContextID, final long glContextID, final ErrorDispatcher dispatcher) { super(platform, clContextID, dispatcher); this.glID = glContextID; this.glContext = glContext; @@ -65,7 +67,7 @@ public final class CLGLContext extends CLContext { * Creates a shared context on all available devices (CL_DEVICE_TYPE_ALL). * @see GLContext#makeCurrent() */ - public static CLGLContext create(GLContext glContext) { + public static CLGLContext create(final GLContext glContext) { return create(glContext, (CLPlatform)null, CLDevice.Type.ALL); } @@ -73,7 +75,7 @@ public final class CLGLContext extends CLContext { * Creates a shared context on the specified platform on all available devices (CL_DEVICE_TYPE_ALL). * @see GLContext#makeCurrent() */ - public static CLGLContext create(GLContext glContext, CLPlatform platform) { + public static CLGLContext create(final GLContext glContext, final CLPlatform platform) { return create(glContext, platform, CLDevice.Type.ALL); } @@ -82,7 +84,7 @@ public final class CLGLContext extends CLContext { * device types. * @see GLContext#makeCurrent() */ - public static CLGLContext create(GLContext glContext, CLDevice.Type... deviceTypes) { + public static CLGLContext create(final GLContext glContext, final CLDevice.Type... deviceTypes) { return create(glContext, null, deviceTypes); } @@ -91,16 +93,16 @@ public final class CLGLContext extends CLContext { * device types. * @see GLContext#makeCurrent() */ - public static CLGLContext create(GLContext glContext, CLPlatform platform, CLDevice.Type... deviceTypes) { + public static CLGLContext create(final GLContext glContext, CLPlatform platform, final CLDevice.Type... deviceTypes) { if(platform == null) { platform = CLPlatform.getDefault(); } - long[] glID = new long[1]; - PointerBuffer properties = setupContextProperties(platform, glContext, glID); - ErrorDispatcher dispatcher = createErrorHandler(); - long clID = createContextFromType(platform, dispatcher, properties, toDeviceBitmap(deviceTypes)); + final long[] glID = new long[1]; + final PointerBuffer properties = setupContextProperties(platform, glContext, glID); + final ErrorDispatcher dispatcher = createErrorHandler(); + final long clID = createContextFromType(platform, dispatcher, properties, toDeviceBitmap(deviceTypes)); return new CLGLContext(platform, glContext, clID, glID[0], dispatcher); @@ -111,7 +113,7 @@ public final class CLGLContext extends CLContext { * devices. * @see GLContext#makeCurrent() */ - public static CLGLContext create(GLContext glContext, CLDevice... devices) { + public static CLGLContext create(final GLContext glContext, final CLDevice... devices) { if(devices == null) { throw new IllegalArgumentException("no devices specified"); @@ -119,14 +121,14 @@ public final class CLGLContext extends CLContext { throw new IllegalArgumentException("first device was null"); } - CLPlatform platform = devices[0].getPlatform(); + final CLPlatform platform = devices[0].getPlatform(); - long[] glID = new long[1]; - PointerBuffer properties = setupContextProperties(platform, glContext, glID); - ErrorDispatcher dispatcher = createErrorHandler(); - long clID = createContext(platform, dispatcher, properties, devices); + final long[] glID = new long[1]; + final PointerBuffer properties = setupContextProperties(platform, glContext, glID); + final ErrorDispatcher dispatcher = createErrorHandler(); + final long clID = createContext(platform, dispatcher, properties, devices); - CLGLContext context = new CLGLContext(platform, glContext, clID, glID[0], dispatcher); + final CLGLContext context = new CLGLContext(platform, glContext, clID, glID[0], dispatcher); if(devices != null) { for (int i = 0; i < devices.length; i++) { context.overrideContext(devices[i]); @@ -136,7 +138,7 @@ public final class CLGLContext extends CLContext { } - private static PointerBuffer setupContextProperties(CLPlatform platform, GLContext glContext, long[] glID) { + private static PointerBuffer setupContextProperties(final CLPlatform platform, final GLContext glContext, final long[] glID) { if(platform == null) { throw new RuntimeException("no OpenCL installation found"); @@ -151,7 +153,7 @@ public final class CLGLContext extends CLContext { " creating a OpenCL context for context sharing is not allowed in this situation."); } - GLContextImpl ctxImpl = (GLContextImpl)glContext; + final GLContextImpl ctxImpl = (GLContextImpl)glContext; glID[0] = glContext.getHandle(); PointerBuffer properties; @@ -162,36 +164,36 @@ public final class CLGLContext extends CLContext { // set to the Display handle of the X Window System display used to // create the OpenGL context." properties = PointerBuffer.allocateDirect(7); - long displayHandle = ctxImpl.getDrawableImpl().getNativeSurface().getDisplayHandle(); + final long displayHandle = ctxImpl.getDrawableImpl().getNativeSurface().getDisplayHandle(); properties.put(CLGL.CL_GL_CONTEXT_KHR).put(glID[0]) - .put(CLGL.CL_GLX_DISPLAY_KHR).put(displayHandle) - .put(CLGL.CL_CONTEXT_PLATFORM).put(platform.ID); + .put(CL.CL_GLX_DISPLAY_KHR).put(displayHandle) + .put(CLContextBinding.CL_CONTEXT_PLATFORM).put(platform.ID); }else if(glContext instanceof WindowsWGLContext) { // spec: "When the WGL binding API is supported, the attribute // CL_GL_CONTEXT_KHR should be set to an HGLRC handle to an OpenGL // context, and the attribute CL_WGL_HDC_KHR should be set to the // HDC handle of the display used to create the OpenGL context." properties = PointerBuffer.allocateDirect(7); - long surfaceHandle = ctxImpl.getDrawableImpl().getNativeSurface().getSurfaceHandle(); + final long surfaceHandle = ctxImpl.getDrawableImpl().getNativeSurface().getSurfaceHandle(); properties.put(CLGL.CL_GL_CONTEXT_KHR).put(glID[0]) - .put(CLGL.CL_WGL_HDC_KHR).put(surfaceHandle) - .put(CLGL.CL_CONTEXT_PLATFORM).put(platform.ID); + .put(CL.CL_WGL_HDC_KHR).put(surfaceHandle) + .put(CLContextBinding.CL_CONTEXT_PLATFORM).put(platform.ID); }else if(glContext instanceof MacOSXCGLContext) { // spec: "When the CGL binding API is supported, the attribute // CL_CGL_SHAREGROUP_KHR should be set to a CGLShareGroup handle to // a CGL share group object." /** - * FIXME: For all Mac OSX Versions ??? - * CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE used to specify the GL sharing group ID - * on Mac OSX 10.8.4 works. - * Using the std. CL_CGL_SHAREGROUP_KHR on Mac OSX 10.8.4 causes the context creation + * FIXME: For all Mac OSX Versions ??? + * CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE used to specify the GL sharing group ID + * on Mac OSX 10.8.4 works. + * Using the std. CL_CGL_SHAREGROUP_KHR on Mac OSX 10.8.4 causes the context creation * to throw a CL_INVALID_VALUE error. */ - long cgl = CGL.getCGLContext(glID[0]); - long group = CGL.CGLGetShareGroup(cgl); + final long cgl = CGL.getCGLContext(glID[0]); + final long group = CGL.CGLGetShareGroup(cgl); properties = PointerBuffer.allocateDirect(5); properties.put(CLGL.CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE).put(group) - .put(CLGL.CL_CONTEXT_PLATFORM).put(platform.ID); + .put(CLContextBinding.CL_CONTEXT_PLATFORM).put(platform.ID); }else if(glContext instanceof EGLContext) { // TODO test EGL // spec: "When the EGL binding API is supported, the attribute @@ -200,17 +202,17 @@ public final class CLGLContext extends CLContext { // CL_EGL_DISPLAY_KHR should be set to the EGLDisplay handle of the // display used to create the OpenGL ES or OpenGL context." properties = PointerBuffer.allocateDirect(7); - long displayHandle = ctxImpl.getDrawableImpl().getNativeSurface().getDisplayHandle(); + final long displayHandle = ctxImpl.getDrawableImpl().getNativeSurface().getDisplayHandle(); properties.put(CLGL.CL_GL_CONTEXT_KHR).put(glID[0]) - .put(CLGL.CL_EGL_DISPLAY_KHR).put(displayHandle) - .put(CLGL.CL_CONTEXT_PLATFORM).put(platform.ID); + .put(CL.CL_EGL_DISPLAY_KHR).put(displayHandle) + .put(CLContextBinding.CL_CONTEXT_PLATFORM).put(platform.ID); }else{ throw new RuntimeException("unsupported GLContext: "+glContext); } return properties.put(0).rewind(); // 0 terminated array } - + // Buffers /** * Creates a CLGLBuffer for memory sharing with the specified OpenGL buffer. @@ -218,7 +220,7 @@ public final class CLGLContext extends CLContext { * @param glBufferSize The size of the OpenGL buffer in bytes * @param flags optional flags. */ - public final CLGLBuffer<?> createFromGLBuffer(int glBuffer, long glBufferSize, Mem... flags) { + public final CLGLBuffer<?> createFromGLBuffer(final int glBuffer, final long glBufferSize, final Mem... flags) { return createFromGLBuffer(null, glBuffer, glBufferSize, Mem.flagsToInt(flags)); } @@ -228,7 +230,7 @@ public final class CLGLContext extends CLContext { * @param glBufferSize The size of the OpenGL buffer in bytes * @param flags optional flags. */ - public final CLGLBuffer<?> createFromGLBuffer(int glBuffer, long glBufferSize, int flags) { + public final CLGLBuffer<?> createFromGLBuffer(final int glBuffer, final long glBufferSize, final int flags) { return createFromGLBuffer(null, glBuffer, glBufferSize, flags); } @@ -239,7 +241,7 @@ public final class CLGLContext extends CLContext { * @param glBufferSize The size of the OpenGL buffer in bytes * @param flags optional flags. */ - public final <B extends Buffer> CLGLBuffer<B> createFromGLBuffer(B directBuffer, int glBuffer, long glBufferSize, Mem... flags) { + public final <B extends Buffer> CLGLBuffer<B> createFromGLBuffer(final B directBuffer, final int glBuffer, final long glBufferSize, final Mem... flags) { return createFromGLBuffer(directBuffer, glBuffer, glBufferSize, Mem.flagsToInt(flags)); } @@ -250,65 +252,65 @@ public final class CLGLContext extends CLContext { * @param glBufferSize The size of the OpenGL buffer in bytes * @param flags optional flags. */ - public final <B extends Buffer> CLGLBuffer<B> createFromGLBuffer(B directBuffer, int glBuffer, long glBufferSize, int flags) { - CLGLBuffer<B> buffer = CLGLBuffer.create(this, directBuffer, glBufferSize, flags, glBuffer); + public final <B extends Buffer> CLGLBuffer<B> createFromGLBuffer(final B directBuffer, final int glBuffer, final long glBufferSize, final int flags) { + final CLGLBuffer<B> buffer = CLGLBuffer.create(this, directBuffer, glBufferSize, flags, glBuffer); memoryObjects.add(buffer); return buffer; } // Renderbuffers - public final CLGLImage2d<?> createFromGLRenderbuffer(int glBuffer, Mem... flags) { + public final CLGLImage2d<?> createFromGLRenderbuffer(final int glBuffer, final Mem... flags) { return createFromGLRenderbuffer(null, glBuffer, Mem.flagsToInt(flags)); } - public final CLGLImage2d<?> createFromGLRenderbuffer(int glBuffer, int flags) { + public final CLGLImage2d<?> createFromGLRenderbuffer(final int glBuffer, final int flags) { return createFromGLRenderbuffer(null, glBuffer, flags); } - public final <B extends Buffer> CLGLImage2d<B> createFromGLRenderbuffer(B directBuffer, int glBuffer, Mem... flags) { + public final <B extends Buffer> CLGLImage2d<B> createFromGLRenderbuffer(final B directBuffer, final int glBuffer, final Mem... flags) { return createFromGLRenderbuffer(directBuffer, glBuffer, Mem.flagsToInt(flags)); } - public final <B extends Buffer> CLGLImage2d<B> createFromGLRenderbuffer(B directBuffer, int glBuffer, int flags) { - CLGLImage2d<B> buffer = CLGLImage2d.createFromGLRenderbuffer(this, directBuffer, flags, glBuffer); + public final <B extends Buffer> CLGLImage2d<B> createFromGLRenderbuffer(final B directBuffer, final int glBuffer, final int flags) { + final CLGLImage2d<B> buffer = CLGLImage2d.createFromGLRenderbuffer(this, directBuffer, flags, glBuffer); memoryObjects.add(buffer); return buffer; } //2d Textures - public final CLGLTexture2d<?> createFromGLTexture2d(int target, int texture, int mipmap, Mem... flags) { + public final CLGLTexture2d<?> createFromGLTexture2d(final int target, final int texture, final int mipmap, final Mem... flags) { return createFromGLTexture2d(null, target, texture, mipmap, Mem.flagsToInt(flags)); } - public final CLGLTexture2d<?> createFromGLTexture2d(int target, int texture, int mipmap, int flags) { + public final CLGLTexture2d<?> createFromGLTexture2d(final int target, final int texture, final int mipmap, final int flags) { return createFromGLTexture2d(null, target, texture, mipmap, flags); } - public final <B extends Buffer> CLGLTexture2d<B> createFromGLTexture2d(B directBuffer, int target, int texture, int mipmap, Mem... flags) { + public final <B extends Buffer> CLGLTexture2d<B> createFromGLTexture2d(final B directBuffer, final int target, final int texture, final int mipmap, final Mem... flags) { return createFromGLTexture2d(directBuffer, target, texture, mipmap, Mem.flagsToInt(flags)); } - public final <B extends Buffer> CLGLTexture2d<B> createFromGLTexture2d(B directBuffer, int target, int texture, int mipmap, int flags) { - CLGLTexture2d<B> buffer = CLGLTexture2d.createFromGLTexture2d(this, directBuffer, target, texture, mipmap, flags); + public final <B extends Buffer> CLGLTexture2d<B> createFromGLTexture2d(final B directBuffer, final int target, final int texture, final int mipmap, final int flags) { + final CLGLTexture2d<B> buffer = CLGLTexture2d.createFromGLTexture2d(this, directBuffer, target, texture, mipmap, flags); memoryObjects.add(buffer); return buffer; } //3d Textures - public final CLGLTexture3d<?> createFromGLTexture3d(int target, int texture, int mipmap, Mem... flags) { + public final CLGLTexture3d<?> createFromGLTexture3d(final int target, final int texture, final int mipmap, final Mem... flags) { return createFromGLTexture3d(null, target, texture, mipmap, Mem.flagsToInt(flags)); } - public final CLGLTexture3d<?> createFromGLTexture3d(int target, int texture, int mipmap, int flags) { + public final CLGLTexture3d<?> createFromGLTexture3d(final int target, final int texture, final int mipmap, final int flags) { return createFromGLTexture3d(null, target, texture, mipmap, flags); } - public final <B extends Buffer> CLGLTexture3d<B> createFromGLTexture3d(B directBuffer, int target, int texture, int mipmap, Mem... flags) { + public final <B extends Buffer> CLGLTexture3d<B> createFromGLTexture3d(final B directBuffer, final int target, final int texture, final int mipmap, final Mem... flags) { return createFromGLTexture3d(directBuffer, target, texture, mipmap, Mem.flagsToInt(flags)); } - public final <B extends Buffer> CLGLTexture3d<B> createFromGLTexture3d(B directBuffer, int target, int texture, int mipmap, int flags) { - CLGLTexture3d<B> buffer = CLGLTexture3d.createFromGLTexture3d(this, directBuffer, flags, target, mipmap, texture); + public final <B extends Buffer> CLGLTexture3d<B> createFromGLTexture3d(final B directBuffer, final int target, final int texture, final int mipmap, final int flags) { + final CLGLTexture3d<B> buffer = CLGLTexture3d.createFromGLTexture3d(this, directBuffer, flags, target, mipmap, texture); memoryObjects.add(buffer); return buffer; } |