CL_MAP_WRITE: avoid copying data from device to host

  • cl_map_flags enumeration should be extended with additional value: CL_MAP_FULL. This value means that the user is planning to operate with all values of the buffer being mapped.
  • map_flags parameter of the clEnqueueMapBuffer function should be enabled to contain this value.
  • if this CL_MAP_FULL value is used in conjunction with CL_MAP_WRITE then it means that the client is obliged to set all the data inside that memory region before doing unmap. Thus the implementation doesn’t need to initialize the host memory region with the values from the actual buffer, it doesn’t need to copy data from device to host in this case.

This feature would bring a lot of value to the map_flags parameter.