clGetMemObjectInfo
clGetMemObjectInfo
2007-2011 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are furnished to do so, subject to the condition that this copyright notice and permission notice shall be included in all copies or substantial portions of the Materials.
3
clGetMemObjectInfo Get information that is common to all memory objects (buffer and image objects).

##

cl_int `clGetMemObjectInfo` cl_mem memobj cl_mem_info param_name size_t param_value_size void *param_value size_t *param_value_size_ret

## Parameters

`memobj`

  Specifies the memory object being queried.

`param_name`

  Specifies the information to query. The list of supported `param_name` types and the information returned in `param_value` by `clGetMemObjectInfo` is described in the table below.

  cl_mem_info | Return Type | Info. returned in `param_value`
  --- | --- | ---
  `CL_MEM_TYPE` | cl_mem_object_type | Returns one of the following values: `CL_MEM_OBJECT_BUFFER` if `memobj` is created with clCreateBuffer or clCreateSubBuffer. cl_image_desc.image_type argument value if `memobj` is created with clCreateImage.
  `CL_MEM_FLAGS` | cl_mem_flags | Returns the `flags` argument value specified when `memobj` is created with clCreateBuffer, clCreateSubBuffer, or clCreateImage. If `memobj` is a sub-buffer the memory access qualifiers inherited from parent buffer is also returned
  `CL_MEM_SIZE` | size_t | Return actual size of the data store associated with `memobj` in bytes.
  `CL_MEM_HOST_PTR` | void * | If `memobj` is created with clCreateBuffer or clCreateImage and `CL_MEM_USE_HOST_PTR` is specified in `mem_flags`, return the `host_ptr` argument value specified when `memobj` is created. Otherwise a NULL value is returned. If `memobj` is created with clCreateSubBuffer, return the `host_ptr` + `origin` value specified when `memobj` is created. `host_ptr` is the argument value specified to clCreateBuffer and `CL_MEM_USE_HOST_PTR` is specified in `mem_flags` for memory object from which `memobj` is created. Otherwise a NULL value is returned.
  `CL_MEM_MAP_COUNT` | cl_uint | Map count. The map count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for debugging.
  `CL_MEM_REFERENCE_COUNT` | cl_uint | Return `memobj` reference count. The reference count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
  `CL_MEM_CONTEXT` | cl_context | Return context specified when memory object is created. If `memobj` is created using clCreateSubBuffer, the context associated with the memory object specified as the `buffer` argument to clCreateSubBuffer is returned.
  `CL_MEM_ASSOCIATED_- MEMOBJECT` | cl_mem | Return memory object from which `memobj` is created. This returns the memory object specified as `buffer` argument to clCreateSubBuffer. Otherwise a NULL value is returned.
  `CL_MEM_OFFSET` | size_t | Return offset if `memobj` is a sub-buffer object created using clCreateSubBuffer. This returns 0 if `memobj` is not a subbuffer object.
  `CL_MEM_D3D10_RESOURCE_KHR` | ID3D10Resource * | The property being queried (if the cl_khr_d3d10_sharing extension is enabled). If `memobj` was created using clCreateFromD3D10BufferKHR, clCreateFromD3D10Texture2DKHR, or clCreateFromD3D10Texture3DKHR, returns the `resource` argument specified when `memobj` was created.
  `CL_MEM_DX9_MEDIA_- ADAPTER_TYPE_KHR` | cl_dx9_media_- adapter_type_khr | Returns the cl_dx9_media_adapter_type_khr argument value specified when `memobj` is created using clCreateFromDX9MediaSurfaceKHR (If the cl_khr_dx9_media_sharing extension is supported)
  `CL_MEM_DX9_MEDIA_- SURFACE_INFO_KHR` | cl_dx9_- surface_info_khr | Returns the cl_dx9_surface_info_khr argument value specified when `memobj` is created using clCreateFromDX9MediaSurfaceKHR (If the cl_khr_dx9_media_sharing extension is supported)
  `CL_MEM_D3D11_RESOURCE_KHR` | ID3D11Resource * | If the cl_khr_d3d11_sharing extension is supported, If `memobj` was created using clCreateFromD3D11BufferKHR, clCreateFromD3D11Texture2DKHR, or clCreateFromD3D11Texture3DKHR, returns the `resource` argument specified when `memobj` was created.

`param_value`

  A pointer to memory where the appropriate result being queried is returned. If `param_value` is NULL, it is ignored.

`param_value_size`

  Used to specify the size in bytes of memory pointed to by `param_value`. This size must be ≥ size of return type as described in the table above.

`param_value_size_ret`

  Returns the actual size in bytes of data being queried by `param_value`. If `param_value_size_ret` is NULL, it is ignored.

## Errors

Returns CL_SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:

- CL_INVALID_VALUE if `param_name` is not valid, or if size in bytes specified by `param_value_size` is < the size of return type as described in the table above and `param_value` is not NULL.
- CL_INVALID_MEM_OBJECT if `memobj` is a not a valid memory object.
- CL_OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
- CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
- CL_INVALID_D3D10_RESOURCE_KHR If the cl_khr_d3d10_sharing extension is enabled and if `param_name` is `CL_MEM_D3D10_RESOURCE_KHR` and `memobj` was not created by the function clCreateFromD3D10BufferKHR, clCreateFromD3D10Texture2DKHR, or clCreateFromD3D10Texture3DKHR.
- CL_INVALID_DX9_MEDIA_SURFACE_KHR if `param_name` is `CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR` and `memobj` was not created by the function clCreateFromDX9MediaSurfaceKHR from a Direct3D9 surface. (If the cl_khr_dx9_media_sharing extension is supported)
- CL_INVALID_D3D11_RESOURCE_KHR If the cl_khr_d3d11_sharing extension is supported, if `param_name` is `CL_MEM_D3D11_RESOURCE_KHR` and `memobj` was not created by the function clCreateFromD3D11BufferKHR, clCreateFromD3D11Texture2DKHR, or clCreateFromD3D11Texture3DKHR."

## Specification

OpenCL Specification

## Also see

clGetImageInfo

##