Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/sun/java2d/pipe/hw/RSLContextInvalidationTest/RSLContextInvalidationTest.java
38867 views
1
/*
2
* Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 6764257
27
* @summary Tests that the color is reset properly after save/restore context
28
* @author [email protected]: area=Graphics
29
* @compile -XDignore.symbol.file=true RSLContextInvalidationTest.java
30
* @run main/othervm RSLContextInvalidationTest
31
* @run main/othervm -Dsun.java2d.noddraw=true RSLContextInvalidationTest
32
* @run main/othervm -Dsun.java2d.opengl=True RSLContextInvalidationTest
33
*/
34
35
import java.awt.Color;
36
import java.awt.Graphics;
37
import java.awt.GraphicsConfiguration;
38
import java.awt.GraphicsDevice;
39
import java.awt.GraphicsEnvironment;
40
import java.awt.image.BufferedImage;
41
import java.awt.image.VolatileImage;
42
import sun.java2d.DestSurfaceProvider;
43
import sun.java2d.Surface;
44
import sun.java2d.pipe.RenderQueue;
45
import sun.java2d.pipe.hw.*;
46
47
public class RSLContextInvalidationTest {
48
49
public static void main(String[] args) {
50
GraphicsEnvironment ge =
51
GraphicsEnvironment.getLocalGraphicsEnvironment();
52
GraphicsDevice gd = ge.getDefaultScreenDevice();
53
GraphicsConfiguration gc = gd.getDefaultConfiguration();
54
VolatileImage vi = gc.createCompatibleVolatileImage(100, 100);
55
vi.validate(gc);
56
VolatileImage vi1 = gc.createCompatibleVolatileImage(100, 100);
57
vi1.validate(gc);
58
59
if (!(vi instanceof DestSurfaceProvider)) {
60
System.out.println("Test considered PASSED: no HW acceleration");
61
return;
62
}
63
64
DestSurfaceProvider p = (DestSurfaceProvider)vi;
65
Surface s = p.getDestSurface();
66
if (!(s instanceof AccelSurface)) {
67
System.out.println("Test considered PASSED: no HW acceleration");
68
return;
69
}
70
AccelSurface dst = (AccelSurface)s;
71
72
Graphics g = vi.createGraphics();
73
g.drawImage(vi1, 95, 95, null);
74
g.setColor(Color.red);
75
g.fillRect(0, 0, 100, 100);
76
g.setColor(Color.black);
77
g.fillRect(0, 0, 100, 100);
78
// after this the validated context color is black
79
80
RenderQueue rq = dst.getContext().getRenderQueue();
81
rq.lock();
82
try {
83
dst.getContext().saveState();
84
dst.getContext().restoreState();
85
} finally {
86
rq.unlock();
87
}
88
89
// this will cause ResetPaint (it will set color to extended EA=ff,
90
// which is ffffffff==Color.white)
91
g.drawImage(vi1, 95, 95, null);
92
93
// now try filling with black again, but it will come up as white
94
// because this fill rect won't validate the color properly
95
g.setColor(Color.black);
96
g.fillRect(0, 0, 100, 100);
97
98
BufferedImage bi = vi.getSnapshot();
99
if (bi.getRGB(50, 50) != Color.black.getRGB()) {
100
throw new RuntimeException("Test FAILED: found color="+
101
Integer.toHexString(bi.getRGB(50, 50))+" instead of "+
102
Integer.toHexString(Color.black.getRGB()));
103
}
104
105
System.out.println("Test PASSED.");
106
}
107
}
108
109