g++ -Wall -Wpedantic -Werror -std=c++11 -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -I include/ -march=native -O2 -flto -c -o build/memory.o src/memory.cpp
src/memory.cpp: In function 'int vram::memory::clear_buffer(const cl::Buffer&)':
src/memory.cpp:20:30: error: 'class cl::CommandQueue' has no member named 'enqueueFillBuffer'
return queue.enqueueFillBuffer(buf, 0, 0, block::size, nullptr, nullptr);
^
src/memory.cpp: In function 'bool vram::memory::init_opencl()':
src/memory.cpp:42:35: error: 'getPlatformVersion' is not a member of 'cl::detail'
cl_uint version = cl::detail::getPlatformVersion(platform());
^
src/memory.cpp: In function 'int vram::memory::clear_buffer(const cl::Buffer&)':
src/memory.cpp:23:9: error: control reaches end of non-void function [-Werror=return-type]
}
^
cc1plus: all warnings being treated as errors
Makefile:18: recipe for target 'build/memory.o' failed
make: *** [build/memory.o] Error 1
Distro: Arch Linux
opencl-headers ver.: 2:1.1.20110526-1
libcl ver.: 1.1-4
Distro: Arch Linux opencl-headers ver.:
2:1.1.20110526-1
libcl ver.:1.1-4
OpenCL 1.1 doesn't seem to contain
enqueueFillBuffer
(see https://www.khronos.org/files/opencl-1-1-quick-reference-card.pdf).cl::detail
looks like it doesn't exist at all (see https://www.khronos.org/files/OpenCLPP12-reference-card.pdf). Resetting to commit 1bdcab10ff572059bc33cfc7568f7ce66d616130 makes it work again.Guess what the problem is: @Oblomov's changes require OpenCL 1.2 headers even if they work with older OpenCL implementations.