// 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