Print this page
rev 54883 : JDK-8220154 Improve java2d rendering performance on macOS by using Metal framework
Split |
Close |
Expand all |
Collapse all |
--- old/src/java.desktop/share/classes/sun/java2d/opengl/OGLTextRenderer.java
+++ new/src/java.desktop/share/classes/sun/java2d/opengl/OGLTextRenderer.java
1 1 /*
2 2 * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 4 *
5 5 * This code is free software; you can redistribute it and/or modify it
6 6 * under the terms of the GNU General Public License version 2 only, as
7 7 * published by the Free Software Foundation. Oracle designates this
8 8 * particular file as subject to the "Classpath" exception as provided
9 9 * by Oracle in the LICENSE file that accompanied this code.
10 10 *
11 11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 14 * version 2 for more details (a copy is included in the LICENSE file that
15 15 * accompanied this code).
16 16 *
17 17 * You should have received a copy of the GNU General Public License version
18 18 * 2 along with this work; if not, write to the Free Software Foundation,
19 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 20 *
21 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 22 * or visit www.oracle.com if you need additional information or have any
23 23 * questions.
24 24 */
25 25
26 26 package sun.java2d.opengl;
27 27
28 28 import java.awt.Composite;
29 29 import sun.font.GlyphList;
30 30 import sun.java2d.SunGraphics2D;
31 31 import sun.java2d.loops.GraphicsPrimitive;
32 32 import sun.java2d.pipe.BufferedTextPipe;
33 33 import sun.java2d.pipe.RenderQueue;
34 34
35 35 class OGLTextRenderer extends BufferedTextPipe {
36 36
37 37 OGLTextRenderer(RenderQueue rq) {
38 38 super(rq);
39 39 }
40 40
41 41 @Override
42 42 protected native void drawGlyphList(int numGlyphs, boolean usePositions,
43 43 boolean subPixPos, boolean rgbOrder,
44 44 int lcdContrast,
45 45 float glOrigX, float glOrigY,
46 46 long[] images, float[] positions);
47 47
48 48 @Override
49 49 protected void validateContext(SunGraphics2D sg2d, Composite comp) {
50 50 // assert rq.lock.isHeldByCurrentThread();
51 51 OGLSurfaceData oglDst = (OGLSurfaceData)sg2d.surfaceData;
52 52 OGLContext.validateContext(oglDst, oglDst,
53 53 sg2d.getCompClip(), comp,
54 54 null, sg2d.paint, sg2d,
55 55 OGLContext.NO_CONTEXT_FLAGS);
56 56 }
↓ open down ↓ |
56 lines elided |
↑ open up ↑ |
57 57
58 58 OGLTextRenderer traceWrap() {
59 59 return new Tracer(this);
60 60 }
61 61
62 62 private static class Tracer extends OGLTextRenderer {
63 63 Tracer(OGLTextRenderer ogltr) {
64 64 super(ogltr.rq);
65 65 }
66 66 protected void drawGlyphList(SunGraphics2D sg2d, GlyphList gl) {
67 - GraphicsPrimitive.tracePrimitive("OGLDrawGlyphs");
67 + final String prim = "OGLDrawGlyphs" + (gl.isRGBOrder() ? "LCD" : "Gray");
68 + if ((GraphicsPrimitive.traceflags & GraphicsPrimitive.TRACEPTIME) == 0) {
69 + GraphicsPrimitive.tracePrimitive(prim);
70 + }
71 + long time = System.nanoTime();
68 72 super.drawGlyphList(sg2d, gl);
73 + GraphicsPrimitive.tracePrimitiveTime(prim, System.nanoTime() - time);
69 74 }
70 75 }
71 76 }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX