Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Новости / OpenCL 1.2 Specification

OpenCL 1.2 Specification

Автор:

На сайте khronos, появилась новость о выходе спецификации OpenCL 1.2.
Спецификация 1.2.
Расширения.
Кратко.
А теперь подробнее.
Над спецификацией работала значительная команда с разных компаний (AMD, Intel...).
К группе (khronos) присоединяется (хотят присоединится) все больше и больше компаний (производители портативных устройств), должна появится поддержка OpenCL в устройствах ARM, а также ПЛИС.
Особенности
Добавлена возможность разделения устройства на подустройства, следовательно управлять ими.
Изменен процесс компиляции, теперь линковка и компиляция выполняются раздельно, что позволит создавать OpenCL-библиотеки.
Расширена поддержка изображений. Полностью изменен процесс создания изображений (clCreateImage, clCreateImage2D, clCreateImage3D)...
Встроенное ядро позволяет выполнять специализированные функции, которые может поддерживать устройство - видео кодеры/декодеры, сигнальные процессоры (теперь преобразование Фурье очень быстрое, сверх быстрое ;) ).
Поддержка DX9 Media Surface.
Поддержка DirectX 11.
Добавлено устройство по умолчанию (см. CL_DEVICE_TYPE_CUSTOM), синхронизация, и многое другое.

Новые типы:
cl_image_desc - в связи с изменением процесса создания изображения.

Новые константы:
  CL_COMPILE_PROGRAM_FAILURE, CL_LINKER_NOT_AVAILABLE, CL_LINK_PROGRAM_FAILURE, CL_DEVICE_PARTITION_FAILED CL_KERNEL_ARG_INFO_NOT_AVAILABLE
  CL_INVALID_IMAGE_DESCRIPTOR, CL_INVALID_COMPILER_OPTIONS, CL_INVALID_LINKER_OPTIONS, CL_INVALID_DEVICE_PARTITION_COUNT
  CL_BLOCKING, CL_NON_BLOCKING
  CL_DEVICE_TYPE_CUSTOM
  CL_DEVICE_LINKER_AVAILABLE, CL_DEVICE_BUILT_IN_KERNELS, CL_DEVICE_IMAGE_MAX_BUFFER_SIZE, CL_DEVICE_IMAGE_MAX_ARRAY_SIZE, CL_DEVICE_PARENT_DEVICE, CL_DEVICE_PARTITION_MAX_SUB_DEVICES, CL_DEVICE_PARTITION_PROPERTIES, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, CL_DEVICE_PARTITION_TYPE, CL_DEVICE_REFERENCE_COUNT, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, CL_DEVICE_PRINTF_BUFFER_SIZE

  CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT
  CL_CONTEXT_INTEROP_USER_SYNC

  CL_DEVICE_PARTITION_EQUALLY,  CL_DEVICE_PARTITION_BY_COUNTS,  CL_DEVICE_PARTITION_BY_COUNTS_LIST_END,  CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN
   
  CL_DEVICE_AFFINITY_DOMAIN_NUMA, CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE, CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE, CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE, CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE, CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE

  CL_MEM_HOST_WRITE_ONLY, CL_MEM_HOST_READ_ONLY, CL_MEM_HOST_NO_ACCESS

  CL_MIGRATE_MEM_OBJECT_HOST, CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED

  CL_MEM_OBJECT_IMAGE2D_ARRAY, CL_MEM_OBJECT_IMAGE1D, CL_MEM_OBJECT_IMAGE1D_ARRAY, CL_MEM_OBJECT_IMAGE1D_BUFFER

  CL_IMAGE_ARRAY_SIZE, CL_IMAGE_BUFFER, CL_IMAGE_NUM_MIP_LEVELS, CL_IMAGE_NUM_SAMPLES

  CL_MAP_WRITE_INVALIDATE_REGION

  CL_PROGRAM_NUM_KERNELS, CL_PROGRAM_KERNEL_NAMES

  CL_PROGRAM_BINARY_TYPE

  CL_PROGRAM_BINARY_TYPE_NONE, CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT, CL_PROGRAM_BINARY_TYPE_LIBRARY, CL_PROGRAM_BINARY_TYPE_EXECUTABLE

  CL_KERNEL_ATTRIBUTES

  CL_KERNEL_ARG_ADDRESS_QUALIFIER, CL_KERNEL_ARG_ACCESS_QUALIFIER, CL_KERNEL_ARG_TYPE_NAME,  CL_KERNEL_ARG_TYPE_QUALIFIER, CL_KERNEL_ARG_NAME,

  CL_KERNEL_ARG_ADDRESS_GLOBAL, CL_KERNEL_ARG_ADDRESS_LOCAL, CL_KERNEL_ARG_ADDRESS_CONSTANT, CL_KERNEL_ARG_ADDRESS_PRIVATE

  CL_KERNEL_ARG_ACCESS_READ_ONLY, CL_KERNEL_ARG_ACCESS_WRITE_ONLY, CL_KERNEL_ARG_ACCESS_READ_WRITE,  CL_KERNEL_ARG_ACCESS_NONE
   
  CL_KERNEL_ARG_TYPE_NONE, CL_KERNEL_ARG_TYPE_CONST, CL_KERNEL_ARG_TYPE_RESTRICT, CL_KERNEL_ARG_TYPE_VOLATILE

  CL_KERNEL_GLOBAL_WORK_SIZE

  CL_COMMAND_BARRIER, CL_COMMAND_MIGRATE_MEM_OBJECTS, CL_COMMAND_FILL_BUFFER, CL_COMMAND_FILL_IMAGE

Новые Функции:
  clCreateSubDevices, clRetainDevice, clReleaseDevice,  clCreateImage, clCreateProgramWithBuiltInKernels, clRetainProgram, clReleaseProgram, clCompileProgram, clLinkProgram, clUnloadPlatformCompiler, clGetKernelArgInfo,  clEnqueueFillBuffer, clEnqueueFillImage, clEnqueueMigrateMemObjects, clEnqueueMarkerWithWaitList, clEnqueueBarrierWithWaitList, clSetPrintfCallback, clGetExtensionFunctionAddressForPlatform


DX9_Media (Новое):
  Константы:
  CL_INVALID_DX9_MEDIA_ADAPTER_KHR, CL_INVALID_DX9_MEDIA_SURFACE_KHR, CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR, CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR
  CL_ADAPTER_D3D9_KHR, CL_ADAPTER_D3D9EX_KHR, CL_ADAPTER_DXVA_KHR
  CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR, CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR
  CL_CONTEXT_D3D9_DEVICE_KHR, CL_CONTEXT_D3D9EX_DEVICE_KHR, CL_CONTEXT_DXVA_DEVICE_KHR
  CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR, CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR
  CL_IMAGE_DX9_MEDIA_PLANE_KHR
  CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR, CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR
  Функции: clGetDeviceIDsForDX9MediaAdapterKHR_fn, clCreateFromDX9MediaSurfaceKHR_fn, clEnqueueAcquireDX9MediaSurfacesKHR_fn, clEnqueueReleaseDX9MediaSurfacesKHR_fn

Direct3D11 (Новое):
  Константы:
  CL_INVALID_D3D11_DEVICE_KHR, CL_INVALID_D3D11_RESOURCE_KHR, CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR, CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR
  CL_D3D11_DEVICE_KHR, CL_D3D11_DXGI_ADAPTER_KHR
  CL_PREFERRED_DEVICES_FOR_D3D11_KHR, CL_ALL_DEVICES_FOR_D3D11_KHR
  CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR, CL_CONTEXT_D3D11_DEVICE_KHR         
  CL_MEM_D3D11_RESOURCE_KHR
  CL_IMAGE_D3D11_SUBRESOURCE_KHR
  CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR, CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR
  Функции:
  clGetDeviceIDsFromD3D11KHR_fn, clCreateFromD3D11BufferKHR_fn, clCreateFromD3D11Texture2DKHR_fn, clCreateFromD3D11Texture3DKHR_fn, clEnqueueAcquireD3D11ObjectsKHR_fn, clEnqueueReleaseD3D11ObjectsKHR_fn

Depercated:
  1.0 : clSetCommandQueueProperty,
  1.1 : clCreateImage2D, clCreateImage3D, clEnqueueMarker, clEnqueueWaitForEvents, clEnqueueBarrier, clUnloadCompiler, clGetExtensionFunctionAddress

16 ноября 2011

#GPGPU, #khronos, #OpenCL, #программирование


Обновление: 17 ноября 2011

2001—2018 © GameDev.ru — Разработка игр