Search in sources :

Example 1 with Surface

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;
}
Also used : AccelSurface(sun.java2d.pipe.hw.AccelSurface) SunVolatileImage(sun.awt.image.SunVolatileImage) AccelTypedVolatileImage(sun.java2d.pipe.hw.AccelTypedVolatileImage) Surface(sun.java2d.Surface) AccelSurface(sun.java2d.pipe.hw.AccelSurface)

Example 2 with Surface

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;
}
Also used : AccelSurface(sun.java2d.pipe.hw.AccelSurface) SunVolatileImage(sun.awt.image.SunVolatileImage) AccelTypedVolatileImage(sun.java2d.pipe.hw.AccelTypedVolatileImage) Surface(sun.java2d.Surface) AccelSurface(sun.java2d.pipe.hw.AccelSurface)

Example 3 with Surface

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.");
}
Also used : Graphics(java.awt.Graphics) GraphicsDevice(java.awt.GraphicsDevice) VolatileImage(java.awt.image.VolatileImage) DestSurfaceProvider(sun.java2d.DestSurfaceProvider) RenderQueue(sun.java2d.pipe.RenderQueue) GraphicsEnvironment(java.awt.GraphicsEnvironment) BufferedImage(java.awt.image.BufferedImage) GraphicsConfiguration(java.awt.GraphicsConfiguration) Surface(sun.java2d.Surface)

Example 4 with Surface

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);
}
Also used : Graphics(java.awt.Graphics) AccelSurface(sun.java2d.pipe.hw.AccelSurface) VolatileImage(java.awt.image.VolatileImage) AccelGraphicsConfig(sun.java2d.pipe.hw.AccelGraphicsConfig) DestSurfaceProvider(sun.java2d.DestSurfaceProvider) Surface(sun.java2d.Surface) AccelSurface(sun.java2d.pipe.hw.AccelSurface)

Example 5 with Surface

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);
        }
    }
}
Also used : Graphics(java.awt.Graphics) AccelSurface(sun.java2d.pipe.hw.AccelSurface) VolatileImage(java.awt.image.VolatileImage) DestSurfaceProvider(sun.java2d.DestSurfaceProvider) Surface(sun.java2d.Surface) AccelSurface(sun.java2d.pipe.hw.AccelSurface)

Aggregations

Surface (sun.java2d.Surface)7 AccelSurface (sun.java2d.pipe.hw.AccelSurface)6 SunVolatileImage (sun.awt.image.SunVolatileImage)4 AccelTypedVolatileImage (sun.java2d.pipe.hw.AccelTypedVolatileImage)4 Graphics (java.awt.Graphics)3 VolatileImage (java.awt.image.VolatileImage)3 DestSurfaceProvider (sun.java2d.DestSurfaceProvider)3 GraphicsConfiguration (java.awt.GraphicsConfiguration)1 GraphicsDevice (java.awt.GraphicsDevice)1 GraphicsEnvironment (java.awt.GraphicsEnvironment)1 BufferedImage (java.awt.image.BufferedImage)1 RenderQueue (sun.java2d.pipe.RenderQueue)1 AccelGraphicsConfig (sun.java2d.pipe.hw.AccelGraphicsConfig)1