qopenglengineshadermanager.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/opengl/qopenglengineshadermanager.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10class QOpenGLEngineSharedShadersResource : public QOpenGLSharedResource-
11{-
12public:-
13 QOpenGLEngineSharedShadersResource(QOpenGLContext *ctx)-
14 : QOpenGLSharedResource(ctx->shareGroup())-
15 , m_shaders(new QOpenGLEngineSharedShaders(ctx))-
16 {-
17 }
never executed: end of block
0
18-
19 ~QOpenGLEngineSharedShadersResource()-
20 {-
21 delete m_shaders;-
22 }
never executed: end of block
0
23-
24 void invalidateResource() override-
25 {-
26 delete m_shaders;-
27 m_shaders = 0;-
28 }
never executed: end of block
0
29-
30 void freeResource(QOpenGLContext *) override-
31 {-
32 }-
33-
34 QOpenGLEngineSharedShaders *shaders() const { return
never executed: return m_shaders;
m_shaders;
never executed: return m_shaders;
}
0
35-
36private:-
37 QOpenGLEngineSharedShaders *m_shaders;-
38};-
39-
40class QOpenGLShaderStorage-
41{-
42public:-
43 QOpenGLEngineSharedShaders *shadersForThread(QOpenGLContext *context) {-
44 QOpenGLMultiGroupSharedResource *&shaders = m_storage.localData();-
45 if (!shaders
!shadersDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
46 shaders = new QOpenGLMultiGroupSharedResource;
never executed: shaders = new QOpenGLMultiGroupSharedResource;
0
47 QOpenGLEngineSharedShadersResource *resource =-
48 shaders->value<QOpenGLEngineSharedShadersResource>(context);-
49 return
never executed: return resource ? resource->shaders() : 0;
resource
resourceDescription
TRUEnever evaluated
FALSEnever evaluated
? resource->shaders() : 0;
never executed: return resource ? resource->shaders() : 0;
0
50 }-
51-
52private:-
53 QThreadStorage<QOpenGLMultiGroupSharedResource *> m_storage;-
54};-
55-
56namespace { namespace Q_QGS_qt_shader_storage { typedef QOpenGLShaderStorage Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<QOpenGLShaderStorage, Q_QGS_qt_shader_storage::innerFunction, Q_QGS_qt_shader_storage::guard> qt_shader_storage;;
0
57-
58QOpenGLEngineSharedShaders *QOpenGLEngineSharedShaders::shadersForContext(QOpenGLContext *context)-
59{-
60 return
never executed: return qt_shader_storage()->shadersForThread(context);
qt_shader_storage()->shadersForThread(context);
never executed: return qt_shader_storage()->shadersForThread(context);
0
61}-
62-
63const char* QOpenGLEngineSharedShaders::qShaderSnippets[] = {-
64 0,0,0,0,0,0,0,0,0,0,-
65 0,0,0,0,0,0,0,0,0,0,-
66 0,0,0,0,0,0,0,0,0,0,-
67 0,0,0,0,0-
68};-
69-
70QOpenGLEngineSharedShaders::QOpenGLEngineSharedShaders(QOpenGLContext* context)-
71 : blitShaderProg(0)-
72 , simpleShaderProg(0)-
73{-
74-
75-
76-
77-
78-
79-
80-
81 static bool snippetsPopulated = false;-
82 if (!snippetsPopulated
!snippetsPopulatedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
83-
84 const char** code = qShaderSnippets;-
85-
86 code[MainVertexShader] = qopenglslMainVertexShader;-
87 code[MainWithTexCoordsVertexShader] = qopenglslMainWithTexCoordsVertexShader;-
88 code[MainWithTexCoordsAndOpacityVertexShader] = qopenglslMainWithTexCoordsAndOpacityVertexShader;-
89-
90 code[UntransformedPositionVertexShader] = qopenglslUntransformedPositionVertexShader;-
91 code[PositionOnlyVertexShader] = qopenglslPositionOnlyVertexShader;-
92 code[ComplexGeometryPositionOnlyVertexShader] = qopenglslComplexGeometryPositionOnlyVertexShader;-
93 code[PositionWithPatternBrushVertexShader] = qopenglslPositionWithPatternBrushVertexShader;-
94 code[PositionWithLinearGradientBrushVertexShader] = qopenglslPositionWithLinearGradientBrushVertexShader;-
95 code[PositionWithConicalGradientBrushVertexShader] = qopenglslPositionWithConicalGradientBrushVertexShader;-
96 code[PositionWithRadialGradientBrushVertexShader] = qopenglslPositionWithRadialGradientBrushVertexShader;-
97 code[PositionWithTextureBrushVertexShader] = qopenglslPositionWithTextureBrushVertexShader;-
98 code[AffinePositionWithPatternBrushVertexShader] = qopenglslAffinePositionWithPatternBrushVertexShader;-
99 code[AffinePositionWithLinearGradientBrushVertexShader] = qopenglslAffinePositionWithLinearGradientBrushVertexShader;-
100 code[AffinePositionWithConicalGradientBrushVertexShader] = qopenglslAffinePositionWithConicalGradientBrushVertexShader;-
101 code[AffinePositionWithRadialGradientBrushVertexShader] = qopenglslAffinePositionWithRadialGradientBrushVertexShader;-
102 code[AffinePositionWithTextureBrushVertexShader] = qopenglslAffinePositionWithTextureBrushVertexShader;-
103-
104 code[MainFragmentShader_CMO] = qopenglslMainFragmentShader_CMO;-
105 code[MainFragmentShader_CM] = qopenglslMainFragmentShader_CM;-
106 code[MainFragmentShader_MO] = qopenglslMainFragmentShader_MO;-
107 code[MainFragmentShader_M] = qopenglslMainFragmentShader_M;-
108 code[MainFragmentShader_CO] = qopenglslMainFragmentShader_CO;-
109 code[MainFragmentShader_C] = qopenglslMainFragmentShader_C;-
110 code[MainFragmentShader_O] = qopenglslMainFragmentShader_O;-
111 code[MainFragmentShader] = qopenglslMainFragmentShader;-
112 code[MainFragmentShader_ImageArrays] = qopenglslMainFragmentShader_ImageArrays;-
113-
114 code[ImageSrcFragmentShader] = qopenglslImageSrcFragmentShader;-
115 code[ImageSrcWithPatternFragmentShader] = qopenglslImageSrcWithPatternFragmentShader;-
116 code[NonPremultipliedImageSrcFragmentShader] = qopenglslNonPremultipliedImageSrcFragmentShader;-
117 code[GrayscaleImageSrcFragmentShader] = qopenglslGrayscaleImageSrcFragmentShader;-
118 code[AlphaImageSrcFragmentShader] = qopenglslAlphaImageSrcFragmentShader;-
119 code[CustomImageSrcFragmentShader] = qopenglslCustomSrcFragmentShader;-
120 code[SolidBrushSrcFragmentShader] = qopenglslSolidBrushSrcFragmentShader;-
121 if (context->isOpenGLES()
context->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
122 code[TextureBrushSrcFragmentShader] = qopenglslTextureBrushSrcFragmentShader_ES;
never executed: code[TextureBrushSrcFragmentShader] = qopenglslTextureBrushSrcFragmentShader_ES;
0
123 else-
124 code[TextureBrushSrcFragmentShader] = qopenglslTextureBrushSrcFragmentShader_desktop;
never executed: code[TextureBrushSrcFragmentShader] = qopenglslTextureBrushSrcFragmentShader_desktop;
0
125 code[TextureBrushSrcWithPatternFragmentShader] = qopenglslTextureBrushSrcWithPatternFragmentShader;-
126 code[PatternBrushSrcFragmentShader] = qopenglslPatternBrushSrcFragmentShader;-
127 code[LinearGradientBrushSrcFragmentShader] = qopenglslLinearGradientBrushSrcFragmentShader;-
128 code[RadialGradientBrushSrcFragmentShader] = qopenglslRadialGradientBrushSrcFragmentShader;-
129 code[ConicalGradientBrushSrcFragmentShader] = qopenglslConicalGradientBrushSrcFragmentShader;-
130 code[ShockingPinkSrcFragmentShader] = qopenglslShockingPinkSrcFragmentShader;-
131-
132 code[NoMaskFragmentShader] = "";-
133 code[MaskFragmentShader] = qopenglslMaskFragmentShader;-
134 code[RgbMaskFragmentShaderPass1] = qopenglslRgbMaskFragmentShaderPass1;-
135 code[RgbMaskFragmentShaderPass2] = qopenglslRgbMaskFragmentShaderPass2;-
136 code[RgbMaskWithGammaFragmentShader] = "";-
137-
138 code[NoCompositionModeFragmentShader] = "";-
139 code[MultiplyCompositionModeFragmentShader] = "";-
140 code[ScreenCompositionModeFragmentShader] = "";-
141 code[OverlayCompositionModeFragmentShader] = "";-
142 code[DarkenCompositionModeFragmentShader] = "";-
143 code[LightenCompositionModeFragmentShader] = "";-
144 code[ColorDodgeCompositionModeFragmentShader] = "";-
145 code[ColorBurnCompositionModeFragmentShader] = "";-
146 code[HardLightCompositionModeFragmentShader] = "";-
147 code[SoftLightCompositionModeFragmentShader] = "";-
148 code[DifferenceCompositionModeFragmentShader] = "";-
149 code[ExclusionCompositionModeFragmentShader] = "";-
150-
151-
152-
153 for (int i = 0; i < TotalSnippetCount
i < TotalSnippetCountDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
154 if (qShaderSnippets[i] == 0
qShaderSnippets[i] == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
155 QMessageLogger(__FILE__, 195, __PRETTY_FUNCTION__).fatal("Shader snippet for %s (#%d) is missing!",-
156 snippetNameStr(SnippetName(i)).constData(), i);-
157 }
never executed: end of block
0
158 }
never executed: end of block
0
159-
160 snippetsPopulated = true;-
161 }
never executed: end of block
0
162-
163 QOpenGLShader* fragShader;-
164 QOpenGLShader* vertexShader;-
165 QByteArray vertexSource;-
166 QByteArray fragSource;-
167-
168-
169 vertexSource.append(qShaderSnippets[MainVertexShader]);-
170 vertexSource.append(qShaderSnippets[PositionOnlyVertexShader]);-
171-
172 fragSource.append(qShaderSnippets[MainFragmentShader]);-
173 fragSource.append(qShaderSnippets[ShockingPinkSrcFragmentShader]);-
174-
175 simpleShaderProg = new QOpenGLShaderProgram;-
176-
177 CachedShader simpleShaderCache(fragSource, vertexSource);-
178-
179 bool inCache = simpleShaderCache.load(simpleShaderProg, context);-
180-
181 if (!inCache
!inCacheDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
182 vertexShader = new QOpenGLShader(QOpenGLShader::Vertex);-
183 shaders.append(vertexShader);-
184 if (!vertexShader->compileSourceCode(vertexSource)
!vertexShader-...(vertexSource)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
185 QMessageLogger(__FILE__, 225, __PRETTY_FUNCTION__).warning("Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader) failed to compile");
never executed: QMessageLogger(__FILE__, 225, __PRETTY_FUNCTION__).warning("Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader) failed to compile");
0
186-
187 fragShader = new QOpenGLShader(QOpenGLShader::Fragment);-
188 shaders.append(fragShader);-
189 if (!fragShader->compileSourceCode(fragSource)
!fragShader->c...de(fragSource)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
190 QMessageLogger(__FILE__, 230, __PRETTY_FUNCTION__).warning("Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile");
never executed: QMessageLogger(__FILE__, 230, __PRETTY_FUNCTION__).warning("Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile");
0
191-
192 simpleShaderProg->addShader(vertexShader);-
193 simpleShaderProg->addShader(fragShader);-
194-
195 simpleShaderProg->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR);-
196 simpleShaderProg->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR);-
197 simpleShaderProg->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR);-
198 simpleShaderProg->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR);-
199 }
never executed: end of block
0
200-
201 simpleShaderProg->link();-
202-
203 if (simpleShaderProg->isLinked()
simpleShaderProg->isLinked()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
204 if (!inCache
!inCacheDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
205 simpleShaderCache.store(simpleShaderProg, context);
never executed: simpleShaderCache.store(simpleShaderProg, context);
0
206 }
never executed: end of block
else {
0
207 QMessageLogger(__FILE__, 247, __PRETTY_FUNCTION__).critical("Errors linking simple shader: %s", QString(simpleShaderProg->log()).toLocal8Bit().constData());-
208 }
never executed: end of block
0
209-
210-
211 vertexSource.clear();-
212 vertexSource.append(qShaderSnippets[MainWithTexCoordsVertexShader]);-
213 vertexSource.append(qShaderSnippets[UntransformedPositionVertexShader]);-
214-
215 fragSource.clear();-
216 fragSource.append(qShaderSnippets[MainFragmentShader]);-
217 fragSource.append(qShaderSnippets[ImageSrcFragmentShader]);-
218-
219 blitShaderProg = new QOpenGLShaderProgram;-
220-
221 CachedShader blitShaderCache(fragSource, vertexSource);-
222-
223 inCache = blitShaderCache.load(blitShaderProg, context);-
224-
225 if (!inCache
!inCacheDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
226 vertexShader = new QOpenGLShader(QOpenGLShader::Vertex);-
227 shaders.append(vertexShader);-
228 if (!vertexShader->compileSourceCode(vertexSource)
!vertexShader-...(vertexSource)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
229 QMessageLogger(__FILE__, 269, __PRETTY_FUNCTION__).warning("Vertex shader for blitShaderProg (MainWithTexCoordsVertexShader & UntransformedPositionVertexShader) failed to compile");
never executed: QMessageLogger(__FILE__, 269, __PRETTY_FUNCTION__).warning("Vertex shader for blitShaderProg (MainWithTexCoordsVertexShader & UntransformedPositionVertexShader) failed to compile");
0
230-
231 fragShader = new QOpenGLShader(QOpenGLShader::Fragment);-
232 shaders.append(fragShader);-
233 if (!fragShader->compileSourceCode(fragSource)
!fragShader->c...de(fragSource)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
234 QMessageLogger(__FILE__, 274, __PRETTY_FUNCTION__).warning("Fragment shader for blitShaderProg (MainFragmentShader & ImageSrcFragmentShader) failed to compile");
never executed: QMessageLogger(__FILE__, 274, __PRETTY_FUNCTION__).warning("Fragment shader for blitShaderProg (MainFragmentShader & ImageSrcFragmentShader) failed to compile");
0
235-
236 blitShaderProg->addShader(vertexShader);-
237 blitShaderProg->addShader(fragShader);-
238-
239 blitShaderProg->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR);-
240 blitShaderProg->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR);-
241 }
never executed: end of block
0
242-
243 blitShaderProg->link();-
244 if (blitShaderProg->isLinked()
blitShaderProg->isLinked()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
245 if (!inCache
!inCacheDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
246 blitShaderCache.store(blitShaderProg, context);
never executed: blitShaderCache.store(blitShaderProg, context);
0
247 }
never executed: end of block
else {
0
248 QMessageLogger(__FILE__, 288, __PRETTY_FUNCTION__).critical("Errors linking blit shader: %s", QString(blitShaderProg->log()).toLocal8Bit().constData());-
249 }
never executed: end of block
0
250-
251-
252-
253-
254}-
255-
256QOpenGLEngineSharedShaders::~QOpenGLEngineSharedShaders()-
257{-
258-
259-
260-
261 qDeleteAll(shaders);-
262 shaders.clear();-
263-
264 qDeleteAll(cachedPrograms);-
265 cachedPrograms.clear();-
266-
267 if (blitShaderProg
blitShaderProgDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
268 delete blitShaderProg;-
269 blitShaderProg = 0;-
270 }
never executed: end of block
0
271-
272 if (simpleShaderProg
simpleShaderProgDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
273 delete simpleShaderProg;-
274 simpleShaderProg = 0;-
275 }
never executed: end of block
0
276}
never executed: end of block
0
277-
278-
279QByteArray QOpenGLEngineSharedShaders::snippetNameStr(SnippetName name)-
280{-
281 QMetaEnum m = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("SnippetName"));-
282 return
never executed: return QByteArray(m.valueToKey(name));
QByteArray(m.valueToKey(name));
never executed: return QByteArray(m.valueToKey(name));
0
283}-
284-
285-
286-
287-
288QOpenGLEngineShaderProg *QOpenGLEngineSharedShaders::findProgramInCache(const QOpenGLEngineShaderProg &prog)-
289{-
290 for (int i = 0; i < cachedPrograms.size()
i < cachedPrograms.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
291 QOpenGLEngineShaderProg *cachedProg = cachedPrograms[i];-
292 if (*
*cachedProg == progDescription
TRUEnever evaluated
FALSEnever evaluated
cachedProg == prog
*cachedProg == progDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
293-
294 cachedPrograms.move(i, 0);-
295 cachedProg->program->bind();-
296 return
never executed: return cachedProg;
cachedProg;
never executed: return cachedProg;
0
297 }-
298 }
never executed: end of block
0
299-
300 QScopedPointer<QOpenGLEngineShaderProg> newProg;-
301-
302 do {-
303 QByteArray fragSource;-
304-
305-
306 if (prog.srcPixelFragShader == CustomImageSrcFragmentShader
prog.srcPixelF...FragmentShaderDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
307 fragSource.append(prog.customStageSource);
never executed: fragSource.append(prog.customStageSource);
0
308 fragSource.append(qShaderSnippets[prog.mainFragShader]);-
309 fragSource.append(qShaderSnippets[prog.srcPixelFragShader]);-
310 if (prog.compositionFragShader
prog.compositionFragShaderDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
311 fragSource.append(qShaderSnippets[prog.compositionFragShader]);
never executed: fragSource.append(qShaderSnippets[prog.compositionFragShader]);
0
312 if (prog.maskFragShader
prog.maskFragShaderDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
313 fragSource.append(qShaderSnippets[prog.maskFragShader]);
never executed: fragSource.append(qShaderSnippets[prog.maskFragShader]);
0
314-
315 QByteArray vertexSource;-
316 vertexSource.append(qShaderSnippets[prog.mainVertexShader]);-
317 vertexSource.append(qShaderSnippets[prog.positionVertexShader]);-
318-
319 QScopedPointer<QOpenGLShaderProgram> shaderProgram(new QOpenGLShaderProgram);-
320-
321 CachedShader shaderCache(fragSource, vertexSource);-
322 bool inCache = shaderCache.load(shaderProgram.data(), QOpenGLContext::currentContext());-
323-
324 if (!inCache
!inCacheDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
325-
326 QScopedPointer<QOpenGLShader> fragShader(new QOpenGLShader(QOpenGLShader::Fragment));-
327 QByteArray description;-
328-
329-
330 description.append("Fragment shader: main=");-
331 description.append(snippetNameStr(prog.mainFragShader));-
332 description.append(", srcPixel=");-
333 description.append(snippetNameStr(prog.srcPixelFragShader));-
334 if (prog.compositionFragShader
prog.compositionFragShaderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
335 description.append(", composition=");-
336 description.append(snippetNameStr(prog.compositionFragShader));-
337 }
never executed: end of block
0
338 if (prog.maskFragShader
prog.maskFragShaderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
339 description.append(", mask=");-
340 description.append(snippetNameStr(prog.maskFragShader));-
341 }
never executed: end of block
0
342 fragShader->setObjectName(QString::fromLatin1(description));-
343-
344 if (!fragShader->compileSourceCode(fragSource)
!fragShader->c...de(fragSource)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
345 QMessageLogger(__FILE__, 385, __PRETTY_FUNCTION__).warning() << "Warning:" << description << "failed to compile!";-
346 break;
never executed: break;
0
347 }-
348-
349 QScopedPointer<QOpenGLShader> vertexShader(new QOpenGLShader(QOpenGLShader::Vertex));-
350-
351-
352 description.clear();-
353 description.append("Vertex shader: main=");-
354 description.append(snippetNameStr(prog.mainVertexShader));-
355 description.append(", position=");-
356 description.append(snippetNameStr(prog.positionVertexShader));-
357 vertexShader->setObjectName(QString::fromLatin1(description));-
358-
359 if (!vertexShader->compileSourceCode(vertexSource)
!vertexShader-...(vertexSource)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
360 QMessageLogger(__FILE__, 400, __PRETTY_FUNCTION__).warning() << "Warning:" << description << "failed to compile!";-
361 break;
never executed: break;
0
362 }-
363-
364 shaders.append(vertexShader.data());-
365 shaders.append(fragShader.data());-
366 shaderProgram->addShader(vertexShader.take());-
367 shaderProgram->addShader(fragShader.take());-
368-
369-
370 shaderProgram->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR);-
371 if (prog.useTextureCoords
prog.useTextureCoordsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
372 shaderProgram->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR);
never executed: shaderProgram->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR);
0
373 if (prog.useOpacityAttribute
prog.useOpacityAttributeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
374 shaderProgram->bindAttributeLocation("opacityArray", QT_OPACITY_ATTR);
never executed: shaderProgram->bindAttributeLocation("opacityArray", QT_OPACITY_ATTR);
0
375 if (prog.usePmvMatrixAttribute
prog.usePmvMatrixAttributeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
376 shaderProgram->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR);-
377 shaderProgram->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR);-
378 shaderProgram->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR);-
379 }
never executed: end of block
0
380 }
never executed: end of block
0
381-
382 newProg.reset(new QOpenGLEngineShaderProg(prog));-
383 newProg->program = shaderProgram.take();-
384-
385 newProg->program->link();-
386 if (newProg->program->isLinked()
newProg->program->isLinked()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
387 if (!inCache
!inCacheDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
388 shaderCache.store(newProg->program, QOpenGLContext::currentContext());
never executed: shaderCache.store(newProg->program, QOpenGLContext::currentContext());
0
389 }
never executed: end of block
else {
0
390 QString error;-
391 error = QLatin1String("Shader program failed to link,");-
392-
393 QLatin1String br("\n");-
394 error += QLatin1String("\n Shaders Used:\n");-
395 for (int i = 0; i < newProg->program->shaders().count()
i < newProg->p...ders().count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
396 QOpenGLShader *shader = newProg->program->shaders().at(i);-
397 error += QLatin1String(" ") + shader->objectName() + QLatin1String(": \n")-
398 + QLatin1String(shader->sourceCode()) + br;-
399 }
never executed: end of block
0
400-
401 error += QLatin1String(" Error Log:\n")-
402 + QLatin1String(" ") + newProg->program->log();-
403 QMessageLogger(__FILE__, 443, __PRETTY_FUNCTION__).warning() << error;-
404 break;
never executed: break;
0
405 }-
406-
407 newProg->program->bind();-
408-
409 if (newProg->maskFragShader != QOpenGLEngineSharedShaders::NoMaskFragmentShader
newProg->maskF...FragmentShaderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
410 GLuint location = newProg->program->uniformLocation("maskTexture");-
411 newProg->program->setUniformValue(location, GLuint(1));-
412 }
never executed: end of block
0
413-
414 if (cachedPrograms.count() > 30
cachedPrograms.count() > 30Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
415-
416-
417-
418 for (int i = 0; i < 5
i < 5Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
419 delete cachedPrograms.last();-
420 cachedPrograms.removeLast();-
421 }
never executed: end of block
0
422 }
never executed: end of block
0
423-
424 cachedPrograms.insert(0, newProg.data());-
425 } while (false);-
426-
427 return
never executed: return newProg.take();
newProg.take();
never executed: return newProg.take();
0
428}-
429-
430void QOpenGLEngineSharedShaders::cleanupCustomStage(QOpenGLCustomShaderStage* stage)-
431{-
432-
433 for (int i = 0; i < cachedPrograms.size()
i < cachedPrograms.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
434 QOpenGLEngineShaderProg *cachedProg = cachedPrograms[i];-
435 if (cachedProg->customStageSource == stage->source()
cachedProg->cu...tage->source()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
436 delete cachedProg;-
437 cachedPrograms.removeAt(i);-
438 i--;-
439 }
never executed: end of block
0
440 }
never executed: end of block
0
441}
never executed: end of block
0
442-
443-
444QOpenGLEngineShaderManager::QOpenGLEngineShaderManager(QOpenGLContext* context)-
445 : ctx(context),-
446 shaderProgNeedsChanging(true),-
447 complexGeometry(false),-
448 srcPixelType(Qt::NoBrush),-
449 opacityMode(NoOpacity),-
450 maskType(NoMask),-
451 compositionMode(QPainter::CompositionMode_SourceOver),-
452 customSrcStage(0),-
453 currentShaderProg(0)-
454{-
455 sharedShaders = QOpenGLEngineSharedShaders::shadersForContext(context);-
456}
never executed: end of block
0
457-
458QOpenGLEngineShaderManager::~QOpenGLEngineShaderManager()-
459{-
460-
461 removeCustomStage();-
462}
never executed: end of block
0
463-
464GLuint QOpenGLEngineShaderManager::getUniformLocation(Uniform id)-
465{-
466 if (!currentShaderProg
!currentShaderProgDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
467 return
never executed: return 0;
0;
never executed: return 0;
0
468-
469 QVector<uint> &uniformLocations = currentShaderProg->uniformLocations;-
470 if (uniformLocations.isEmpty()
uniformLocations.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
471 uniformLocations.fill(GLuint(-1), NumUniforms);
never executed: uniformLocations.fill(GLuint(-1), NumUniforms);
0
472-
473 static const char *const uniformNames[] = {-
474 "imageTexture",-
475 "patternColor",-
476 "globalOpacity",-
477 "depth",-
478 "maskTexture",-
479 "fragmentColor",-
480 "linearData",-
481 "angle",-
482 "halfViewportSize",-
483 "fmp",-
484 "fmp2_m_radius2",-
485 "inverse_2_fmp2_m_radius2",-
486 "sqrfr",-
487 "bradius",-
488 "invertedTextureSize",-
489 "brushTransform",-
490 "brushTexture",-
491 "matrix"-
492 };-
493-
494 if (uniformLocations.at(id) == GLuint(-1)
uniformLocatio... == GLuint(-1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
495 uniformLocations[id] = currentShaderProg->program->uniformLocation(uniformNames[id]);
never executed: uniformLocations[id] = currentShaderProg->program->uniformLocation(uniformNames[id]);
0
496-
497 return
never executed: return uniformLocations.at(id);
uniformLocations.at(id);
never executed: return uniformLocations.at(id);
0
498}-
499-
500-
501void QOpenGLEngineShaderManager::optimiseForBrushTransform(QTransform::TransformationType transformType)-
502{-
503 (void)transformType;;-
504}
never executed: end of block
0
505-
506void QOpenGLEngineShaderManager::setDirty()-
507{-
508 shaderProgNeedsChanging = true;-
509}
never executed: end of block
0
510-
511void QOpenGLEngineShaderManager::setSrcPixelType(Qt::BrushStyle style)-
512{-
513 ((!(style != Qt::NoBrush)) ? qt_assert("style != Qt::NoBrush",__FILE__,553) : qt_noop());-
514 if (srcPixelType == PixelSrcType(style)
srcPixelType =...SrcType(style)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
515 return;
never executed: return;
0
516-
517 srcPixelType = style;-
518 shaderProgNeedsChanging = true;-
519}
never executed: end of block
0
520-
521void QOpenGLEngineShaderManager::setSrcPixelType(PixelSrcType type)-
522{-
523 if (srcPixelType == type
srcPixelType == typeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
524 return;
never executed: return;
0
525-
526 srcPixelType = type;-
527 shaderProgNeedsChanging = true;-
528}
never executed: end of block
0
529-
530void QOpenGLEngineShaderManager::setOpacityMode(OpacityMode mode)-
531{-
532 if (opacityMode == mode
opacityMode == modeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
533 return;
never executed: return;
0
534-
535 opacityMode = mode;-
536 shaderProgNeedsChanging = true;-
537}
never executed: end of block
0
538-
539void QOpenGLEngineShaderManager::setMaskType(MaskType type)-
540{-
541 if (maskType == type
maskType == typeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
542 return;
never executed: return;
0
543-
544 maskType = type;-
545 shaderProgNeedsChanging = true;-
546}
never executed: end of block
0
547-
548void QOpenGLEngineShaderManager::setCompositionMode(QPainter::CompositionMode mode)-
549{-
550 if (compositionMode == mode
compositionMode == modeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
551 return;
never executed: return;
0
552-
553 compositionMode = mode;-
554 shaderProgNeedsChanging = true;-
555}
never executed: end of block
0
556-
557void QOpenGLEngineShaderManager::setCustomStage(QOpenGLCustomShaderStage* stage)-
558{-
559 if (customSrcStage
customSrcStageDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
560 removeCustomStage();
never executed: removeCustomStage();
0
561 customSrcStage = stage;-
562 shaderProgNeedsChanging = true;-
563}
never executed: end of block
0
564-
565void QOpenGLEngineShaderManager::removeCustomStage()-
566{-
567 if (customSrcStage
customSrcStageDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
568 customSrcStage->setInactive();
never executed: customSrcStage->setInactive();
0
569 customSrcStage = 0;-
570 shaderProgNeedsChanging = true;-
571}
never executed: end of block
0
572-
573QOpenGLShaderProgram* QOpenGLEngineShaderManager::currentProgram()-
574{-
575 if (currentShaderProg
currentShaderProgDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
576 return
never executed: return currentShaderProg->program;
currentShaderProg->program;
never executed: return currentShaderProg->program;
0
577 else-
578 return
never executed: return sharedShaders->simpleProgram();
sharedShaders->simpleProgram();
never executed: return sharedShaders->simpleProgram();
0
579}-
580-
581void QOpenGLEngineShaderManager::useSimpleProgram()-
582{-
583 sharedShaders->simpleProgram()->bind();-
584 QOpenGLContextPrivate* ctx_d = ctx->d_func();-
585 (void)ctx_d;;-
586-
587 QOpenGL2PaintEngineEx *active_engine = static_cast<QOpenGL2PaintEngineEx *>(ctx_d->active_engine);-
588-
589 active_engine->d_func()->setVertexAttribArrayEnabled(QT_VERTEX_COORDS_ATTR, true);-
590 active_engine->d_func()->setVertexAttribArrayEnabled(QT_TEXTURE_COORDS_ATTR, false);-
591 active_engine->d_func()->setVertexAttribArrayEnabled(QT_OPACITY_ATTR, false);-
592-
593 shaderProgNeedsChanging = true;-
594}
never executed: end of block
0
595-
596void QOpenGLEngineShaderManager::useBlitProgram()-
597{-
598 sharedShaders->blitProgram()->bind();-
599 QOpenGLContextPrivate* ctx_d = ctx->d_func();-
600 QOpenGL2PaintEngineEx *active_engine = static_cast<QOpenGL2PaintEngineEx *>(ctx_d->active_engine);-
601 active_engine->d_func()->setVertexAttribArrayEnabled(QT_VERTEX_COORDS_ATTR, true);-
602 active_engine->d_func()->setVertexAttribArrayEnabled(QT_TEXTURE_COORDS_ATTR, true);-
603 active_engine->d_func()->setVertexAttribArrayEnabled(QT_OPACITY_ATTR, false);-
604 shaderProgNeedsChanging = true;-
605}
never executed: end of block
0
606-
607QOpenGLShaderProgram* QOpenGLEngineShaderManager::simpleProgram()-
608{-
609 return
never executed: return sharedShaders->simpleProgram();
sharedShaders->simpleProgram();
never executed: return sharedShaders->simpleProgram();
0
610}-
611-
612QOpenGLShaderProgram* QOpenGLEngineShaderManager::blitProgram()-
613{-
614 return
never executed: return sharedShaders->blitProgram();
sharedShaders->blitProgram();
never executed: return sharedShaders->blitProgram();
0
615}-
616-
617-
618-
619-
620-
621bool QOpenGLEngineShaderManager::useCorrectShaderProg()-
622{-
623 if (!shaderProgNeedsChanging
!shaderProgNeedsChangingDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
624 return
never executed: return false;
false;
never executed: return false;
0
625-
626 bool useCustomSrc = customSrcStage != 0;-
627 if (useCustomSrc
useCustomSrcDescription
TRUEnever evaluated
FALSEnever evaluated
&& srcPixelType != QOpenGLEngineShaderManager::ImageSrc
srcPixelType !...ager::ImageSrcDescription
TRUEnever evaluated
FALSEnever evaluated
&& srcPixelType != Qt::TexturePattern
srcPixelType !...TexturePatternDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
628 useCustomSrc = false;-
629 QMessageLogger(__FILE__, 669, __PRETTY_FUNCTION__).warning("QOpenGLEngineShaderManager - Ignoring custom shader stage for non image src");-
630 }
never executed: end of block
0
631-
632 QOpenGLEngineShaderProg requiredProgram;-
633-
634 bool texCoords = false;-
635-
636-
637-
638 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::InvalidSnippetName;-
639 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::InvalidSnippetName;-
640 bool isAffine = brushTransform.isAffine();-
641 if ( (
(srcPixelType ...Dense1Pattern)Description
TRUEnever evaluated
FALSEnever evaluated
srcPixelType >= Qt::Dense1Pattern)
(srcPixelType ...Dense1Pattern)Description
TRUEnever evaluated
FALSEnever evaluated
&& (
(srcPixelType ...gCrossPattern)Description
TRUEnever evaluated
FALSEnever evaluated
srcPixelType <= Qt::DiagCrossPattern)
(srcPixelType ...gCrossPattern)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
642 if (isAffine
isAffineDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
643 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::AffinePositionWithPatternBrushVertexShader;
never executed: requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::AffinePositionWithPatternBrushVertexShader;
0
644 else-
645 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionWithPatternBrushVertexShader;
never executed: requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionWithPatternBrushVertexShader;
0
646-
647 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::PatternBrushSrcFragmentShader;-
648 }
never executed: end of block
0
649 else switch (srcPixelType) {-
650 default
never executed: default:
:
never executed: default:
0
651 case
never executed: case Qt::NoBrush:
Qt::NoBrush:
never executed: case Qt::NoBrush:
0
652 QMessageLogger(__FILE__, 692, __PRETTY_FUNCTION__).fatal("QOpenGLEngineShaderManager::useCorrectShaderProg() - Qt::NoBrush style is set");-
653 break;
never executed: break;
0
654 case
never executed: case QOpenGLEngineShaderManager::ImageSrc:
QOpenGLEngineShaderManager::ImageSrc:
never executed: case QOpenGLEngineShaderManager::ImageSrc:
0
655 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::ImageSrcFragmentShader;-
656 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionOnlyVertexShader;-
657 texCoords = true;-
658 break;
never executed: break;
0
659 case
never executed: case QOpenGLEngineShaderManager::NonPremultipliedImageSrc:
QOpenGLEngineShaderManager::NonPremultipliedImageSrc:
never executed: case QOpenGLEngineShaderManager::NonPremultipliedImageSrc:
0
660 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::NonPremultipliedImageSrcFragmentShader;-
661 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionOnlyVertexShader;-
662 texCoords = true;-
663 break;
never executed: break;
0
664 case
never executed: case QOpenGLEngineShaderManager::GrayscaleImageSrc:
QOpenGLEngineShaderManager::GrayscaleImageSrc:
never executed: case QOpenGLEngineShaderManager::GrayscaleImageSrc:
0
665 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::GrayscaleImageSrcFragmentShader;-
666 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionOnlyVertexShader;-
667 texCoords = true;-
668 break;
never executed: break;
0
669 case
never executed: case QOpenGLEngineShaderManager::AlphaImageSrc:
QOpenGLEngineShaderManager::AlphaImageSrc:
never executed: case QOpenGLEngineShaderManager::AlphaImageSrc:
0
670 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::AlphaImageSrcFragmentShader;-
671 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionOnlyVertexShader;-
672 texCoords = true;-
673 break;
never executed: break;
0
674 case
never executed: case QOpenGLEngineShaderManager::PatternSrc:
QOpenGLEngineShaderManager::PatternSrc:
never executed: case QOpenGLEngineShaderManager::PatternSrc:
0
675 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::ImageSrcWithPatternFragmentShader;-
676 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionOnlyVertexShader;-
677 texCoords = true;-
678 break;
never executed: break;
0
679 case
never executed: case QOpenGLEngineShaderManager::TextureSrcWithPattern:
QOpenGLEngineShaderManager::TextureSrcWithPattern:
never executed: case QOpenGLEngineShaderManager::TextureSrcWithPattern:
0
680 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::TextureBrushSrcWithPatternFragmentShader;-
681 requiredProgram.positionVertexShader = isAffine
isAffineDescription
TRUEnever evaluated
FALSEnever evaluated
? QOpenGLEngineSharedShaders::AffinePositionWithTextureBrushVertexShader
0
682 : QOpenGLEngineSharedShaders::PositionWithTextureBrushVertexShader;-
683 break;
never executed: break;
0
684 case
never executed: case Qt::SolidPattern:
Qt::SolidPattern:
never executed: case Qt::SolidPattern:
0
685 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::SolidBrushSrcFragmentShader;-
686 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::PositionOnlyVertexShader;-
687 break;
never executed: break;
0
688 case
never executed: case Qt::LinearGradientPattern:
Qt::LinearGradientPattern:
never executed: case Qt::LinearGradientPattern:
0
689 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::LinearGradientBrushSrcFragmentShader;-
690 requiredProgram.positionVertexShader = isAffine
isAffineDescription
TRUEnever evaluated
FALSEnever evaluated
? QOpenGLEngineSharedShaders::AffinePositionWithLinearGradientBrushVertexShader
0
691 : QOpenGLEngineSharedShaders::PositionWithLinearGradientBrushVertexShader;-
692 break;
never executed: break;
0
693 case
never executed: case Qt::ConicalGradientPattern:
Qt::ConicalGradientPattern:
never executed: case Qt::ConicalGradientPattern:
0
694 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::ConicalGradientBrushSrcFragmentShader;-
695 requiredProgram.positionVertexShader = isAffine
isAffineDescription
TRUEnever evaluated
FALSEnever evaluated
? QOpenGLEngineSharedShaders::AffinePositionWithConicalGradientBrushVertexShader
0
696 : QOpenGLEngineSharedShaders::PositionWithConicalGradientBrushVertexShader;-
697 break;
never executed: break;
0
698 case
never executed: case Qt::RadialGradientPattern:
Qt::RadialGradientPattern:
never executed: case Qt::RadialGradientPattern:
0
699 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::RadialGradientBrushSrcFragmentShader;-
700 requiredProgram.positionVertexShader = isAffine
isAffineDescription
TRUEnever evaluated
FALSEnever evaluated
? QOpenGLEngineSharedShaders::AffinePositionWithRadialGradientBrushVertexShader
0
701 : QOpenGLEngineSharedShaders::PositionWithRadialGradientBrushVertexShader;-
702 break;
never executed: break;
0
703 case
never executed: case Qt::TexturePattern:
Qt::TexturePattern:
never executed: case Qt::TexturePattern:
0
704 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::TextureBrushSrcFragmentShader;-
705 requiredProgram.positionVertexShader = isAffine
isAffineDescription
TRUEnever evaluated
FALSEnever evaluated
? QOpenGLEngineSharedShaders::AffinePositionWithTextureBrushVertexShader
0
706 : QOpenGLEngineSharedShaders::PositionWithTextureBrushVertexShader;-
707 break;
never executed: break;
0
708 };-
709-
710 if (useCustomSrc
useCustomSrcDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
711 requiredProgram.srcPixelFragShader = QOpenGLEngineSharedShaders::CustomImageSrcFragmentShader;-
712 requiredProgram.customStageSource = customSrcStage->source();-
713 }
never executed: end of block
0
714-
715 const bool hasCompose = compositionMode > QPainter::CompositionMode_Plus;-
716 const bool hasMask = maskType != QOpenGLEngineShaderManager::NoMask;-
717-
718-
719 if (opacityMode == AttributeOpacity
opacityMode ==...tributeOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
720 ((!(!hasCompose && !hasMask)) ? qt_assert("!hasCompose && !hasMask",__FILE__,760) : qt_noop());-
721 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_ImageArrays;-
722 }
never executed: end of block
else {
0
723 bool useGlobalOpacity = (opacityMode == UniformOpacity);-
724 if (hasCompose
hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& hasMask
hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& useGlobalOpacity
useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
725 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_CMO;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_CMO;
0
726 if (hasCompose
hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& hasMask
hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& !useGlobalOpacity
!useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
727 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_CM;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_CM;
0
728 if (!hasCompose
!hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& hasMask
hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& useGlobalOpacity
useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
729 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_MO;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_MO;
0
730 if (!hasCompose
!hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& hasMask
hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& !useGlobalOpacity
!useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
731 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_M;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_M;
0
732 if (hasCompose
hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !hasMask
!hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& useGlobalOpacity
useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
733 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_CO;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_CO;
0
734 if (hasCompose
hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !hasMask
!hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& !useGlobalOpacity
!useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
735 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_C;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_C;
0
736 if (!hasCompose
!hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !hasMask
!hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& useGlobalOpacity
useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
737 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_O;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader_O;
0
738 if (!hasCompose
!hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
&& !hasMask
!hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
&& !useGlobalOpacity
!useGlobalOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
739 requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader;
never executed: requiredProgram.mainFragShader = QOpenGLEngineSharedShaders::MainFragmentShader;
0
740 }
never executed: end of block
0
741-
742 if (hasMask
hasMaskDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
743 if (maskType == PixelMask
maskType == PixelMaskDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
744 requiredProgram.maskFragShader = QOpenGLEngineSharedShaders::MaskFragmentShader;-
745 texCoords = true;-
746 }
never executed: end of block
else if (maskType == SubPixelMaskPass1
maskType == SubPixelMaskPass1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
747 requiredProgram.maskFragShader = QOpenGLEngineSharedShaders::RgbMaskFragmentShaderPass1;-
748 texCoords = true;-
749 }
never executed: end of block
else if (maskType == SubPixelMaskPass2
maskType == SubPixelMaskPass2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
750 requiredProgram.maskFragShader = QOpenGLEngineSharedShaders::RgbMaskFragmentShaderPass2;-
751 texCoords = true;-
752 }
never executed: end of block
else if (maskType == SubPixelWithGammaMask
maskType == Su...lWithGammaMaskDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
753 requiredProgram.maskFragShader = QOpenGLEngineSharedShaders::RgbMaskWithGammaFragmentShader;-
754 texCoords = true;-
755 }
never executed: end of block
else {
0
756 QMessageLogger(__FILE__, 796, __PRETTY_FUNCTION__).critical("QOpenGLEngineShaderManager::useCorrectShaderProg() - Unknown mask type");-
757 }
never executed: end of block
0
758 } else {-
759 requiredProgram.maskFragShader = QOpenGLEngineSharedShaders::NoMaskFragmentShader;-
760 }
never executed: end of block
0
761-
762 if (hasCompose
hasComposeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
763 switch (compositionMode) {-
764 case
never executed: case QPainter::CompositionMode_Multiply:
QPainter::CompositionMode_Multiply:
never executed: case QPainter::CompositionMode_Multiply:
0
765 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::MultiplyCompositionModeFragmentShader;-
766 break;
never executed: break;
0
767 case
never executed: case QPainter::CompositionMode_Screen:
QPainter::CompositionMode_Screen:
never executed: case QPainter::CompositionMode_Screen:
0
768 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::ScreenCompositionModeFragmentShader;-
769 break;
never executed: break;
0
770 case
never executed: case QPainter::CompositionMode_Overlay:
QPainter::CompositionMode_Overlay:
never executed: case QPainter::CompositionMode_Overlay:
0
771 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::OverlayCompositionModeFragmentShader;-
772 break;
never executed: break;
0
773 case
never executed: case QPainter::CompositionMode_Darken:
QPainter::CompositionMode_Darken:
never executed: case QPainter::CompositionMode_Darken:
0
774 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::DarkenCompositionModeFragmentShader;-
775 break;
never executed: break;
0
776 case
never executed: case QPainter::CompositionMode_Lighten:
QPainter::CompositionMode_Lighten:
never executed: case QPainter::CompositionMode_Lighten:
0
777 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::LightenCompositionModeFragmentShader;-
778 break;
never executed: break;
0
779 case
never executed: case QPainter::CompositionMode_ColorDodge:
QPainter::CompositionMode_ColorDodge:
never executed: case QPainter::CompositionMode_ColorDodge:
0
780 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::ColorDodgeCompositionModeFragmentShader;-
781 break;
never executed: break;
0
782 case
never executed: case QPainter::CompositionMode_ColorBurn:
QPainter::CompositionMode_ColorBurn:
never executed: case QPainter::CompositionMode_ColorBurn:
0
783 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::ColorBurnCompositionModeFragmentShader;-
784 break;
never executed: break;
0
785 case
never executed: case QPainter::CompositionMode_HardLight:
QPainter::CompositionMode_HardLight:
never executed: case QPainter::CompositionMode_HardLight:
0
786 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::HardLightCompositionModeFragmentShader;-
787 break;
never executed: break;
0
788 case
never executed: case QPainter::CompositionMode_SoftLight:
QPainter::CompositionMode_SoftLight:
never executed: case QPainter::CompositionMode_SoftLight:
0
789 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::SoftLightCompositionModeFragmentShader;-
790 break;
never executed: break;
0
791 case
never executed: case QPainter::CompositionMode_Difference:
QPainter::CompositionMode_Difference:
never executed: case QPainter::CompositionMode_Difference:
0
792 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::DifferenceCompositionModeFragmentShader;-
793 break;
never executed: break;
0
794 case
never executed: case QPainter::CompositionMode_Exclusion:
QPainter::CompositionMode_Exclusion:
never executed: case QPainter::CompositionMode_Exclusion:
0
795 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::ExclusionCompositionModeFragmentShader;-
796 break;
never executed: break;
0
797 default
never executed: default:
:
never executed: default:
0
798 QMessageLogger(__FILE__, 838, __PRETTY_FUNCTION__).warning("QOpenGLEngineShaderManager::useCorrectShaderProg() - Unsupported composition mode");-
799 }
never executed: end of block
0
800 } else {-
801 requiredProgram.compositionFragShader = QOpenGLEngineSharedShaders::NoCompositionModeFragmentShader;-
802 }
never executed: end of block
0
803-
804-
805 if (opacityMode == AttributeOpacity
opacityMode ==...tributeOpacityDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
806 ((!(texCoords)) ? qt_assert("texCoords",__FILE__,846) : qt_noop());-
807 requiredProgram.mainVertexShader = QOpenGLEngineSharedShaders::MainWithTexCoordsAndOpacityVertexShader;-
808 }
never executed: end of block
else if (texCoords
texCoordsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
809 requiredProgram.mainVertexShader = QOpenGLEngineSharedShaders::MainWithTexCoordsVertexShader;-
810 }
never executed: end of block
else {
0
811 requiredProgram.mainVertexShader = QOpenGLEngineSharedShaders::MainVertexShader;-
812 }
never executed: end of block
0
813 requiredProgram.useTextureCoords = texCoords;-
814 requiredProgram.useOpacityAttribute = (opacityMode == AttributeOpacity);-
815 if (complexGeometry
complexGeometryDescription
TRUEnever evaluated
FALSEnever evaluated
&& srcPixelType == Qt::SolidPattern
srcPixelType =...::SolidPatternDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
816 requiredProgram.positionVertexShader = QOpenGLEngineSharedShaders::ComplexGeometryPositionOnlyVertexShader;-
817 requiredProgram.usePmvMatrixAttribute = false;-
818 }
never executed: end of block
else {
0
819 requiredProgram.usePmvMatrixAttribute = true;-
820-
821-
822-
823 complexGeometry = false;-
824 }
never executed: end of block
0
825-
826-
827 currentShaderProg = sharedShaders->findProgramInCache(requiredProgram);-
828-
829 if (currentShaderProg
currentShaderProgDescription
TRUEnever evaluated
FALSEnever evaluated
&& useCustomSrc
useCustomSrcDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
830 customSrcStage->setUniforms(currentShaderProg->program);-
831 }
never executed: end of block
0
832-
833-
834-
835 QOpenGLContextPrivate* ctx_d = ctx->d_func();-
836 QOpenGL2PaintEngineEx *active_engine = static_cast<QOpenGL2PaintEngineEx *>(ctx_d->active_engine);-
837 active_engine->d_func()->setVertexAttribArrayEnabled(QT_VERTEX_COORDS_ATTR, true);-
838 active_engine->d_func()->setVertexAttribArrayEnabled(QT_TEXTURE_COORDS_ATTR, currentShaderProg && currentShaderProg->useTextureCoords);-
839 active_engine->d_func()->setVertexAttribArrayEnabled(QT_OPACITY_ATTR, currentShaderProg && currentShaderProg->useOpacityAttribute);-
840-
841 shaderProgNeedsChanging = false;-
842 return
never executed: return true;
true;
never executed: return true;
0
843}-
844-
845-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9