3232
3333package com .jme3 .system .lwjgl ;
3434
35+ import static org .lwjgl .opencl .CL10 .CL_CONTEXT_PLATFORM ;
36+ import static org .lwjgl .opengl .GL .createCapabilities ;
37+ import static org .lwjgl .opengl .GL11 .glGetInteger ;
38+
3539import com .jme3 .input .lwjgl .GlfwJoystickInput ;
3640import com .jme3 .input .lwjgl .GlfwKeyInput ;
3741import com .jme3 .input .lwjgl .GlfwMouseInput ;
4852import com .jme3 .renderer .lwjgl .LwjglGLExt ;
4953import com .jme3 .renderer .lwjgl .LwjglGLFboEXT ;
5054import com .jme3 .renderer .lwjgl .LwjglGLFboGL3 ;
51- import com .jme3 .renderer .opengl .*;
52- import com .jme3 .system .*;
53- import java .nio .IntBuffer ;
54- import java .util .ArrayList ;
55- import java .util .List ;
56- import java .util .concurrent .atomic .AtomicBoolean ;
57- import java .util .logging .Level ;
58- import java .util .logging .Logger ;
55+ import com .jme3 .renderer .opengl .GL ;
56+ import com .jme3 .renderer .opengl .GL2 ;
57+ import com .jme3 .renderer .opengl .GL3 ;
58+ import com .jme3 .renderer .opengl .GL4 ;
59+ import com .jme3 .renderer .opengl .GLDebugDesktop ;
60+ import com .jme3 .renderer .opengl .GLExt ;
61+ import com .jme3 .renderer .opengl .GLFbo ;
62+ import com .jme3 .renderer .opengl .GLRenderer ;
63+ import com .jme3 .renderer .opengl .GLTiming ;
64+ import com .jme3 .renderer .opengl .GLTimingState ;
65+ import com .jme3 .renderer .opengl .GLTracer ;
66+ import com .jme3 .system .AppSettings ;
67+ import com .jme3 .system .JmeContext ;
68+ import com .jme3 .system .SystemListener ;
69+ import com .jme3 .system .Timer ;
70+ import com .jme3 .util .BufferAllocatorFactory ;
71+ import com .jme3 .util .LWJGLBufferAllocator ;
72+
5973import org .lwjgl .PointerBuffer ;
6074import org .lwjgl .glfw .GLFW ;
6175import org .lwjgl .opencl .*;
6276import org .lwjgl .opengl .ARBDebugOutput ;
6377import org .lwjgl .opengl .ARBFramebufferObject ;
6478import org .lwjgl .opengl .EXTFramebufferMultisample ;
6579import org .lwjgl .opengl .GLCapabilities ;
80+ import org .lwjgl .system .Platform ;
6681
67- import static org .lwjgl .glfw .GLFW .GLFW_TRUE ;
68- import static org .lwjgl .opencl .CL10 .CL_CONTEXT_PLATFORM ;
69- import static org .lwjgl .opengl .GL .createCapabilities ;
70- import static org .lwjgl .opengl .GL11 .glGetInteger ;
82+ import java .nio .IntBuffer ;
83+ import java .util .ArrayList ;
84+ import java .util .List ;
85+ import java .util .concurrent .atomic .AtomicBoolean ;
86+ import java .util .logging .Level ;
87+ import java .util .logging .Logger ;
7188
7289/**
7390 * A LWJGL implementation of a graphics context.
7491 */
7592public abstract class LwjglContext implements JmeContext {
7693
77- private static final Logger logger = Logger .getLogger (LwjglContext .class .getName ());
94+ private static final Logger LOGGER = Logger .getLogger (LwjglContext .class .getName ());
95+
96+ static {
97+ System .setProperty (BufferAllocatorFactory .PROPERTY_BUFFER_ALLOCATOR_IMPLEMENTATION , LWJGLBufferAllocator .class .getName ());
98+ }
7899
79100 public static final boolean CL_GL_SHARING_POSSIBLE = true ;
80101
@@ -99,8 +120,8 @@ public void setSystemListener(SystemListener listener) {
99120 }
100121
101122 protected void printContextInitInfo () {
102- logger .log (Level .INFO , "LWJGL {0} context running on thread {1}\n "
103- + " * Graphics Adapter: GLFW {2}" ,
123+ LOGGER .log (Level .INFO , "LWJGL {0} context running on thread {1}\n "
124+ + " * Graphics Adapter: GLFW {2}" ,
104125 new Object []{org .lwjgl .Version .getVersion (), Thread .currentThread ().getName (), GLFW .glfwGetVersionString ()});
105126 }
106127
@@ -121,7 +142,7 @@ protected int getNumSamplesToUse() {
121142 samples = settings .getSamples ();
122143 final int supportedSamples = determineMaxSamples ();
123144 if (supportedSamples < samples ) {
124- logger .log (Level .WARNING ,
145+ LOGGER .log (Level .WARNING ,
125146 "Couldn't satisfy antialiasing samples requirement: x{0}. "
126147 + "Video hardware only supports: x{1}" ,
127148 new Object []{samples , supportedSamples });
@@ -205,8 +226,6 @@ protected void initContextFirstTime() {
205226 *
206227 * Copied from the old release
207228 *
208- * @param filter the platform filter
209- *
210229 * @return the available platforms
211230 */
212231 private static long [] getPlatforms () {
@@ -233,12 +252,12 @@ private static long[] getPlatforms() {
233252 }
234253
235254 protected void initOpenCL (long window ) {
236- logger .info ("Initialize OpenCL with LWJGL3" );
255+ LOGGER .info ("Initialize OpenCL with LWJGL3" );
237256
238257// try {
239258// CL.create();
240259// } catch (Exception ex) {
241- // logger .log(Level.SEVERE, "Unable to initialize OpenCL", ex);
260+ // LOGGER .log(Level.SEVERE, "Unable to initialize OpenCL", ex);
242261// return;
243262// }
244263
@@ -279,15 +298,15 @@ protected void initOpenCL(long window) {
279298 platformInfos .append ("\n * * Supports interop: " ).append (device .hasOpenGLInterop ());
280299 }
281300 }
282- logger .info (platformInfos .toString ());
301+ LOGGER .info (platformInfos .toString ());
283302
284303 //choose devices
285304 PlatformChooser chooser = null ;
286305 if (settings .getOpenCLPlatformChooser () != null ) {
287306 try {
288307 chooser = (PlatformChooser ) Class .forName (settings .getOpenCLPlatformChooser ()).newInstance ();
289308 } catch (Exception ex ) {
290- logger .log (Level .WARNING , "unable to instantiate custom PlatformChooser" , ex );
309+ LOGGER .log (Level .WARNING , "unable to instantiate custom PlatformChooser" , ex );
291310 }
292311 }
293312 if (chooser == null ) {
@@ -298,35 +317,35 @@ protected void initOpenCL(long window) {
298317 LwjglPlatform platform = null ;
299318 for (Device d : choosenDevices ) {
300319 if (!(d instanceof LwjglDevice )) {
301- logger .log (Level .SEVERE , "attempt to return a custom Device implementation from PlatformChooser: {0}" , d );
320+ LOGGER .log (Level .SEVERE , "attempt to return a custom Device implementation from PlatformChooser: {0}" , d );
302321 return ;
303322 }
304323 LwjglDevice ld = (LwjglDevice ) d ;
305324 if (platform == null ) {
306325 platform = ld .getPlatform ();
307326 } else if (platform != ld .getPlatform ()) {
308- logger .severe ("attempt to use devices from different platforms" );
327+ LOGGER .severe ("attempt to use devices from different platforms" );
309328 return ;
310329 }
311330 devices .add (ld .getDevice ());
312331 }
313332 if (devices .isEmpty ()) {
314- logger .warning ("no devices specified, no OpenCL context created" );
333+ LOGGER .warning ("no devices specified, no OpenCL context created" );
315334 return ;
316335 }
317- logger .log (Level .INFO , "chosen platform: {0}" , platform .getName ());
318- logger .log (Level .INFO , "chosen devices: {0}" , choosenDevices );
336+ LOGGER .log (Level .INFO , "chosen platform: {0}" , platform .getName ());
337+ LOGGER .log (Level .INFO , "chosen devices: {0}" , choosenDevices );
319338
320339 //create context
321340 try {
322341 long c = createContext (platform .getPlatform (), devices , window );
323342 clContext = new com .jme3 .opencl .lwjgl .LwjglContext (c , (List <LwjglDevice >) choosenDevices );
324- } catch (Exception ex ) {
325- logger .log (Level .SEVERE , "Unable to create OpenCL context" , ex );
343+ } catch (final Exception ex ) {
344+ LOGGER .log (Level .SEVERE , "Unable to create OpenCL context" , ex );
326345 return ;
327346 }
328347
329- logger .info ("OpenCL context created" );
348+ LOGGER .info ("OpenCL context created" );
330349 }
331350 private long createContext (final long platform , final List <Long > devices , long window ) throws Exception {
332351
@@ -338,7 +357,7 @@ private long createContext(final long platform, final List<Long> devices, long w
338357 //https://github.com/glfw/glfw/issues/104
339358 //https://github.com/LWJGL/lwjgl3/blob/master/modules/core/src/test/java/org/lwjgl/demo/opencl/Mandelbrot.java
340359 //TODO: test on Linus and MacOSX
341- switch (org . lwjgl . system . Platform .get ()) {
360+ switch (Platform .get ()) {
342361 case WINDOWS :
343362 properties
344363 .put (KHRGLSharing .CL_GL_CONTEXT_KHR )
@@ -446,5 +465,4 @@ public Timer getTimer() {
446465 public Context getOpenCLContext () {
447466 return clContext ;
448467 }
449-
450468}
0 commit comments