8191406: [hidpi] sun/java2d/SunGraphics2D/DrawImageBilinear.java test fails

Reviewed-by: serb
This commit is contained in:
Jayathirth D V 2022-11-23 03:38:37 +00:00
parent 412b43658a
commit b4bd287f73
2 changed files with 54 additions and 87 deletions

View File

@ -223,7 +223,7 @@ sun/java2d/DirectX/MultiPaintEventTest/MultiPaintEventTest.java 8284825 windows-
sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java 8196102 generic-all sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java 8196102 generic-all
sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java 8196180 windows-all,macosx-all sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java 8196180 windows-all,macosx-all
sun/java2d/SunGraphics2D/EmptyClipRenderingTest.java 8144029 macosx-all,linux-all sun/java2d/SunGraphics2D/EmptyClipRenderingTest.java 8144029 macosx-all,linux-all
sun/java2d/SunGraphics2D/DrawImageBilinear.java 8191406 generic-all sun/java2d/SunGraphics2D/DrawImageBilinear.java 8297175 linux-all
sun/java2d/SunGraphics2D/PolyVertTest.java 6986565 generic-all sun/java2d/SunGraphics2D/PolyVertTest.java 6986565 generic-all
sun/java2d/SunGraphics2D/SimplePrimQuality.java 6992007 generic-all sun/java2d/SunGraphics2D/SimplePrimQuality.java 6992007 generic-all
sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java 8196185 generic-all sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java 8196185 generic-all

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2007, 2020, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,16 +25,15 @@
* @key headful * @key headful
* @bug 5009033 6603000 6666362 8159142 8198613 * @bug 5009033 6603000 6666362 8159142 8198613
* @summary Verifies that images transformed with bilinear filtering do not * @summary Verifies that images transformed with bilinear filtering do not
* leave artifacts at the edges. * leave artifacts at the edges.
* @run main/othervm -Dsun.java2d.uiScale=2.5 DrawImageBilinear * @run main/othervm -Dsun.java2d.uiScale=2.5 DrawImageBilinear
* @run main/othervm -Dsun.java2d.uiScale=2.5 -Dsun.java2d.d3d=false DrawImageBilinear * @run main/othervm -Dsun.java2d.uiScale=2.5 -Dsun.java2d.d3d=false DrawImageBilinear
* @author campbelc
*/ */
import java.awt.Canvas; import java.awt.Canvas;
import java.awt.Color; import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Frame; import java.awt.Frame;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
@ -55,28 +54,13 @@ public class DrawImageBilinear extends Canvas {
private static boolean done; private static boolean done;
private BufferedImage bimg1, bimg2; private BufferedImage bimg1, bimg2;
private VolatileImage vimg; private VolatileImage vimg;
private static volatile BufferedImage capture; private static BufferedImage capture;
private static void doCapture(Component test) { private static DrawImageBilinear test;
try { private static Frame frame;
Thread.sleep(2000);
} catch (InterruptedException ex) {}
// Grab the screen region
try {
Robot robot = new Robot();
Point pt1 = test.getLocationOnScreen();
Rectangle rect =
new Rectangle(pt1.x, pt1.y, test.getWidth(), test.getHeight());
capture = robot.createScreenCapture(rect);
} catch (Exception e) {
e.printStackTrace();
}
}
private void renderPattern(Graphics g) { private void renderPattern(Graphics g) {
g.setColor(Color.red); g.setColor(Color.red);
g.fillRect(0, 0, SIZE, SIZE); g.fillRect(0, 0, SIZE, SIZE);
//g.setColor(Color.green);
//g.drawRect(0, 0, SIZE-1, SIZE-1);
g.dispose(); g.dispose();
} }
@ -108,26 +92,17 @@ public class DrawImageBilinear extends Canvas {
// second time will be a texture->surface blit // second time will be a texture->surface blit
g2d.drawImage(bimg2, 80, 10, 40, 40, null); g2d.drawImage(bimg2, 80, 10, 40, 40, null);
if (!skipOglTextureTest) { g2d.drawImage(bimg2, 80, 10, 40, 40, null);
g2d.drawImage(bimg2, 80, 10, 40, 40, null);
}
// third time will be a pbuffer->surface blit // third time will be a pbuffer->surface blit
if (vimg.validate(getGraphicsConfiguration()) != VolatileImage.IMAGE_OK) { if (vimg.validate(getGraphicsConfiguration()) !=
VolatileImage.IMAGE_OK) {
renderPattern(vimg.createGraphics()); renderPattern(vimg.createGraphics());
} }
g2d.drawImage(vimg, 150, 10, 40, 40, null); g2d.drawImage(vimg, 150, 10, 40, 40, null);
Toolkit.getDefaultToolkit().sync(); Toolkit.getDefaultToolkit().sync();
} while (vimg.contentsLost()); } while (vimg.contentsLost());
synchronized (this) {
if (!done) {
doCapture(this);
done = true;
}
notifyAll();
}
} }
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
@ -156,63 +131,55 @@ public class DrawImageBilinear extends Canvas {
} }
} }
private static boolean skipOglTextureTest = false; private static void createAndShowGUI() {
test = new DrawImageBilinear();
public static void main(String[] args) { frame = new Frame();
boolean show = false;
for (String arg : args) {
if ("-show".equals(arg)) {
show = true;
}
}
String arch = System.getProperty("os.arch");
boolean isOglEnabled = Boolean.getBoolean("sun.java2d.opengl");
skipOglTextureTest = false;
System.out.println("Skip OpenGL texture test: " + skipOglTextureTest);
DrawImageBilinear test = new DrawImageBilinear();
Frame frame = new Frame();
frame.add(test); frame.add(test);
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.setLocationRelativeTo(null);
frame.pack(); frame.pack();
frame.setVisible(true); frame.setVisible(true);
}
// Wait until the component's been painted public static void main(String[] args) throws Exception {
synchronized (test) { try {
while (!done) { EventQueue.invokeAndWait(() -> createAndShowGUI());
try { GraphicsConfiguration gc = frame.getGraphicsConfiguration();
test.wait(); if (gc.getColorModel() instanceof IndexColorModel) {
} catch (InterruptedException e) { System.out.println("IndexColorModel detected: " +
throw new RuntimeException("Failed: Interrupted"); "test considered PASSED");
} return;
}
Robot robot = new Robot();
robot.setAutoDelay(100);
robot.mouseMove(0,0);
robot.waitForIdle();
Point pt1 = frame.getLocationOnScreen();
Rectangle rect =
new Rectangle(pt1.x, pt1.y,
frame.getWidth(), frame.getHeight());
capture = robot.createScreenCapture(rect);
robot.waitForIdle();
if (capture == null) {
throw new RuntimeException("Failed: capture is null");
}
// Test background color
int pixel = capture.getRGB(5, 5);
if (pixel != 0xffffffff) {
throw new RuntimeException("Failed: Incorrect color for " +
"background");
}
// Test pixels
testRegion(capture, new Rectangle(10, 10, 40, 40));
testRegion(capture, new Rectangle(80, 10, 40, 40));
testRegion(capture, new Rectangle(150, 10, 40, 40));
} finally {
if (frame != null) {
frame.dispose();
} }
} }
GraphicsConfiguration gc = frame.getGraphicsConfiguration();
if (gc.getColorModel() instanceof IndexColorModel) {
System.out.println("IndexColorModel detected: " +
"test considered PASSED");
frame.dispose();
return;
}
if (!show) {
frame.dispose();
}
if (capture == null) {
throw new RuntimeException("Failed: capture is null");
}
// Test background color
int pixel = capture.getRGB(5, 5);
if (pixel != 0xffffffff) {
throw new RuntimeException("Failed: Incorrect color for " +
"background");
}
// Test pixels
testRegion(capture, new Rectangle(10, 10, 40, 40));
testRegion(capture, new Rectangle(80, 10, 40, 40));
testRegion(capture, new Rectangle(150, 10, 40, 40));
} }
} }