use of sun.java2d.Surface in project jdk8u_jdk by JetBrains.
the class GLXGraphicsConfig method createCompatibleVolatileImage.
/**
* {@inheritDoc}
*
* @see sun.java2d.pipe.hw.AccelGraphicsConfig#createCompatibleVolatileImage
*/
@Override
public VolatileImage createCompatibleVolatileImage(int width, int height, int transparency, int type) {
if (type == FLIP_BACKBUFFER || type == WINDOW || type == UNDEFINED || transparency == Transparency.BITMASK) {
return null;
}
if (type == FBOBJECT) {
if (!isCapPresent(CAPS_EXT_FBOBJECT)) {
return null;
}
} else if (type == PBUFFER) {
boolean isOpaque = transparency == Transparency.OPAQUE;
if (!isOpaque && !isCapPresent(CAPS_STORED_ALPHA)) {
return null;
}
}
SunVolatileImage vi = new AccelTypedVolatileImage(this, width, height, transparency, type);
Surface sd = vi.getDestSurface();
if (!(sd instanceof AccelSurface) || ((AccelSurface) sd).getType() != type) {
vi.flush();
vi = null;
}
return vi;
}
use of sun.java2d.Surface in project jdk8u_jdk by JetBrains.
the class D3DGraphicsConfig method createCompatibleVolatileImage.
/**
* {@inheritDoc}
*
* @see sun.java2d.pipe.hw.AccelGraphicsConfig#createCompatibleVolatileImage
*/
@Override
public VolatileImage createCompatibleVolatileImage(int width, int height, int transparency, int type) {
if (type == FLIP_BACKBUFFER || type == WINDOW || type == UNDEFINED || transparency == Transparency.BITMASK) {
return null;
}
boolean isOpaque = transparency == Transparency.OPAQUE;
if (type == RT_TEXTURE) {
int cap = isOpaque ? CAPS_RT_TEXTURE_OPAQUE : CAPS_RT_TEXTURE_ALPHA;
if (!device.isCapPresent(cap)) {
return null;
}
} else if (type == RT_PLAIN) {
if (!isOpaque && !device.isCapPresent(CAPS_RT_PLAIN_ALPHA)) {
return null;
}
}
SunVolatileImage vi = new AccelTypedVolatileImage(this, width, height, transparency, type);
Surface sd = vi.getDestSurface();
if (!(sd instanceof AccelSurface) || ((AccelSurface) sd).getType() != type) {
vi.flush();
vi = null;
}
return vi;
}
use of sun.java2d.Surface in project jdk8u_jdk by JetBrains.
the class RSLContextInvalidationTest method main.
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
VolatileImage vi = gc.createCompatibleVolatileImage(100, 100);
vi.validate(gc);
VolatileImage vi1 = gc.createCompatibleVolatileImage(100, 100);
vi1.validate(gc);
if (!(vi instanceof DestSurfaceProvider)) {
System.out.println("Test considered PASSED: no HW acceleration");
return;
}
DestSurfaceProvider p = (DestSurfaceProvider) vi;
Surface s = p.getDestSurface();
if (!(s instanceof AccelSurface)) {
System.out.println("Test considered PASSED: no HW acceleration");
return;
}
AccelSurface dst = (AccelSurface) s;
Graphics g = vi.createGraphics();
g.drawImage(vi1, 95, 95, null);
g.setColor(Color.red);
g.fillRect(0, 0, 100, 100);
g.setColor(Color.black);
g.fillRect(0, 0, 100, 100);
// after this the validated context color is black
RenderQueue rq = dst.getContext().getRenderQueue();
rq.lock();
try {
dst.getContext().saveState();
dst.getContext().restoreState();
} finally {
rq.unlock();
}
// this will cause ResetPaint (it will set color to extended EA=ff,
// which is ffffffff==Color.white)
g.drawImage(vi1, 95, 95, null);
// now try filling with black again, but it will come up as white
// because this fill rect won't validate the color properly
g.setColor(Color.black);
g.fillRect(0, 0, 100, 100);
BufferedImage bi = vi.getSnapshot();
if (bi.getRGB(50, 50) != Color.black.getRGB()) {
throw new RuntimeException("Test FAILED: found color=" + Integer.toHexString(bi.getRGB(50, 50)) + " instead of " + Integer.toHexString(Color.black.getRGB()));
}
System.out.println("Test PASSED.");
}
use of sun.java2d.Surface in project jdk8u_jdk by JetBrains.
the class RSLAPITest method testGC.
private static void testGC(GraphicsConfiguration gc) {
if (!(gc instanceof AccelGraphicsConfig)) {
System.out.println("Test passed: no hw accelerated configs found.");
return;
}
System.out.println("AccelGraphicsConfig exists, testing.");
AccelGraphicsConfig agc = (AccelGraphicsConfig) gc;
printAGC(agc);
testContext(agc);
VolatileImage vi = gc.createCompatibleVolatileImage(10, 10);
vi.validate(gc);
if (vi instanceof DestSurfaceProvider) {
System.out.println("Passed: VI is DestSurfaceProvider");
Surface s = ((DestSurfaceProvider) vi).getDestSurface();
if (s instanceof AccelSurface) {
System.out.println("Passed: Obtained Accel Surface");
printSurface((AccelSurface) s);
}
Graphics g = vi.getGraphics();
if (g instanceof DestSurfaceProvider) {
System.out.println("Passed: VI graphics is " + "DestSurfaceProvider");
printSurface(((DestSurfaceProvider) g).getDestSurface());
}
} else {
System.out.println("VI is not DestSurfaceProvider");
}
testVICreation(agc, CAPS_RT_TEXTURE_ALPHA, TRANSLUCENT, RT_TEXTURE);
testVICreation(agc, CAPS_RT_TEXTURE_OPAQUE, OPAQUE, RT_TEXTURE);
testVICreation(agc, CAPS_RT_PLAIN_ALPHA, TRANSLUCENT, RT_PLAIN);
testVICreation(agc, agc.getContextCapabilities().getCaps(), OPAQUE, TEXTURE);
testForNPEDuringCreation(agc);
}
use of sun.java2d.Surface in project jdk8u_jdk by JetBrains.
the class RSLAPITest method testVICreation.
private static void testVICreation(AccelGraphicsConfig agc, int cap, int transparency, int type) {
int caps = agc.getContextCapabilities().getCaps();
int w = 11, h = 17;
VolatileImage vi = agc.createCompatibleVolatileImage(w, h, transparency, type);
if ((cap & caps) != 0) {
if (vi == null) {
System.out.printf("Failed: cap=%d is supported but " + "image wasn't created\n", cap);
throw new RuntimeException("Failed: image wasn't created " + "for supported cap");
} else {
if (!(vi instanceof DestSurfaceProvider)) {
throw new RuntimeException("Failed: created VI is not " + "DestSurfaceProvider");
}
Surface s = ((DestSurfaceProvider) vi).getDestSurface();
if (s instanceof AccelSurface) {
AccelSurface as = (AccelSurface) s;
printSurface(as);
if (as.getType() != type) {
throw new RuntimeException("Failed: returned VI is" + " of incorrect type: " + as.getType() + " requested type=" + type);
} else {
System.out.printf("Passed: VI of type %d was " + "created for cap=%d\n", type, cap);
}
if (as.getType() == TEXTURE) {
boolean ex = false;
try {
Graphics g = vi.getGraphics();
g.dispose();
} catch (UnsupportedOperationException e) {
ex = true;
}
if (!ex) {
throw new RuntimeException("Failed: " + "texture.getGraphics() didn't throw exception");
} else {
System.out.println("Passed: VI.getGraphics()" + " threw exception for texture-based VI");
}
}
} else {
System.out.printf("Passed: VI of type %d was " + "created for cap=%d but accel surface is null\n", type, cap);
}
}
} else {
if (vi != null) {
throw new RuntimeException("Failed: created VI for " + "unsupported cap=" + cap);
}
}
}
Aggregations