Fix compiler error with float16

This commit is contained in:
2024-08-24 17:14:02 +02:00
parent bc29dc7d34
commit 02bac0c850
+13 -13
View File
@@ -411,7 +411,7 @@ void RawImage::convertToThumbnail()
if(m_thumbAspect == 0.0f) if(m_thumbAspect == 0.0f)
m_thumbAspect = (float)width() / height(); m_thumbAspect = (float)width() / height();
std::unique_ptr<PixelType[]> outptr = std::make_unique<PixelType[]>(THUMB_SIZE * THUMB_SIZE * 4 * sizeof(qfloat16)); std::unique_ptr<PixelType[]> outptr = std::make_unique<PixelType[]>(THUMB_SIZE * THUMB_SIZE * 4 * sizeof(F16));
F16 *out = reinterpret_cast<F16*>(outptr.get()); F16 *out = reinterpret_cast<F16*>(outptr.get());
auto loop = [&](F16 *out, auto *in, float scale) auto loop = [&](F16 *out, auto *in, float scale)
@@ -425,15 +425,15 @@ void RawImage::convertToThumbnail()
if(m_channels == 1) if(m_channels == 1)
{ {
out[idx] = out[idx + 1] = out[idx + 2] = in[idx2] * scale; out[idx] = out[idx + 1] = out[idx + 2] = (F16)(in[idx2] * scale);
} }
else else
{ {
out[idx] = in[idx2] * scale;; out[idx] = (F16)(in[idx2] * scale);
out[idx + 1] = in[idx2 + 1] * scale;; out[idx + 1] = (F16)(in[idx2 + 1] * scale);
out[idx + 2] = in[idx2 + 2] * scale;; out[idx + 2] = (F16)(in[idx2 + 2] * scale);
} }
out[idx + 3] = 1.0f; out[idx + 3] = (F16)1.0f;
} }
} }
}; };
@@ -502,7 +502,7 @@ void RawImage::convertToGLFormat()
uint16_t *src = reinterpret_cast<uint16_t*>(m_original.get()); uint16_t *src = reinterpret_cast<uint16_t*>(m_original.get());
for(size_t i = 0; i < s; i++) for(size_t i = 0; i < s; i++)
dst[i] = src[i] / (float)UINT16_MAX; dst[i] = (F16)(src[i] / (float)UINT16_MAX);
} }
} }
@@ -901,19 +901,19 @@ void RawImage::generateLUT()
const int LUT_SIZE = 32; const int LUT_SIZE = 32;
const float LUT_SIZEF = LUT_SIZE - 1; const float LUT_SIZEF = LUT_SIZE - 1;
std::vector<qfloat16> lut(LUT_SIZE * LUT_SIZE * LUT_SIZE * 4); std::vector<F16> lut(LUT_SIZE * LUT_SIZE * LUT_SIZE * 4);
m_lut.resize(lut.size()); m_lut.resize(lut.size());
for(int z = 0; z < LUT_SIZE; z++) for(int z = 0; z < LUT_SIZE; z++)
{ {
for(int y = 0; y < LUT_SIZE; y++) for(int y = 0; y < LUT_SIZE; y++)
{ {
qfloat16 *line = &lut[(z*LUT_SIZE*LUT_SIZE + y*LUT_SIZE) * 4]; F16 *line = &lut[(z*LUT_SIZE*LUT_SIZE + y*LUT_SIZE) * 4];
for(int x = 0; x < LUT_SIZE; x++) for(int x = 0; x < LUT_SIZE; x++)
{ {
line[x*4 + 0] = x / LUT_SIZEF; line[x*4 + 0] = (F16)(x / LUT_SIZEF);
line[x*4 + 1] = y / LUT_SIZEF; line[x*4 + 1] = (F16)(y / LUT_SIZEF);
line[x*4 + 2] = z / LUT_SIZEF; line[x*4 + 2] = (F16)(z / LUT_SIZEF);
line[x*4 + 3] = 1.0f; line[x*4 + 3] = (F16)1.0f;
} }
} }
} }