Overv / vramfs

VRAM based file system for Linux
1.26k stars 65 forks source link

Does not compile #4

Closed sfan5 closed 9 years ago

sfan5 commented 9 years ago
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

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.

Overv commented 9 years ago

The changes by @Oblomov affecting compilation have been reverted.

Oblomov commented 9 years ago

I've pushed a new commit to my runtime-ocl11 branch that should fix compilation on 1.1 headers.

Overv commented 9 years ago

Thanks @Oblomov, I've merged it.