OpenCoverage

qsgcompressedtexture.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/scenegraph/compressedtexture/qsgcompressedtexture.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4const QLoggingCategory &QSG_LOG_TEXTUREIO() { static const QLoggingCategory category("qt.scenegraph.textureio"); return
never executed: return category;
category;
never executed: return category;
};
0
5-
6bool QSGCompressedTextureData::isValid() const-
7{-
8 if (data.isNull()
data.isNull()Description
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
|| size.isEmpty()
size.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
|| !format
!formatDescription
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
)
0-110
9 return
never executed: return false;
false;
never executed: return false;
0
10 if (dataLength < 0
dataLength < 0Description
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
|| dataOffset < 0
dataOffset < 0Description
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
|| dataOffset >= data.length()
dataOffset >= data.length()Description
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
)
0-110
11 return
never executed: return false;
false;
never executed: return false;
0
12 if (dataLength > 0
dataLength > 0Description
TRUEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
FALSEnever evaluated
&& qint64(dataOffset) + qint64(dataLength) > qint64(data.length())
qint64(dataOff...data.length())Description
TRUEnever evaluated
FALSEevaluated 110 times by 1 test
Evaluated by:
  • tst_qquickimage
)
0-110
13 return
never executed: return false;
false;
never executed: return false;
0
14-
15 return
executed 110 times by 1 test: return true;
Executed by:
  • tst_qquickimage
true;
executed 110 times by 1 test: return true;
Executed by:
  • tst_qquickimage
110
16}-
17-
18int QSGCompressedTextureData::sizeInBytes() const-
19{-
20 if (!isValid()
!isValid()Description
TRUEnever evaluated
FALSEevaluated 30 times by 1 test
Evaluated by:
  • tst_qquickimage
)
0-30
21 return
never executed: return 0;
0;
never executed: return 0;
0
22 return
executed 30 times by 1 test: return dataLength > 0 ? dataLength : data.length() - dataOffset;
Executed by:
  • tst_qquickimage
dataLength > 0 ? dataLength : data.length() - dataOffset;
executed 30 times by 1 test: return dataLength > 0 ? dataLength : data.length() - dataOffset;
Executed by:
  • tst_qquickimage
30
23}-
24-
25__attribute__((visibility("default"))) QDebug operator<<(QDebug dbg, const QSGCompressedTextureData *d)-
26{-
27 QDebugStateSaver saver(dbg);-
28-
29 dbg.nospace() << "QSGCompressedTextureData(";-
30 if (d
dDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
31 dbg << d->logName << ' ';-
32 dbg << static_cast<QOpenGLTexture::TextureFormat>(d->format)-
33 << "[0x" << hex << d->format << dec << "]";-
34 dbg.space() << (d->hasAlpha ? "with" : "no") << "alpha" << d->size-
35 << "databuffer" << d->data.size() << "offset" << d->dataOffset << "length";-
36 dbg.nospace() << d->dataLength << ")";-
37 }
never executed: end of block
else {
0
38 dbg << "null)";-
39 }
never executed: end of block
0
40 return
never executed: return dbg;
dbg;
never executed: return dbg;
0
41}-
42-
43QSGCompressedTexture::QSGCompressedTexture(const DataPtr& texData)-
44 : m_textureData(texData)-
45{-
46 if (m_textureData
m_textureDataDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
47 m_size = m_textureData->size;-
48 m_hasAlpha = m_textureData->hasAlpha;-
49 }
never executed: end of block
0
50}
never executed: end of block
0
51-
52QSGCompressedTexture::~QSGCompressedTexture()-
53{-
54-
55 if (m_textureId
m_textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
56 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
57 QOpenGLFunctions *funcs = ctx
ctxDescription
TRUEnever evaluated
FALSEnever evaluated
? ctx->functions() : nullptr;
0
58 if (!funcs
!funcsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
59 return;
never executed: return;
0
60-
61 funcs->glDeleteTextures(1, &m_textureId);-
62 }
never executed: end of block
0
63-
64}
never executed: end of block
0
65-
66int QSGCompressedTexture::textureId() const-
67{-
68-
69 if (!m_textureId
!m_textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
70 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
71 QOpenGLFunctions *funcs = ctx
ctxDescription
TRUEnever evaluated
FALSEnever evaluated
? ctx->functions() : nullptr;
0
72 if (!funcs
!funcsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
73 return
never executed: return 0;
0;
never executed: return 0;
0
74-
75 funcs->glGenTextures(1, &m_textureId);-
76 }
never executed: end of block
0
77-
78 return
never executed: return m_textureId;
m_textureId;
never executed: return m_textureId;
0
79}-
80-
81QSize QSGCompressedTexture::textureSize() const-
82{-
83 return
never executed: return m_size;
m_size;
never executed: return m_size;
0
84}-
85-
86bool QSGCompressedTexture::hasAlphaChannel() const-
87{-
88 return
never executed: return m_hasAlpha;
m_hasAlpha;
never executed: return m_hasAlpha;
0
89}-
90-
91bool QSGCompressedTexture::hasMipmaps() const-
92{-
93 return
never executed: return false;
false;
never executed: return false;
0
94}-
95-
96void QSGCompressedTexture::bind()-
97{-
98-
99 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
100 QOpenGLFunctions *funcs = ctx
ctxDescription
TRUEnever evaluated
FALSEnever evaluated
? ctx->functions() : nullptr;
0
101 if (!funcs
!funcsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
102 return;
never executed: return;
0
103-
104 if (!textureId()
!textureId()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
105 return;
never executed: return;
0
106-
107 funcs->glBindTexture(-
108 0x0DE1-
109 , m_textureId);-
110-
111 if (m_uploaded
m_uploadedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
112 return;
never executed: return;
0
113-
114 QByteArray logName(m_textureData ? m_textureData->logName : ([]() -> QByteArray { enum { Size = sizeof("(unset)") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "(unset)" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return
never executed: return ba;
ba;
never executed: return ba;
}()));
0
115-
116 if (!m_textureData
!m_textureDataDescription
TRUEnever evaluated
FALSEnever evaluated
|| !m_textureData->isValid()
!m_textureData->isValid()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
117 for (bool qt_category_enabled = QSG_LOG_TEXTUREIO().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 161, __PRETTY_FUNCTION__, QSG_LOG_TEXTUREIO().categoryName()).debug("Invalid texture data for %s", logName.constData());
never executed: QMessageLogger(__FILE__, 161, __PRETTY_FUNCTION__, QSG_LOG_TEXTUREIO().categoryName()).debug("Invalid texture data for %s", logName.constData());
0
118 funcs->glBindTexture(-
119 0x0DE1-
120 , 0);-
121 return;
never executed: return;
0
122 }-
123-
124 if (__builtin_expect(!!(QSG_LOG_TEXTUREIO().isDebugEnabled()), false)
__builtin_expe...led()), false)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
125 for (bool qt_category_enabled = QSG_LOG_TEXTUREIO().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 167, __PRETTY_FUNCTION__, QSG_LOG_TEXTUREIO().categoryName()).debug() << "Uploading texture" << m_textureData.data();
never executed: QMessageLogger(__FILE__, 167, __PRETTY_FUNCTION__, QSG_LOG_TEXTUREIO().categoryName()).debug() << "Uploading texture" << m_textureData.data();
0
126 while (funcs->glGetError() !=
funcs->glGetError() != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
127 0
funcs->glGetError() != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
128 );
never executed: ;
0
129 }
never executed: end of block
0
130-
131 funcs->glCompressedTexImage2D(-
132 0x0DE1-
133 , 0, m_textureData->format,-
134 m_size.width(), m_size.height(), 0, m_textureData->sizeInBytes(),-
135 m_textureData->data.constData() + m_textureData->dataOffset);-
136-
137 if (__builtin_expect(!!(QSG_LOG_TEXTUREIO().isDebugEnabled()), false)
__builtin_expe...led()), false)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
138 GLuint error = funcs->glGetError();-
139 if (error !=
error != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
140 0
error != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
141 ) {-
142 for (bool qt_category_enabled = QSG_LOG_TEXTUREIO().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 178, __PRETTY_FUNCTION__, QSG_LOG_TEXTUREIO().categoryName()).debug("glCompressedTexImage2D failed for %s, error 0x%x", logName.constData(), error);
never executed: QMessageLogger(__FILE__, 178, __PRETTY_FUNCTION__, QSG_LOG_TEXTUREIO().categoryName()).debug("glCompressedTexImage2D failed for %s, error 0x%x", logName.constData(), error);
0
143 }
never executed: end of block
0
144 }
never executed: end of block
0
145-
146 m_textureData.clear();-
147-
148 updateBindOptions(true);-
149 m_uploaded = true;-
150-
151}
never executed: end of block
0
152-
153bool QSGCompressedTexture::formatIsOpaque(quint32 glTextureFormat)-
154{-
155 switch (glTextureFormat) {-
156 case
never executed: case QOpenGLTexture::RGB_DXT1:
QOpenGLTexture::RGB_DXT1:
never executed: case QOpenGLTexture::RGB_DXT1:
0
157 case
never executed: case QOpenGLTexture::R_ATI1N_UNorm:
QOpenGLTexture::R_ATI1N_UNorm:
never executed: case QOpenGLTexture::R_ATI1N_UNorm:
0
158 case
never executed: case QOpenGLTexture::R_ATI1N_SNorm:
QOpenGLTexture::R_ATI1N_SNorm:
never executed: case QOpenGLTexture::R_ATI1N_SNorm:
0
159 case
never executed: case QOpenGLTexture::RG_ATI2N_UNorm:
QOpenGLTexture::RG_ATI2N_UNorm:
never executed: case QOpenGLTexture::RG_ATI2N_UNorm:
0
160 case
never executed: case QOpenGLTexture::RG_ATI2N_SNorm:
QOpenGLTexture::RG_ATI2N_SNorm:
never executed: case QOpenGLTexture::RG_ATI2N_SNorm:
0
161 case
never executed: case QOpenGLTexture::RGB_BP_UNSIGNED_FLOAT:
QOpenGLTexture::RGB_BP_UNSIGNED_FLOAT:
never executed: case QOpenGLTexture::RGB_BP_UNSIGNED_FLOAT:
0
162 case
never executed: case QOpenGLTexture::RGB_BP_SIGNED_FLOAT:
QOpenGLTexture::RGB_BP_SIGNED_FLOAT:
never executed: case QOpenGLTexture::RGB_BP_SIGNED_FLOAT:
0
163 case
never executed: case QOpenGLTexture::R11_EAC_UNorm:
QOpenGLTexture::R11_EAC_UNorm:
never executed: case QOpenGLTexture::R11_EAC_UNorm:
0
164 case
never executed: case QOpenGLTexture::R11_EAC_SNorm:
QOpenGLTexture::R11_EAC_SNorm:
never executed: case QOpenGLTexture::R11_EAC_SNorm:
0
165 case
never executed: case QOpenGLTexture::RG11_EAC_UNorm:
QOpenGLTexture::RG11_EAC_UNorm:
never executed: case QOpenGLTexture::RG11_EAC_UNorm:
0
166 case
never executed: case QOpenGLTexture::RG11_EAC_SNorm:
QOpenGLTexture::RG11_EAC_SNorm:
never executed: case QOpenGLTexture::RG11_EAC_SNorm:
0
167 case
executed 4 times by 1 test: case QOpenGLTexture::RGB8_ETC2:
Executed by:
  • tst_qquickimage
QOpenGLTexture::RGB8_ETC2:
executed 4 times by 1 test: case QOpenGLTexture::RGB8_ETC2:
Executed by:
  • tst_qquickimage
4
168 case
never executed: case QOpenGLTexture::SRGB8_ETC2:
QOpenGLTexture::SRGB8_ETC2:
never executed: case QOpenGLTexture::SRGB8_ETC2:
0
169 case
executed 4 times by 1 test: case QOpenGLTexture::RGB8_ETC1:
Executed by:
  • tst_qquickimage
QOpenGLTexture::RGB8_ETC1:
executed 4 times by 1 test: case QOpenGLTexture::RGB8_ETC1:
Executed by:
  • tst_qquickimage
4
170 case
never executed: case QOpenGLTexture::SRGB_DXT1:
QOpenGLTexture::SRGB_DXT1:
never executed: case QOpenGLTexture::SRGB_DXT1:
0
171 return
executed 8 times by 1 test: return true;
Executed by:
  • tst_qquickimage
true;
executed 8 times by 1 test: return true;
Executed by:
  • tst_qquickimage
8
172 break;
dead code: break;
-
173 default
executed 2 times by 1 test: default:
Executed by:
  • tst_qquickimage
:
executed 2 times by 1 test: default:
Executed by:
  • tst_qquickimage
2
174 return
executed 2 times by 1 test: return false;
Executed by:
  • tst_qquickimage
false;
executed 2 times by 1 test: return false;
Executed by:
  • tst_qquickimage
2
175 }-
176}-
177-
178QSGCompressedTextureFactory::QSGCompressedTextureFactory(const QSGCompressedTexture::DataPtr &texData)-
179 : m_textureData(texData)-
180{-
181}
executed 10 times by 1 test: end of block
Executed by:
  • tst_qquickimage
10
182-
183QSGTexture *QSGCompressedTextureFactory::createTexture(QQuickWindow *window) const-
184{-
185 if (!m_textureData
!m_textureDataDescription
TRUEnever evaluated
FALSEnever evaluated
|| !m_textureData->isValid()
!m_textureData->isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
186 return
never executed: return nullptr;
nullptr;
never executed: return nullptr;
0
187-
188-
189 QSGRenderContext *context = QQuickWindowPrivate::get(window)->context;-
190 QSGTexture *t = context->compressedTextureForFactory(this);-
191 if (t
tDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
192 return
never executed: return t;
t;
never executed: return t;
0
193-
194 return
never executed: return new QSGCompressedTexture(m_textureData);
new QSGCompressedTexture(m_textureData);
never executed: return new QSGCompressedTexture(m_textureData);
0
195}-
196-
197int QSGCompressedTextureFactory::textureByteCount() const-
198{-
199 return
executed 30 times by 1 test: return m_textureData ? m_textureData->sizeInBytes() : 0;
Executed by:
  • tst_qquickimage
m_textureData ? m_textureData->sizeInBytes() : 0;
executed 30 times by 1 test: return m_textureData ? m_textureData->sizeInBytes() : 0;
Executed by:
  • tst_qquickimage
30
200}-
201-
202-
203QSize QSGCompressedTextureFactory::textureSize() const-
204{-
205 if (m_textureData
m_textureDataDescription
TRUEevaluated 70 times by 1 test
Evaluated by:
  • tst_qquickimage
FALSEnever evaluated
&& m_textureData->isValid()
m_textureData->isValid()Description
TRUEevaluated 70 times by 1 test
Evaluated by:
  • tst_qquickimage
FALSEnever evaluated
)
0-70
206 return
executed 70 times by 1 test: return m_textureData->size;
Executed by:
  • tst_qquickimage
m_textureData->size;
executed 70 times by 1 test: return m_textureData->size;
Executed by:
  • tst_qquickimage
70
207 return
never executed: return QSize();
QSize();
never executed: return QSize();
0
208}-
209-
210-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.0