MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / ConvertImageBuffer

Function ConvertImageBuffer

deps/LLGL/sources/Core/ImageFlags.cpp:572–637  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

570/* ----- Public functions ----- */
571
572LLGL_EXPORT bool ConvertImageBuffer(
573 const SrcImageDescriptor& srcImageDesc,
574 const DstImageDescriptor& dstImageDesc,
575 std::size_t threadCount)
576{
577 /* Validate input parameters */
578 ValidateSourceImageDesc(srcImageDesc);
579 ValidateDestinationImageDesc(dstImageDesc);
580 ValidateImageConversionParams(srcImageDesc, dstImageDesc.format, dstImageDesc.dataType);
581
582 if (threadCount >= Constants::maxThreadCount)
583 threadCount = std::thread::hardware_concurrency();
584
585 if (srcImageDesc.dataType != dstImageDesc.dataType && srcImageDesc.format != dstImageDesc.format)
586 {
587 /* Convert image data type with intermediate buffer */
588 auto intermediateBufferSize = srcImageDesc.dataSize / DataTypeSize(srcImageDesc.dataType) * DataTypeSize(dstImageDesc.dataType);
589 auto intermediateBuffer = MakeUniqueArray<char>(intermediateBufferSize);
590
591 ConvertImageBufferDataType(
592 srcImageDesc.dataType,
593 srcImageDesc.data,
594 srcImageDesc.dataSize,
595 dstImageDesc.dataType,
596 intermediateBuffer.get(),
597 intermediateBufferSize,
598 threadCount
599 );
600
601 /* Set new source buffer and source data type */
602 const SrcImageDescriptor intermediateImageDesc
603 {
604 srcImageDesc.format,
605 dstImageDesc.dataType,
606 intermediateBuffer.get(),
607 intermediateBufferSize
608 };
609
610 /* Convert image format */
611 ConvertImageBufferFormat(intermediateImageDesc, dstImageDesc, threadCount);
612
613 return true;
614 }
615 else if (srcImageDesc.dataType != dstImageDesc.dataType)
616 {
617 /* Convert image data type */
618 ConvertImageBufferDataType(
619 srcImageDesc.dataType,
620 srcImageDesc.data,
621 srcImageDesc.dataSize,
622 dstImageDesc.dataType,
623 dstImageDesc.data,
624 dstImageDesc.dataSize,
625 threadCount
626 );
627 return true;
628 }
629 else if (srcImageDesc.format != dstImageDesc.format)

Callers 6

CopyTextureImageDataMethod · 0.85
UpdateSubresourceMethod · 0.85
CreateTextureMethod · 0.85
WriteTextureMethod · 0.85
UpdateGpuTextureMethod · 0.85
ConvertMethod · 0.85

Calls 6

ValidateSourceImageDescFunction · 0.85
ConvertImageBufferFormatFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected