when call cbCreateSubBuffer when followings memory flags are not set they should be inherited from parent buffer. Report them when calling clGetMemObjectInfo
flags: CL_MEM_READ_WRITE, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY, CL_MEM_USE_HOST_PTR, CL_MEM_ALLOC_HOST_PTR, CL_MEM_COPY_HOST_PTR, CL_MEM_HOST_WRITE_ONLY, CL_MEM_HOST_READ_ONLY, CL_MEM_HOST_NO_ACCESS --- src/gallium/state_trackers/clover/api/memory.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/clover/api/memory.cpp b/src/gallium/state_trackers/clover/api/memory.cpp index fe01d3f..4843cff 100644 --- a/src/gallium/state_trackers/clover/api/memory.cpp +++ b/src/gallium/state_trackers/clover/api/memory.cpp @@ -226,9 +226,22 @@ clGetMemObjectInfo(cl_mem d_mem, cl_mem_info param, buf.as_scalar<cl_mem_object_type>() = mem.type(); break; - case CL_MEM_FLAGS: - buf.as_scalar<cl_mem_flags>() = mem.flags(); + case CL_MEM_FLAGS: { + cl_mem_flags flags = mem.flags(); + + //inherited flags + sub_buffer *sub = dynamic_cast<sub_buffer *>(&mem); + if (sub) { + flags = flags | (sub->parent().flags() & + (CL_MEM_READ_WRITE | CL_MEM_READ_ONLY | CL_MEM_WRITE_ONLY | + CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR | + CL_MEM_COPY_HOST_PTR | + CL_MEM_HOST_WRITE_ONLY | CL_MEM_HOST_READ_ONLY | + CL_MEM_HOST_NO_ACCESS)); + } + buf.as_scalar<cl_mem_flags>() = flags; break; + } case CL_MEM_SIZE: buf.as_scalar<size_t>() = mem.size(); -- 1.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev