8061832: J2DBench can be improved
authorserb
Fri, 28 Nov 2014 13:55:09 +0300
changeset 28075 565055be0b90
parent 28074 bb1a1f7d0038
child 28076 64c048b63cea
8061832: J2DBench can be improved Reviewed-by: prr, bae
jdk/src/demo/share/java2d/J2DBench/options/default.opt
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/Destinations.java
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/Group.java
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/J2DBench.java
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/GraphicsTests.java
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/ImageTests.java
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConvertOpTests.java
jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/cmm/EmbeddedProfileTests.java
--- a/jdk/src/demo/share/java2d/J2DBench/options/default.opt	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/options/default.opt	Fri Nov 28 13:55:09 2014 +0300
@@ -5,33 +5,53 @@
 global.env.runcount=5
 global.env.repcount=0
 global.env.testtime=2500
+global.results.workunits=units
+global.results.timeunits=sec
+global.results.ratio=unitspersec
 global.dest.screen=disabled
 global.dest.offscreen=disabled
 global.dest.compatimg.compatimg=disabled
 global.dest.compatimg.opqcompatimg=disabled
 global.dest.compatimg.bmcompatimg=disabled
 global.dest.compatimg.transcompatimg=disabled
-global.dest.volimg=enabled
+global.dest.volimg.volimg=enabled
+global.dest.volimg.opqvolimg=disabled
+global.dest.volimg.bmvolimg=disabled
+global.dest.volimg.transvolimg=disabled
 global.dest.bufimg.IntXrgb=disabled
 global.dest.bufimg.IntArgb=disabled
+global.dest.bufimg.IntArgbPre=disabled
+global.dest.bufimg.3ByteBgr=disabled
 global.dest.bufimg.ByteIndexed=disabled
 global.dest.bufimg.ByteGray=disabled
+global.dest.bufimg.4ByteAbgr=disabled
+global.dest.bufimg.4ByteAbgrPre=disabled
+global.dest.bufimg.custom=disabled
 graphics.opts.anim=2
 graphics.opts.sizes=20,250
 graphics.opts.alpharule=SrcOver
+graphics.opts.transform=ident
 graphics.opts.extraalpha=Both
 graphics.opts.xormode=Off
 graphics.opts.clip=Both
 graphics.opts.renderhint=Default
-graphics.render.opts.randomcolor=Both
+graphics.render.opts.paint=single,random
 graphics.render.opts.alphacolor=Off
 graphics.render.opts.antialias=Both
+graphics.render.opts.stroke=width1
 graphics.render.tests.drawLine=enabled
+graphics.render.tests.drawLineHoriz=disabled
+graphics.render.tests.drawLineVert=disabled
 graphics.render.tests.fillRect=enabled
+graphics.render.tests.drawRect=disabled
 graphics.render.tests.fillOval=enabled
+graphics.render.tests.drawOval=disabled
 graphics.render.tests.fillPoly=disabled
 graphics.render.tests.drawPoly=disabled
 graphics.render.tests.shape.fillCubic=enabled
+graphics.render.tests.shape.drawCubic=disabled
+graphics.render.tests.shape.fillEllipse2D=disabled
+graphics.render.tests.shape.drawEllipse2D=disabled
 graphics.imaging.src.offscr.opaque=disabled
 graphics.imaging.src.offscr.bitmask=disabled
 graphics.imaging.src.offscr.translucent=disabled
@@ -44,33 +64,98 @@
 graphics.imaging.src.transcompatimg.opaque=disabled
 graphics.imaging.src.transcompatimg.bitmask=disabled
 graphics.imaging.src.transcompatimg.translucent=enabled
-graphics.imaging.src.volimg.opaque=disabled
-graphics.imaging.src.volimg.bitmask=disabled
-graphics.imaging.src.volimg.translucent=disabled
+graphics.imaging.src.opqvolimg.opaque=disabled
+graphics.imaging.src.opqvolimg.bitmask=disabled
+graphics.imaging.src.opqvolimg.translucent=disabled
+graphics.imaging.src.bmvolimg.opaque=disabled
+graphics.imaging.src.bmvolimg.bitmask=disabled
+graphics.imaging.src.bmvolimg.translucent=disabled
+graphics.imaging.src.transvolimg.opaque=disabled
+graphics.imaging.src.transvolimg.bitmask=disabled
+graphics.imaging.src.transvolimg.translucent=disabled
 graphics.imaging.src.bufimg.IntXrgb.opaque=enabled
 graphics.imaging.src.bufimg.IntXrgb.bitmask=disabled
 graphics.imaging.src.bufimg.IntXrgb.translucent=disabled
 graphics.imaging.src.bufimg.IntArgb.opaque=disabled
 graphics.imaging.src.bufimg.IntArgb.bitmask=disabled
 graphics.imaging.src.bufimg.IntArgb.translucent=enabled
+graphics.imaging.src.bufimg.IntArgbPre.opaque=disabled
+graphics.imaging.src.bufimg.IntArgbPre.bitmask=disabled
+graphics.imaging.src.bufimg.IntArgbPre.translucent=disabled
 graphics.imaging.src.bufimg.ByteGray.opaque=disabled
 graphics.imaging.src.bufimg.ByteGray.bitmask=disabled
 graphics.imaging.src.bufimg.ByteGray.translucent=disabled
+graphics.imaging.src.bufimg.3ByteBgr.opaque=disabled
+graphics.imaging.src.bufimg.3ByteBgr.bitmask=disabled
+graphics.imaging.src.bufimg.3ByteBgr.translucent=disabled
+graphics.imaging.src.bufimg.4ByteAbgr.opaque=disabled
+graphics.imaging.src.bufimg.4ByteAbgr.bitmask=disabled
+graphics.imaging.src.bufimg.4ByteAbgr.translucent=disabled
+graphics.imaging.src.bufimg.4ByteAbgrPre.opaque=disabled
+graphics.imaging.src.bufimg.4ByteAbgrPre.bitmask=disabled
+graphics.imaging.src.bufimg.4ByteAbgrPre.translucent=disabled
 graphics.imaging.src.bufimg.ByteIndexedBm.opaque=disabled
 graphics.imaging.src.bufimg.ByteIndexedBm.bitmask=disabled
 graphics.imaging.src.bufimg.ByteIndexedBm.translucent=disabled
-graphics.imaging.tests.drawimage=enabled
-graphics.imaging.tests.drawimagebg=disabled
-graphics.imaging.tests.drawimagescaleup=enabled
-graphics.imaging.tests.drawimagescaledown=disabled
-graphics.imaging.tests.drawimagetxform=enabled
+graphics.imaging.src.bufimg.unmanagedIntXrgb.opaque=disabled
+graphics.imaging.src.bufimg.unmanagedIntXrgb.bitmask=disabled
+graphics.imaging.src.bufimg.unmanagedIntXrgb.translucent=disabled
+graphics.imaging.src.bufimg.unmanagedIntArgb.opaque=disabled
+graphics.imaging.src.bufimg.unmanagedIntArgb.bitmask=disabled
+graphics.imaging.src.bufimg.unmanagedIntArgb.translucent=disabled
+graphics.imaging.src.bufimg.unmanagedIntArgbPre.opaque=disabled
+graphics.imaging.src.bufimg.unmanagedIntArgbPre.bitmask=disabled
+graphics.imaging.src.bufimg.unmanagedIntArgbPre.translucent=disabled
+graphics.imaging.src.bufimg.unmanaged3ByteBgr.opaque=disabled
+graphics.imaging.src.bufimg.unmanaged3ByteBgr.bitmask=disabled
+graphics.imaging.src.bufimg.unmanaged3ByteBgr.translucent=disabled
+graphics.imaging.benchmarks.opts.interpolation=Nearest neighbor
+graphics.imaging.benchmarks.opts.touchsrc=Off
+graphics.imaging.benchmarks.tests.drawimage=enabled
+graphics.imaging.benchmarks.tests.drawimagebg=disabled
+graphics.imaging.benchmarks.tests.drawimagescaleup=enabled
+graphics.imaging.benchmarks.tests.drawimagescaledown=disabled
+graphics.imaging.benchmarks.tests.drawimagescalesplit=disabled
+graphics.imaging.benchmarks.tests.drawimagetxform=enabled
+graphics.imaging.imageops.opts.op=convolve3x3zero
+graphics.imaging.imageops.tests.graphics2d.drawimageop=disabled
+graphics.imaging.imageops.tests.bufimgop.filternull=disabled
+graphics.imaging.imageops.tests.bufimgop.filtercached=disabled
+graphics.imaging.imageops.tests.rasterop.filternull=disabled
+graphics.imaging.imageops.tests.rasterop.filtercached=disabled
+graphics.misc.copytests.copyAreaVert=disabled
+graphics.misc.copytests.copyAreaHoriz=disabled
+graphics.misc.copytests.copyAreaDiag=disabled
+pixel.opts.renderto=Off
+pixel.opts.renderfrom=Off
+pixel.src.1BitBinary=disabled
+pixel.src.2BitBinary=disabled
+pixel.src.4BitBinary=disabled
+pixel.src.ByteIndexed=disabled
+pixel.src.ByteGray=disabled
+pixel.src.Short555=disabled
+pixel.src.Short565=disabled
+pixel.src.ShortGray=disabled
+pixel.src.3ByteBgr=disabled
+pixel.src.4ByteAbgr=disabled
+pixel.src.IntXrgb=disabled
+pixel.src.IntXbgr=disabled
+pixel.src.IntArgb=disabled
+pixel.bimgtests.getrgb=disabled
+pixel.bimgtests.setrgb=disabled
+pixel.rastests.getdataelem=disabled
+pixel.rastests.setdataelem=disabled
+pixel.rastests.getpixel=disabled
+pixel.rastests.setpixel=disabled
+pixel.dbtests.getelem=disabled
+pixel.dbtests.setelem=disabled
 text.opts.data.tlength=32
 text.opts.data.tscript=english
 text.opts.font.fname=lucida
 text.opts.font.fstyle=0
 text.opts.font.fsize=13.0
 text.opts.font.ftx=Identity
-text.opts.graphics.taa=Both
+text.opts.graphics.textaa=Off,On
 text.opts.graphics.tfm=Off
 text.opts.graphics.gaa=Off
 text.opts.graphics.gtx=Identity
@@ -114,3 +199,66 @@
 text.construction.tests.gvfromfontlayout=disabled
 text.construction.tests.tlfromfont=disabled
 text.construction.tests.tlfrommap=disabled
+imageio.opts.size=250
+imageio.opts.content=photo
+imageio.input.opts.general.source.file=disabled
+imageio.input.opts.general.source.url=disabled
+imageio.input.opts.general.source.byteArray=disabled
+imageio.input.opts.imageio.useCache=Off
+imageio.input.image.toolkit.opts.format=
+imageio.input.image.toolkit.tests.createImage=disabled
+imageio.input.image.imageio.opts.format=
+imageio.input.image.imageio.tests.imageioRead=disabled
+imageio.input.image.imageio.reader.opts.seekForwardOnly=On
+imageio.input.image.imageio.reader.opts.ignoreMetadata=On
+imageio.input.image.imageio.reader.opts.installListener=Off
+imageio.input.image.imageio.reader.tests.read=disabled
+imageio.input.image.imageio.reader.tests.getImageMetadata=disabled
+imageio.input.stream.tests.construct=disabled
+imageio.input.stream.tests.read=disabled
+imageio.input.stream.tests.readByteArray=disabled
+imageio.input.stream.tests.readFullyByteArray=disabled
+imageio.input.stream.tests.readBit=disabled
+imageio.input.stream.tests.readByte=disabled
+imageio.input.stream.tests.readUnsignedByte=disabled
+imageio.input.stream.tests.readShort=disabled
+imageio.input.stream.tests.readUnsignedShort=disabled
+imageio.input.stream.tests.readInt=disabled
+imageio.input.stream.tests.readUnsignedInt=disabled
+imageio.input.stream.tests.readFloat=disabled
+imageio.input.stream.tests.readLong=disabled
+imageio.input.stream.tests.readDouble=disabled
+imageio.input.stream.tests.skipBytes=disabled
+imageio.output.opts.general.dest.file=disabled
+imageio.output.opts.general.dest.byteArray=disabled
+imageio.output.opts.imageio.useCache=Off
+imageio.output.image.imageio.opts.format=
+imageio.output.image.imageio.tests.imageioWrite=disabled
+imageio.output.image.imageio.writer.opts.installListener=Off
+imageio.output.image.imageio.writer.tests.write=disabled
+imageio.output.stream.tests.construct=disabled
+imageio.output.stream.tests.write=disabled
+imageio.output.stream.tests.writeByteArray=disabled
+imageio.output.stream.tests.writeBit=disabled
+imageio.output.stream.tests.writeByte=disabled
+imageio.output.stream.tests.writeShort=disabled
+imageio.output.stream.tests.writeInt=disabled
+imageio.output.stream.tests.writeFloat=disabled
+imageio.output.stream.tests.writeLong=disabled
+imageio.output.stream.tests.writeDouble=disabled
+cmm.opts.profiles=1001
+cmm.colorconv.data.fromRGB=disabled
+cmm.colorconv.data.toRGB=disabled
+cmm.colorconv.data.fromCIEXYZ=disabled
+cmm.colorconv.data.toCIEXYZ=disabled
+cmm.colorconv.ccop.ccopOptions.size=250
+cmm.colorconv.ccop.ccopOptions.content=photo
+cmm.colorconv.ccop.ccopOptions.srcType=INT_ARGB
+cmm.colorconv.ccop.ccopOptions.dstType=INT_ARGB
+cmm.colorconv.ccop.op_img=disabled
+cmm.colorconv.ccop.op_rst=disabled
+cmm.colorconv.ccop.op_draw=disabled
+cmm.colorconv.embed.embedOptions.Images=512x512
+cmm.colorconv.embed.embd_img_read=disabled
+cmm.profiles.getHeader=disabled
+cmm.profiles.getNumComponents=disabled
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/Destinations.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/Destinations.java	Fri Nov 28 13:55:09 2014 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -57,6 +57,7 @@
     public static Group.EnableSet destroot;
     public static Group bufimgdestroot;
     public static Group compatimgdestroot;
+    public static Group volimgdestroot;
 
     public static void init() {
         destroot = new Group.EnableSet(TestEnvironment.globaloptroot,
@@ -79,7 +80,16 @@
             }
 
             if (ImageTests.hasVolatileImage) {
+                volimgdestroot = new Group.EnableSet(destroot, "volimg",
+                        "Output to Volatile Image");
+
+                volimgdestroot.setHorizontal();
                 new VolatileImg();
+                if (ImageTests.hasTransparentVolatileImage) {
+                    new VolatileImg(Transparency.OPAQUE);
+                    new VolatileImg(Transparency.BITMASK);
+                    new VolatileImg(Transparency.TRANSLUCENT);
+                }
             }
 
             bufimgdestroot = new Group.EnableSet(destroot, "bufimg",
@@ -91,6 +101,8 @@
             new BufImg(BufferedImage.TYPE_3BYTE_BGR);
             new BufImg(BufferedImage.TYPE_BYTE_INDEXED);
             new BufImg(BufferedImage.TYPE_BYTE_GRAY);
+            new BufImg(BufferedImage.TYPE_4BYTE_ABGR);
+            new BufImg(BufferedImage.TYPE_4BYTE_ABGR_PRE);
             new CustomImg();
         }
     }
@@ -206,18 +218,62 @@
     }
 
     public static class VolatileImg extends Destinations {
+        private final int transparency;
+
+        public static final String[] ShortNames = {
+                "volimg",
+                "opqvolimg",
+                "bmvolimg",
+                "transvolimg",
+        };
+
+        public static final String[] ShortDescriptions = {
+                "Default",
+                "Opaque",
+                "Bitmask",
+                "Translucent",
+        };
+
+        public static final String[] LongDescriptions = {
+                "Default VolatileImg Image",
+                "Opaque VolatileImg Image",
+                "Bitmask VolatileImg Image",
+                "Translucent VolatileImg Image",
+        };
+
+        public static final String[] ModifierNames = {
+                "VolatileImg()",
+                "VolatileImg(Opaque)",
+                "VolatileImg(Bitmask)",
+                "VolatileImg(Translucent)",
+        };
+
         public VolatileImg() {
-            super(destroot, "volimg", "Output to Volatile Image", false);
+            this(0);
         }
 
-        public String getModifierValueName(Object val) {
-            return "VolatileImg";
+        public VolatileImg(final int transparency) {
+            super(volimgdestroot,
+                  ShortNames[transparency],
+                  ShortDescriptions[transparency],
+                  false);
+            this.transparency = transparency;
         }
 
-        public void setDestination(TestEnvironment env) {
+        public String getModifierValueName(final Object val) {
+            return ModifierNames[transparency];
+        }
+
+        public void setDestination(final TestEnvironment env) {
             Component c = env.getCanvas();
-            env.setTestImage(c.createVolatileImage(env.getWidth(),
-                                                   env.getHeight()));
+            GraphicsConfiguration gc = c.getGraphicsConfiguration();
+            int w = env.getWidth();
+            int h = env.getHeight();
+            if (transparency == 0) {
+                env.setTestImage(gc.createCompatibleVolatileImage(w, h));
+            } else {
+                env.setTestImage(gc.createCompatibleVolatileImage(w, h, transparency));
+            }
         }
     }
 
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/Group.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/Group.java	Fri Nov 28 13:55:09 2014 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -44,6 +44,7 @@
 import javax.swing.BoxLayout;
 import javax.swing.JComponent;
 import javax.swing.JPanel;
+import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 import javax.swing.border.TitledBorder;
 import java.util.NoSuchElementException;
@@ -199,7 +200,7 @@
                     p.add(comp);
                 }
             }
-            return p;
+            return new JScrollPane(p);
         }
     }
 
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/J2DBench.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/J2DBench.java	Fri Nov 28 13:55:09 2014 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -60,6 +60,8 @@
 import javax.swing.BoxLayout;
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -376,7 +378,11 @@
         }
 
         if (gui) {
-            startGUI();
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    startGUI();
+                }
+            });
         } else {
 
             long start = System.currentTimeMillis();
@@ -772,6 +778,7 @@
 
         f.getContentPane().add(p, BorderLayout.SOUTH);
         f.pack();
+        f.setLocationRelativeTo(null);
         f.show();
     }
 
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/GraphicsTests.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/GraphicsTests.java	Fri Nov 28 13:55:09 2014 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -112,10 +112,10 @@
 
         sizeList = new Option.IntList(groptroot, "sizes",
                                       "Size of Operations to perform",
-                                      new int[] {1, 20, 100, 250, 1000},
+                                      new int[] {1, 20, 100, 250, 1000, 4000},
                                       new String[] {
                                           "1x1", "20x20", "100x100", "250x250",
-                                          "1000x1000",
+                                          "1000x1000", "4000x4000",
                                       },
                                       new String[] {
                                           "Tiny Shapes (1x1)",
@@ -123,6 +123,7 @@
                                           "Medium Shapes (100x100)",
                                           "Large Shapes (250x250)",
                                           "X-Large Shapes (1000x1000)",
+                                          "Huge Shapes (4000x4000)",
                                       }, 0xa);
         if (hasGraphics2D) {
             String rulenames[] = {
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/ImageTests.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/ImageTests.java	Fri Nov 28 13:55:09 2014 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -53,6 +53,7 @@
 import java.awt.AlphaComposite;
 import java.awt.Dimension;
 import java.awt.GraphicsConfiguration;
+import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
 import java.awt.image.BufferedImageOp;
 import java.awt.image.ByteLookupTable;
@@ -77,6 +78,7 @@
 
 public abstract class ImageTests extends GraphicsTests {
     public static boolean hasVolatileImage;
+    public static boolean hasTransparentVolatileImage;
     public static boolean hasCompatImage;
 
     static {
@@ -89,14 +91,20 @@
             hasCompatImage = true;
         } catch (NoSuchMethodError e) {
         }
+        try {
+            new Canvas().getMousePosition();
+            hasTransparentVolatileImage = true;
+        } catch (NoSuchMethodError e) {
+        }
     }
 
     static Group imageroot;
     static Group.EnableSet imgsrcroot;
     static Group.EnableSet bufimgsrcroot;
 
+    static Group imgbenchroot;
     static Group imgtestroot;
-    static Group imgoptionsroot;
+    static Group imgtestOptRoot;
 
     static Group imageOpRoot;
     static Group imageOpOptRoot;
@@ -106,6 +114,7 @@
     static Group rasterOpTestRoot;
     static Option opList;
     static Option doTouchSrc;
+    static Option interpolation;
 
     static String transNodeNames[] = {
         null, "opaque", "bitmask", "translucent",
@@ -122,19 +131,9 @@
 
         imgsrcroot = new Group.EnableSet(imageroot, "src",
                                          "Image Rendering Sources");
-        imgsrcroot.setBordered(true);
-
-        imgoptionsroot = new Group(imgsrcroot, "options",
-                                "Image Source Options");
-        imgoptionsroot.setBordered(true);
-        doTouchSrc =
-            new Option.Toggle(imgoptionsroot, "touchsrc",
-                              "Touch src image before every operation",
-                               Option.Toggle.Off);
-
-        imgtestroot = new Group(imageroot, "tests",
-                                "Image Rendering Tests");
-        imgtestroot.setBordered(true);
+        imgbenchroot = new Group(imageroot, "benchmarks",
+                                "Image Rendering Benchmarks");
+        imgtestOptRoot = new Group(imgbenchroot, "opts", "Options");
 
         new OffScreen();
 
@@ -144,9 +143,14 @@
                 new CompatImg(Transparency.BITMASK);
                 new CompatImg(Transparency.TRANSLUCENT);
             }
-
             if (hasVolatileImage) {
-                new VolatileImg();
+                if (hasTransparentVolatileImage) {
+                    new VolatileImg(Transparency.OPAQUE);
+                    new VolatileImg(Transparency.BITMASK);
+                    new VolatileImg(Transparency.TRANSLUCENT);
+                } else {
+                    new VolatileImg();
+                }
             }
 
             bufimgsrcroot =
@@ -154,11 +158,15 @@
                                     "BufferedImage Rendering Sources");
             new BufImg(BufferedImage.TYPE_INT_RGB);
             new BufImg(BufferedImage.TYPE_INT_ARGB);
+            new BufImg(BufferedImage.TYPE_INT_ARGB_PRE);
             new BufImg(BufferedImage.TYPE_BYTE_GRAY);
             new BufImg(BufferedImage.TYPE_3BYTE_BGR);
+            new BufImg(BufferedImage.TYPE_4BYTE_ABGR);
+            new BufImg(BufferedImage.TYPE_4BYTE_ABGR_PRE);
             new BmByteIndexBufImg();
             new BufImg(BufferedImage.TYPE_INT_RGB, true);
             new BufImg(BufferedImage.TYPE_INT_ARGB, true);
+            new BufImg(BufferedImage.TYPE_INT_ARGB_PRE, true);
             new BufImg(BufferedImage.TYPE_3BYTE_BGR, true);
 
             imageOpRoot = new Group(imageroot, "imageops",
@@ -211,12 +219,31 @@
             new BufImgOpFilter(true);
             new RasterOpFilter(false);
             new RasterOpFilter(true);
+
+            String interpolationnames[] = {"Nearest neighbor", "Bilinear",
+                                           "Bicubic",};
+            interpolation =
+                    new ObjectList(imgtestOptRoot, "interpolation",
+                                   "Interpolation",
+                                   interpolationnames, new Object[] {
+                            RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR,
+                            RenderingHints.VALUE_INTERPOLATION_BILINEAR,
+                            RenderingHints.VALUE_INTERPOLATION_BICUBIC,
+                    }, interpolationnames, interpolationnames, 1);
         }
 
+        doTouchSrc =
+                new Option.Toggle(imgtestOptRoot, "touchsrc",
+                                  "Touch source image before every operation",
+                                  Option.Toggle.Off);
+
+        imgtestroot = new Group(imgbenchroot, "tests", "Image Rendering Tests");
+
         new DrawImage();
         new DrawImageBg();
         new DrawImageScale("up", 1.5f);
         new DrawImageScale("down", .75f);
+        new DrawImageScale("split", .5f);
         new DrawImageTransform();
     }
 
@@ -236,6 +263,7 @@
         super(parent, nodeName, description);
         addDependency(imgsrcroot, srcFilter);
         addDependency(doTouchSrc);
+        addDependency(interpolation);
     }
 
     public GraphicsTests.Context createContext() {
@@ -248,6 +276,11 @@
 
         ictx.src = env.getSrcImage();
         ictx.touchSrc = env.isEnabled(doTouchSrc);
+        if (hasGraphics2D) {
+            Graphics2D g2d = (Graphics2D) ctx.graphics;
+            final Object modifier = env.getModifier(interpolation);
+            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, modifier);
+        }
     }
 
     public abstract static class TriStateImageType extends Group {
@@ -290,13 +323,27 @@
     }
 
     public static class VolatileImg extends TriStateImageType {
+        private final int transparency;
+
         public VolatileImg() {
-            super(imgsrcroot, "volimg", "Volatile Image", Transparency.OPAQUE);
+            this(0);
+        }
+
+        public VolatileImg(int transparency) {
+            super(imgsrcroot, Destinations.VolatileImg.ShortNames[transparency],
+                  Destinations.VolatileImg.LongDescriptions[transparency],
+                  transparency);
+            this.transparency = transparency;
         }
 
         public Image makeImage(TestEnvironment env, int w, int h) {
             Canvas c = env.getCanvas();
-            return c.createVolatileImage(w, h);
+            GraphicsConfiguration gc = c.getGraphicsConfiguration();
+            if (transparency == 0) {
+                return gc.createCompatibleVolatileImage(w, h);
+            } else {
+                return gc.createCompatibleVolatileImage(w, h, transparency);
+            }
         }
     }
 
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConvertOpTests.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConvertOpTests.java	Fri Nov 28 13:55:09 2014 +0300
@@ -60,7 +60,7 @@
 public class ColorConvertOpTests extends ColorConversionTests {
 
     private static class ImageContent {
-        static ImageContent BLANK = new ImageContent("bank", "Blank (opaque black)");
+        static ImageContent BLANK = new ImageContent("blank", "Blank (opaque black)");
         static ImageContent RANDOM = new ImageContent("random", "Random");
         static ImageContent VECTOR = new ImageContent("vector", "Vector Art");
         static ImageContent PHOTO= new ImageContent("photo", "Photograph");
@@ -83,7 +83,7 @@
         static ImageType INT_RGB = new ImageType(BufferedImage.TYPE_INT_RGB, "INT_RGB", "TYPE_INT_RGB");
         static ImageType INT_BGR = new ImageType(BufferedImage.TYPE_INT_BGR, "INT_BGR", "TYPE_INT_BGR");
         static ImageType BYTE_3BYTE_BGR = new ImageType(BufferedImage.TYPE_3BYTE_BGR, "3BYTE_BGR", "TYPE_3BYTE_BGR");
-        static ImageType BYTE_4BYTE_ABGR = new ImageType(BufferedImage.TYPE_4BYTE_ABGR, "4BYTE_BGR", "TYPE_4BYTE_BGR");
+        static ImageType BYTE_4BYTE_ABGR = new ImageType(BufferedImage.TYPE_4BYTE_ABGR, "4BYTE_ABGR", "TYPE_4BYTE_ABGR");
         static ImageType COMPATIBLE_DST = new ImageType(0, "Compatible", "Compatible destination");
 
         private ImageType(int type, String abbr, String descr) {
@@ -130,7 +130,7 @@
 
         for (int i = 0; i < num; i++) {
             t[i] = allTypes[i];
-            names[i] = t[i].toString();
+            names[i] = t[i].abbrev;
             abbrev[i] = t[i].abbrev;
             descr[i] = t[i].descr;
         }
--- a/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/cmm/EmbeddedProfileTests.java	Fri Nov 28 10:42:03 2014 +0000
+++ b/jdk/src/demo/share/java2d/J2DBench/src/j2dbench/tests/cmm/EmbeddedProfileTests.java	Fri Nov 28 13:55:09 2014 +0300
@@ -100,7 +100,7 @@
         String[] descr = new String[num];
 
         for (int i = 0; i < num; i++) {
-            names[i] = images[i].toString();
+            names[i] = images[i].abbrev;
             abbrev[i] = images[i].abbrev;
             descr[i] = images[i].description;
         }
@@ -153,7 +153,7 @@
                 iis = ImageIO.createImageInputStream(url.openStream());
                 reader = (ImageReader) ImageIO.getImageReaders(iis).next();
             } catch (IOException e) {
-                throw new RuntimeException("Unable to run the becnhmark", e);
+                throw new RuntimeException("Unable to run the benchmark", e);
             }
 
             do {