38 import java.awt.image.BufferedImage;
39 import java.awt.image.ColorModel;
40 import java.awt.image.DataBuffer;
41 import java.awt.image.DirectColorModel;
42 import java.awt.image.VolatileImage;
43 import java.awt.image.WritableRaster;
44
45 import sun.awt.CGraphicsConfig;
46 import sun.awt.CGraphicsDevice;
47 import sun.awt.image.OffScreenImage;
48 import sun.awt.image.SunVolatileImage;
49 import sun.java2d.Disposer;
50 import sun.java2d.DisposerRecord;
51 import sun.java2d.Surface;
52 import sun.java2d.SurfaceData;
53 import sun.java2d.opengl.OGLContext.OGLContextCaps;
54 import sun.java2d.pipe.hw.AccelSurface;
55 import sun.java2d.pipe.hw.AccelTypedVolatileImage;
56 import sun.java2d.pipe.hw.ContextCapabilities;
57 import sun.lwawt.LWComponentPeer;
58 import sun.lwawt.macosx.CPlatformView;
59
60 import static sun.java2d.opengl.OGLContext.OGLContextCaps.CAPS_DOUBLEBUFFERED;
61 import static sun.java2d.opengl.OGLContext.OGLContextCaps.CAPS_EXT_FBOBJECT;
62 import static sun.java2d.opengl.OGLSurfaceData.FBOBJECT;
63 import static sun.java2d.opengl.OGLSurfaceData.TEXTURE;
64
65 public final class CGLGraphicsConfig extends CGraphicsConfig
66 implements OGLGraphicsConfig
67 {
68 //private static final int kOpenGLSwapInterval =
69 // RuntimeOptions.getCurrentOptions().OpenGLSwapInterval;
70 private static final int kOpenGLSwapInterval = 0; // TODO
71 private static boolean cglAvailable;
72 private static ImageCapabilities imageCaps = new CGLImageCaps();
73
74 private int pixfmt;
75 private BufferCapabilities bufferCaps;
76 private long pConfigInfo;
77 private ContextCapabilities oglCaps;
247 rq.lock();
248 try {
249 OGLContext.invalidateCurrentContext();
250 } finally {
251 rq.unlock();
252 }
253 }
254
255 @Override
256 public String toString() {
257 String display = getDevice().getIDstring();
258 return ("CGLGraphicsConfig[" + display + ", pixfmt=" + pixfmt + "]");
259 }
260
261 @Override
262 public SurfaceData createSurfaceData(CPlatformView pView) {
263 return CGLSurfaceData.createData(pView);
264 }
265
266 @Override
267 public SurfaceData createSurfaceData(CGLLayer layer) {
268 return CGLSurfaceData.createData(layer);
269 }
270
271 @Override
272 public Image createAcceleratedImage(Component target,
273 int width, int height)
274 {
275 ColorModel model = getColorModel(Transparency.OPAQUE);
276 WritableRaster wr = model.createCompatibleWritableRaster(width, height);
277 return new OffScreenImage(target, model, wr,
278 model.isAlphaPremultiplied());
279 }
280
281 @Override
282 public void assertOperationSupported(final int numBuffers,
283 final BufferCapabilities caps)
284 throws AWTException {
285 // Assume this method is never called with numBuffers != 2, as 0 is
286 // unsupported, and 1 corresponds to a SingleBufferStrategy which
287 // doesn't depend on the peer. Screen is considered as a separate
288 // "buffer".
|
38 import java.awt.image.BufferedImage;
39 import java.awt.image.ColorModel;
40 import java.awt.image.DataBuffer;
41 import java.awt.image.DirectColorModel;
42 import java.awt.image.VolatileImage;
43 import java.awt.image.WritableRaster;
44
45 import sun.awt.CGraphicsConfig;
46 import sun.awt.CGraphicsDevice;
47 import sun.awt.image.OffScreenImage;
48 import sun.awt.image.SunVolatileImage;
49 import sun.java2d.Disposer;
50 import sun.java2d.DisposerRecord;
51 import sun.java2d.Surface;
52 import sun.java2d.SurfaceData;
53 import sun.java2d.opengl.OGLContext.OGLContextCaps;
54 import sun.java2d.pipe.hw.AccelSurface;
55 import sun.java2d.pipe.hw.AccelTypedVolatileImage;
56 import sun.java2d.pipe.hw.ContextCapabilities;
57 import sun.lwawt.LWComponentPeer;
58 import sun.lwawt.macosx.CFRetainedResource;
59 import sun.lwawt.macosx.CPlatformView;
60
61 import static sun.java2d.opengl.OGLContext.OGLContextCaps.CAPS_DOUBLEBUFFERED;
62 import static sun.java2d.opengl.OGLContext.OGLContextCaps.CAPS_EXT_FBOBJECT;
63 import static sun.java2d.opengl.OGLSurfaceData.FBOBJECT;
64 import static sun.java2d.opengl.OGLSurfaceData.TEXTURE;
65
66 public final class CGLGraphicsConfig extends CGraphicsConfig
67 implements OGLGraphicsConfig
68 {
69 //private static final int kOpenGLSwapInterval =
70 // RuntimeOptions.getCurrentOptions().OpenGLSwapInterval;
71 private static final int kOpenGLSwapInterval = 0; // TODO
72 private static boolean cglAvailable;
73 private static ImageCapabilities imageCaps = new CGLImageCaps();
74
75 private int pixfmt;
76 private BufferCapabilities bufferCaps;
77 private long pConfigInfo;
78 private ContextCapabilities oglCaps;
248 rq.lock();
249 try {
250 OGLContext.invalidateCurrentContext();
251 } finally {
252 rq.unlock();
253 }
254 }
255
256 @Override
257 public String toString() {
258 String display = getDevice().getIDstring();
259 return ("CGLGraphicsConfig[" + display + ", pixfmt=" + pixfmt + "]");
260 }
261
262 @Override
263 public SurfaceData createSurfaceData(CPlatformView pView) {
264 return CGLSurfaceData.createData(pView);
265 }
266
267 @Override
268 public SurfaceData createSurfaceData(CFRetainedResource layer) {
269 return CGLSurfaceData.createData((CGLLayer) layer);
270 }
271
272 @Override
273 public Image createAcceleratedImage(Component target,
274 int width, int height)
275 {
276 ColorModel model = getColorModel(Transparency.OPAQUE);
277 WritableRaster wr = model.createCompatibleWritableRaster(width, height);
278 return new OffScreenImage(target, model, wr,
279 model.isAlphaPremultiplied());
280 }
281
282 @Override
283 public void assertOperationSupported(final int numBuffers,
284 final BufferCapabilities caps)
285 throws AWTException {
286 // Assume this method is never called with numBuffers != 2, as 0 is
287 // unsupported, and 1 corresponds to a SingleBufferStrategy which
288 // doesn't depend on the peer. Screen is considered as a separate
289 // "buffer".
|