1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Copyright (c) 2012-2017 VideoStitch SAS
// Copyright (c) 2018 stitchEm
#include "gpu/render/render.hpp"
#include "../cl_error.hpp"
#include "../context.hpp"
#include "../kernel.hpp"
#include "../surface.hpp"
#ifdef __APPLE__
namespace {
#include "render.xxd"
INDIRECT_REGISTER_OPENCL_PROGRAM(render, true);
} // namespace
#endif // __APPLE__
namespace VideoStitch {
namespace Render {
#ifdef __APPLE__
Status fillBuffer(GPU::Buffer<uint32_t> dst, uint32_t value, size_t width, size_t height, GPU::Stream stream) {
auto kernel =
GPU::Kernel::get(PROGRAM(render), KERNEL_STR(memsetToValue)).setup1D(stream, (unsigned)(width * height));
return kernel.enqueueWithKernelArgs(dst.get(), value, (unsigned)dst.numElements());
}
#else // __APPLE__
Status fillBuffer(GPU::Buffer<uint32_t> dst, uint32_t value, size_t width, size_t height, GPU::Stream stream) {
return CL_ERROR(clEnqueueFillBuffer(stream.get(), dst.get().raw(), &value, sizeof(uint32_t),
0, // offset
width * height * sizeof(uint32_t), 0, nullptr, nullptr));
}
#endif // __APPLE__
} // namespace Render
} // namespace VideoStitch