Description
FULL PRODUCT VERSION :
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
EXTRA RELEVANT SYSTEM CONFIGURATION :
Prism pipeline init order: sw
Using native-based Pisces rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.sw.SWPipeline
*** Fallback to Prism SW pipeline
(X) Got class = class com.sun.prism.sw.SWPipeline
Initialized prism pipeline: com.sun.prism.sw.SWPipeline
vsync: true vpipe: false
A DESCRIPTION OF THE PROBLEM :
When JavaFX uses the SWPipeline (missing OpenGL or Direct3D or forced to do so with -Dprism.order=sw) all buttons (or other components) using the css attribute -fx-border-image-slice are displayed incorrect.
We use the image slice feature very frequently in our product. All rendering is mangled. You can see this behaviour in 2 screenshots:
D3DPipeline (expected layout): http://93.180.154.73/javafx/D3DPipeline.JPG
SWPipeline (buggy layout): http://93.180.154.73/javafx/SWPipeline.JPG
The only difference between both screenshots was the JVM parameter -Dprism.order=sw
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
http://93.180.154.73/javafx/SWPipeline%20test%20button%20OK.JPG
ACTUAL -
http://93.180.154.73/javafx/SWPipeline%20test%20button.JPG
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
FXML:
<Button styleClass="bw-medium" text="SWPipeline test" />
CSS:
.bw-medium {
-fx-padding: -7px -4px -5px -4px;
-fx-border-image-source: url('images/btn_bw_medium_bg.png');
-fx-border-image-slice: 11px 12px 10px 13px fill;
-fx-border-image-width: 11px 12px 10px 13px;
-fx-border-image-repeat: repeat;
-fx-border-color: null;
-fx-background-color: null;
-fx-min-width: 150px;
-fx-min-height: 26px;
-fx-pref-height: 26px;
-fx-font-size: 14px;
-fx-text-fill: #8a8c8f;
}
Border image:
http://93.180.154.73/javafx/btn_bw_medium_bg.png
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use hardware rendering (Direct3D or OpenGL) but this is not available on all platforms.
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]
EXTRA RELEVANT SYSTEM CONFIGURATION :
Prism pipeline init order: sw
Using native-based Pisces rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.sw.SWPipeline
*** Fallback to Prism SW pipeline
(X) Got class = class com.sun.prism.sw.SWPipeline
Initialized prism pipeline: com.sun.prism.sw.SWPipeline
vsync: true vpipe: false
A DESCRIPTION OF THE PROBLEM :
When JavaFX uses the SWPipeline (missing OpenGL or Direct3D or forced to do so with -Dprism.order=sw) all buttons (or other components) using the css attribute -fx-border-image-slice are displayed incorrect.
We use the image slice feature very frequently in our product. All rendering is mangled. You can see this behaviour in 2 screenshots:
D3DPipeline (expected layout): http://93.180.154.73/javafx/D3DPipeline.JPG
SWPipeline (buggy layout): http://93.180.154.73/javafx/SWPipeline.JPG
The only difference between both screenshots was the JVM parameter -Dprism.order=sw
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
http://93.180.154.73/javafx/SWPipeline%20test%20button%20OK.JPG
ACTUAL -
http://93.180.154.73/javafx/SWPipeline%20test%20button.JPG
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
FXML:
<Button styleClass="bw-medium" text="SWPipeline test" />
CSS:
.bw-medium {
-fx-padding: -7px -4px -5px -4px;
-fx-border-image-source: url('images/btn_bw_medium_bg.png');
-fx-border-image-slice: 11px 12px 10px 13px fill;
-fx-border-image-width: 11px 12px 10px 13px;
-fx-border-image-repeat: repeat;
-fx-border-color: null;
-fx-background-color: null;
-fx-min-width: 150px;
-fx-min-height: 26px;
-fx-pref-height: 26px;
-fx-font-size: 14px;
-fx-text-fill: #8a8c8f;
}
Border image:
http://93.180.154.73/javafx/btn_bw_medium_bg.png
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use hardware rendering (Direct3D or OpenGL) but this is not available on all platforms.