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

Function BitBlit

deps/LLGL/sources/Core/ImageUtils.cpp:18–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16
17
18void BitBlit(
19 const Extent3D& extent,
20 std::uint32_t bpp,
21 char* dst,
22 std::uint32_t dstRowStride,
23 std::uint32_t dstDepthStride,
24 const char* src,
25 std::uint32_t srcRowStride,
26 std::uint32_t srcDepthStride)
27{
28 const auto rowStride = bpp * extent.width;
29 const auto depthStride = rowStride * extent.height;
30
31 if (srcRowStride == dstRowStride && rowStride == dstRowStride)
32 {
33 if (srcDepthStride == dstDepthStride && depthStride == dstDepthStride)
34 {
35 /* Copy region directly into output data */
36 ::memcpy(dst, src, depthStride * extent.depth);
37 }
38 else
39 {
40 /* Copy region directly into output data */
41 for (std::uint32_t z = 0; z < extent.depth; ++z)
42 {
43 /* Copy current slice */
44 ::memcpy(dst, src, depthStride);
45
46 /* Move pointers to next slice */
47 dst += dstDepthStride;
48 src += srcDepthStride;
49 }
50 }
51 }
52 else
53 {
54 /* Adjust depth stride */
55 srcDepthStride -= srcRowStride * extent.height;
56
57 /* Copy region directly into output data */
58 for (std::uint32_t z = 0; z < extent.depth; ++z)
59 {
60 /* Copy current slice */
61 for (std::uint32_t y = 0; y < extent.height; ++y)
62 {
63 /* Copy current row */
64 ::memcpy(dst, src, rowStride);
65
66 /* Move pointers to next row */
67 dst += dstRowStride;
68 src += srcRowStride;
69 }
70
71 /* Move pointers to next slice */
72 src += srcDepthStride;
73 }
74 }
75}

Callers 3

ReadPixelsMethod · 0.85
WritePixelsMethod · 0.85
CopyImageBufferRegionFunction · 0.85

Calls 1

memcpyFunction · 0.85

Tested by

no test coverage detected