UbuntuShape on intel i915 (Atom) uses fallback CPU rendering
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ubuntu-ui-toolkit (Ubuntu) |
In Progress
|
High
|
Loïc Molinari |
Bug Description
I'm digging into unity8 performance problems on older generation Intel GPUs - specifically i915 Atom GPUs.
I've tested a simple QML file with a single empty UbuntuShape in it:
import QtQuick 2.4
import Ubuntu.Components 1.3
Rectangle {
width: 400
height: 300
color: "blue"
UbuntuShape {}
}
Running it with INTEL_DEBUG=perf env var set, I get this output:
i915_program_error: Exceeded max ALU instructions (76 out of 64)
ENTER FALLBACK 10000: Program
Mapping a busy BO, causing a stall on the GPU.
which implies that MESA was unable to compile one of the UbuntuShape shaders as it created more ALU instructions than the GPU could deal with. MESA falls back to CPU rendering as a result.
The GPU stall message I guess is related to that.
Related branches
- Emanuele Antonio Faraone (community): Approve
- Ubuntu SDK team: Pending requested
-
Diff: 7380 lines (+6275/-617)51 files modifiedsrc/UbuntuToolkit/UbuntuToolkit.pro (+43/-8)
src/UbuntuToolkit/privates/shaders/color.frag (+7/-0)
src/UbuntuToolkit/privates/shaders/color.vert (+12/-0)
src/UbuntuToolkit/privates/shaders/color_opaque.frag (+6/-0)
src/UbuntuToolkit/privates/shaders/colormask.frag (+10/-0)
src/UbuntuToolkit/privates/shaders/colormask.vert (+15/-0)
src/UbuntuToolkit/privates/shaders/colormask_opaque.frag (+9/-0)
src/UbuntuToolkit/privates/shaders/fillcenterborder.frag (+14/-0)
src/UbuntuToolkit/privates/shaders/fillcenterborder.vert (+18/-0)
src/UbuntuToolkit/privates/shaders/fillcenterborder_opaque.frag (+12/-0)
src/UbuntuToolkit/privates/shaders/fillcentershadow.frag (+16/-0)
src/UbuntuToolkit/privates/shaders/fillcentershadow.vert (+21/-0)
src/UbuntuToolkit/privates/shaders/fillcentershadow_opaque.frag (+14/-0)
src/UbuntuToolkit/privates/shaders/fillcentershadowborder.frag (+22/-0)
src/UbuntuToolkit/privates/shaders/fillcentershadowborder.vert (+27/-0)
src/UbuntuToolkit/privates/shaders/fillcentershadowborder_opaque.frag (+20/-0)
src/UbuntuToolkit/privates/shaders/fillcornersborder.frag (+17/-0)
src/UbuntuToolkit/privates/shaders/fillcornersborder.vert (+21/-0)
src/UbuntuToolkit/privates/shaders/fillcornersborder_opaque.frag (+16/-0)
src/UbuntuToolkit/privates/shaders/fillcornersshadow.frag (+18/-0)
src/UbuntuToolkit/privates/shaders/fillcornersshadow.vert (+24/-0)
src/UbuntuToolkit/privates/shaders/fillcornersshadow_opaque.frag (+17/-0)
src/UbuntuToolkit/privates/shaders/fillcornersshadowborder.frag (+24/-0)
src/UbuntuToolkit/privates/shaders/fillcornersshadowborder.vert (+30/-0)
src/UbuntuToolkit/privates/shaders/fillcornersshadowborder_opaque.frag (+23/-0)
src/UbuntuToolkit/privates/shaders/frame.frag (+10/-28)
src/UbuntuToolkit/privates/shaders/frame.vert (+0/-34)
src/UbuntuToolkit/privates/shaders/texture2.vert (+18/-0)
src/UbuntuToolkit/privates/ucshape.cpp (+434/-0)
src/UbuntuToolkit/privates/ucshape_p.h (+162/-0)
src/UbuntuToolkit/privates/ucshapedropshadownodes.cpp (+175/-0)
src/UbuntuToolkit/privates/ucshapedropshadownodes_p.h (+57/-0)
src/UbuntuToolkit/privates/ucshapefillnodes.cpp (+1431/-0)
src/UbuntuToolkit/privates/ucshapefillnodes_p.h (+999/-0)
src/UbuntuToolkit/privates/ucshapeframenodes.cpp (+392/-326)
src/UbuntuToolkit/privates/ucshapeframenodes_p.h (+67/-78)
src/UbuntuToolkit/privates/ucshaperesources.cpp (+19/-0)
src/UbuntuToolkit/privates/ucshaperesources_p.h (+285/-0)
src/UbuntuToolkit/privates/ucshapetexturefactory.cpp (+728/-0)
src/UbuntuToolkit/privates/ucshapetexturefactory_p.h (+142/-0)
src/UbuntuToolkit/privates/ucshapeutils_p.h (+134/-0)
src/UbuntuToolkit/resources.qrc (+28/-4)
src/UbuntuToolkit/tools/privates/createprivateshapetextures.cpp (+0/-125)
src/UbuntuToolkit/tools/privates/privates.pro (+0/-5)
src/UbuntuToolkit/ubuntutoolkitmodule.cpp (+2/-2)
src/UbuntuToolkit/ucbottomedge.cpp (+1/-0)
src/UbuntuToolkit/ucbottomedge_p.h (+0/-2)
src/UbuntuToolkit/ucbottomedgeregion.cpp (+2/-0)
src/imports/Components/Themes/Ambiance/1.3/FocusShape.qml (+3/-5)
tests/resources/ubuntushape/QuadTest.qml (+549/-0)
tests/resources/ubuntushape/ZoomPan.qml (+181/-0)
description: | updated |
Changed in ubuntu-ui-toolkit (Ubuntu): | |
importance: | Undecided → High |
tags: |
added: i915 removed: performance |
tags: |
added: performance removed: i915 |
tags: | added: unity8 |
Changed in ubuntu-ui-toolkit (Ubuntu): | |
assignee: | nobody → Loïc Molinari (loic.molinari) |
Changed in ubuntu-ui-toolkit (Ubuntu): | |
status: | Confirmed → In Progress |
Ouch, on the hardware I have access to to test on, even a single Ubuntu Shape in a simple QML file has a massive hit on rendering performance. Rendering times went up 130ms *per shape*!