blob: 54c7b60665f1781b6ee0bfcbf17d110a071aea8e [file] [log] [blame]
#!/usr/bin/ruby
# for Ruby 1.9
# WARNING: page numbers are out of date with currently published CL 2.0 spec.
# Synopsis:
#
# pageNumberLookup.rb filename.html > outputFile.html
#
# This script is used to replace symbolic references to locations in the OpenCL
# specification with page number references. This can be used when you want the
# reference page to refer to section XYZ of the OpenCL spec with a link and have
# the link open the spec document to section XYZ. This approach is based on the
# "named destination" feature for PDF files.
#
# Ideally we wanted to link to the named destinations, but inconsistencies between
# versions of MS Word and other limitations prevent us from doing that at this time.
# So, this is a second-best solution in which we map symbolic names to page
# numbers, then the link will open the spec to the specified page. To use this
# solution, refer to a section in the spec using a symbolic name that you make up
# in a <olink /> element with a uri attribute that is the symbolic name. Then add
# the keyword to the lookup table below with the corresponding page number from
# the Spec.
#
# For example to link to the spec section for gl_sharing, use:
#
# <olink uri="gl_sharing">OpenCL Specification</olink>
#
# The xsltproc program generates a temporary HTML file where the XML line above
# is transformed into a line containing a placeholder URL:
#
# <a href="http://www.khronos.org/registry/cl/specs/opencl-XXX.pdf#namedest=gl_sharing">
# OpenCL Specification</a>
#
# When this lookup program is run on the temporary HTML file, it will look up the
# keyword and replace the placeholder text in the HTML file with the final URL.
# The final URL is specified below in Specnames. This transforms the placeholder
# line into the final form, in this manner:
#
# <a href="http://www.khronos.org/registry/cl/specs/opencl-2.0.pdf#page=279">
# OpenCL Specification</a>
#
# (You can control what the first part of the URL is by modifying the SpecBaseUrl
# variable in the opencl-man.xsl file.)
# Here are the real spec filenames of the OpenCL 2.1 spec documents (see comments above):
# Note that CLan links to opencl-2.0-openclc.pdf, which is rewritten to the
# current OpenCL C 2.2 specification - see
# https://github.com/KhronosGroup/OpenCL-Docs/issues/87
Core = "opencl-2.1.pdf"
Ext = "opencl-2.1-extensions.pdf"
CLan = "opencl-2.0-openclc.pdf"
###############################################################################
# Spec page number mapping here. First string in quotes. Commas between values.
# The comments are for reference to see where this content can be found in the spec.
#
Pagenums = {
"classDiagram" => [Core, 1], # 2.1 - OpenCL Class Diagram
"clGetPlatformIDs" => [Core, 62], # 4.1 - Querying Platform Info
"clGetPlatformInfo" => [Core, 62], # 4.1 - Querying Platform Info
"clGetDeviceIDs" => [Core, 64], # 4.2 - Querying Devices
"clGetDeviceInfo" => [Core, 66], # 4.2 - Querying Devices
"clGetDeviceAndHostTimer" => [Core, 82], # 4.2 - Querying Devices (new in 2.1)
"clGetHostTimer" => [Core, 83], # 4.2 - Querying Devices (new in 2.1)
"clCreateSubDevices" => [Core, 85], # 4.3 - Partitioning a Device
"cl_khr_fp64" => [Core, 78], # 4.2 - Querying Devices
"cl_khr_byte_addressable_store" => [Core, 78], # 4.2 - Querying Devices
"cl_khr_context_abort" => [Core, 78], # 4.2 - Querying Devices
"cl_khr_depth_images" => [Core, 78], # 4.2 - Querying Devices
"cl_khr_image2d_from_buffer" => [Core, 78], # 4.2 - Querying Devices
"clRetainDevice" => [Core, 88], # 4.3 - Partitioning a Device
"clReleaseDevice" => [Core, 88], # 4.3 - Partitioning a Device
"clCreateContext" => [Core, 90], # 4.4 - Contexts
"clCreateContextFromType" => [Core, 92], # 4.4 - Contexts
"clRetainContext" => [Core, 93], # 4.4 - Contexts
"clReleaseContext" => [Core, 93], # 4.4 - Contexts
"clGetContextInfo" => [Core, 94], # 4.4 - Contexts
"clCreateCommandQueueWithProperties" => [Core, 97], # 5.1 - Command Queues
"clSetDefaultDeviceCommandQueue" => [Core, 99], # 5.1 - Command Queues (new in 2.1)
"clRetainCommandQueue" => [Core, 100], # 5.1 - Command Queues
"clReleaseCommandQueue" => [Core, 100], # 5.1 - Command Queues
"clGetCommandQueueInfo" => [Core, 101], # 5.1 - Command Queues
"clCreateBuffer" => [Core, 104], # 5.2.1 - Creating Buffer Objects
"clCreateSubBuffer" => [Core, 107], # 5.2.1 - Creating Buffer Objects
"clEnqueueReadBuffer" => [Core, 110], # 5.2.2 - Reading, Writing, Copying Buffer Objects
"clEnqueueWriteBuffer" => [Core, 110], # 5.2.2 - Reading, Writing, Copying Buffer Objects
"clEnqueueReadBufferRect" => [Core, 112], # 5.2.2 - Reading, Writing and Copying Buffer Objects
"clEnqueueWriteBufferRect" => [Core, 113], # 5.2.2 - Reading, Writing and Copying Buffer Objects
"clEnqueueCopyBuffer" => [Core, 117], # 5.2.2 - Reading, Writing, Copying Buffer Objects
"clEnqueueCopyBufferRect" => [Core, 119], # 5.2.2 - Reading, Writing and Copying Buffer Objects
"clEnqueueFillBuffer" => [Core, 122], # 5.2.3 - Filling Buffer Objects
"clEnqueueMapBuffer" => [Core, 124], # 5.2.4 - Mapping Buffer Objects
"clCreateImage" => [Core, 128], # 5.3.1 - Creating Image Objects
"cl_image_format" => [Core, 131], # 5.3.1.1 - Image Format Descriptor
"cl_image_desc" => [Core, 134], # 5.3.1.2 - Image Descriptor
"clGetSupportedImageFormats" => [Core, 136], # 5.3.2 - Querying List of Supported Image Formats
"supportedImageFormats" => [Core, 137], # 5.3.2.1 - Minimum List of Supported Image Formats
"clEnqueueReadImage" => [Core, 140], # 5.3.3 - Reading, Writing and Copying Image Objects
"clEnqueueWriteImage" => [Core, 140], # 5.3.3 - Reading, Writing and Copying Image Objects
"clEnqueueCopyImage" => [Core, 144], # 5.3.3 - Reading, Writing and Copying Image Objects
"clEnqueueFillImage" => [Core, 147], # 5.3.4 - Filling Image Objects
"clEnqueueCopyImageToBuffer" => [Core, 149], # 5.3.5 - Copying between Image and Buffer Objects
"clEnqueueCopyBufferToImage" => [Core, 151], # 5.3.5 - Copying between Image and Buffer Objects
"clEnqueueMapImage" => [Core, 154], # 5.3.6 - Mapping Image Objects
"clGetImageInfo" => [Core, 157], # 5.3.7 - Image Object Queries
"clCreatePipe" => [Core, 160], # 5.4.1 - Creating Pipe Objects
"pipeFunctions" => [Core, 160], # 5.4.1 - Creating Pipe Objects
"clGetPipeInfo" => [Core, 161], # 5.4.2 - Pipe Object Queries
"clRetainMemObject" => [Core, 163], # 5.5.1 - Retaining and Releasing Memory Objects
"clReleaseMemObject" => [Core, 163], # 5.5.1 - Retaining and Releasing Memory Objects
"clSetMemObjectDestructorCallback" => [Core, 164], # 5.5.1 - Retaining and Releasing Memory Objects
"clEnqueueUnmapMemObject" => [Core, 165], # 5.5.2 - Unmapping Mapped Memory Objects
"clEnqueueMigrateMemObjects" => [Core, 168], # 5.5.4 - Migrating Memory Objects
"clGetMemObjectInfo" => [Core, 170], # 5.5.5 - Memory Object Queries
"sharedVirtualMemory" => [Core, 174], # 5.6 - Shared Virtual Memory
"clSVMAlloc" => [Core, 175], # 5.6.1 - SVM Sharing
"clSVMFree" => [Core, 178], # 5.6.1 - SVM Sharing
"clEnqueueSVMFree" => [Core, 179], # 5.6.2 - Enqueuing SVM Operations
"clEnqueueSVMMemcpy" => [Core, 180], # 5.6.2 - Enqueuing SVM Operations
"clEnqueueSVMMemFill" => [Core, 182], # 5.6.2 - Enqueuing SVM Operations
"clEnqueueSVMMap" => [Core, 184], # 5.6.2 - Enqueuing SVM Operations
"clEnqueueSVMUnmap" => [Core, 185], # 5.6.2 - Enqueuing SVM Operations
"clEnqueueSVMMigrateMem" => [Core, 187], # 5.6.2 - Enqueuing SVM Operations
"clCreateSamplerWithProperties" => [Core, 190], # 5.7.1 - Creating Sampler Objects
"clRetainSampler" => [Core, 191], # 5.7.1 - Creating Sampler Objects
"clReleaseSampler" => [Core, 192], # 5.7.1 - Creating Sampler Objects
"clGetSamplerInfo" => [Core, 192], # 5.7.2 - Sampler Object Queries
"clCreateProgramWithSource" => [Core, 194], # 5.8.1 - Creating Program Objects
"clCreateProgramWithIL" => [Core, 195], # 5.8.1 - Creating Program Objects
"clCreateProgramWithBinary" => [Core, 196], # 5.8.1 - Creating Program Objects
"clCreateProgramWithBuiltInKernels" => [Core, 198], # 5.8.1 - Creating Program Objects
"clRetainProgram" => [Core, 199], # 5.8.1 - Creating Program Objects
"clReleaseProgram" => [Core, 199], # 5.8.1 - Creating Program Objects
"clBuildProgram" => [Core, 200], # 5.8.2 - Building Program Executables
"clCompileProgram" => [Core, 202], # 5.8.3 - Separate Compilation and Linking of Programs
"clLinkProgram" => [Core, 205], # 5.8.3 - Separate Compilation and Linking of Programs
"clUnloadPlatformCompiler" => [Core, 213], # 5.8.6 - Unloading the OpenCL Compiler
"clGetProgramInfo" => [Core, 214], # 5.8.7 - Program Object Queries (updated for 1.2 rev 14)
"clGetProgramBuildInfo" => [Core, 217], # 5.8.7 - Program Object Queries
"clCreateKernel" => [Core, 221], # 5.9.1 - Creating Kernel Objects
"clCreateKernelsInProgram" => [Core, 222], # 5.9.1 - Creating Kernel Objects
"clRetainKernel" => [Core, 223], # 5.9.1 - Creating Kernel Objects
"clReleaseKernel" => [Core, 223], # 5.9.1 - Creating Kernel Objects
"clSetKernelArg" => [Core, 224], # 5.9.2 - Setting Kernel Arguments
"clSetKernelArgSVMPointer" => [Core, 226], # 5.9.2 - Setting Kernel Arguments
"clSetKernelExecInfo" => [Core, 227], # 5.9.2 - Setting Kernel Arguments
"clCloneKernel" => [Core, 230], # 5.9.3 - Copying Kernel Objects
"clGetKernelInfo" => [Core, 231], # 5.9.3 - Kernel Object Queries (updated for 2.1)
"clGetKernelWorkGroupInfo" => [Core, 233], # 5.9.4 - Kernel Object Queries
"clGetKernelSubGroupInfo" => [Core, 236], # 5.9.4 - Kernel Object Queries (new in 2.1)
"clGetKernelArgInfo" => [Core, 238], # 5.9.4 - Kernel Object Queries
"clEnqueueNDRangeKernel" => [Core, 242], # 5.10 - Executing Kernels (updated for 1.2 rev 14)
"clEnqueueNativeKernel" => [Core, 246], # 5.10 - Executing Kernels (updated for 1.2 rev 14)
"clCreateUserEvent" => [Core, 250], # 5.11 - Event Objects
"clSetUserEventStatus" => [Core, 250], # 5.11 - Event Objects
"clWaitForEvents" => [Core, 251], # 5.11 - Event Objects
"clGetEventInfo" => [Core, 252], # 5.11 - Event Objects
"clSetEventCallback" => [Core, 255], # 5.11 - Event Objects
"clRetainEvent" => [Core, 257], # 5.11 - Event Objects
"clReleaseEvent" => [Core, 257], # 5.11 - Event Objects
"clEnqueueMarkerWithWaitList" => [Core, 259], # 5.12 - Markers, Barriers and Waiting for Events
"clEnqueueBarrierWithWaitList" => [Core, 260], # 5.12 - Markers, Barriers and Waiting for Events
"clGetEventProfilingInfo" => [Core, 263], # 5.14 - Profiling Operations on Memory Objects and Kernels
"clFlush" => [Core, 266], # 5.15 - Flush and Finish
"clFinish" => [Core, 266], # 5.15 - Flush and Finish
"deprecated" => [Core, 291], # F - Changes
"cl_khr_global_int32_base_atomics" => [Core, 292], # F.1 Summary of changes from OpenCL 1.0
"cl_khr_global_int32_extended_atomics" => [Core, 292], # F.1 Summary of changes from OpenCL 1.0
"cl_khr_local_int32_base_atomics" => [Core, 292], # F.1 Summary of changes from OpenCL 1.0
"cl_khr_local_int32_extended_atomics" => [Core, 292], # F.1 Summary of changes from OpenCL 1.0
"scalarDataTypes" => [CLan, 6], # 6.1.1 - Built-in Scalar Data Types
"vectorDataTypes" => [CLan, 9], # 6.1.2 - Built-in Vector Data Types
"otherDataTypes" => [CLan, 10], # 6.1.3 - Other Built-in Data Types
"reservedDataTypes" => [CLan, 11], # 6.1.4 - Reserved Data Types
"convert_T" => [CLan, 20], # 6.2.3 - Explicit Conversions
"as_typen" => [CLan, 24], # 6.2.4.2 - Reinterpreting Types Using as_typen()
"operators" => [CLan, 27], # 6.3 - Operators
"addressSpaceQualifiers" => [CLan, 34], # 6.5 - Address Space Qualifiers
"genericAddressSpace" => [CLan, 38], # 6.5.5 - The generic address space
"accessQualifiers" => [CLan, 46], # 6.6 - Access Qualifiers
"functionQualifiers" => [CLan, 47], # 6.7 - Function Qualifiers
"storageSpecifiers" => [CLan, 50], # 6.8 - Storage-class Specifiers
"restrictions" => [CLan, 51], # 6.9 - Restrictions
"preprocessorDirectives" => [CLan, 54], # 6.10 - Preprocessor Directives and Macros
"attribute" => [CLan, 56], # 6.11 - Attribute Qualifiers
"attributes-types" => [CLan, 57], # 6.11.1 - Specifying Attributes of Types
"attributes-variables" => [CLan, 59], # 6.11.3 - Specifying Attributes of Variables
"attributes-blocksAndControlFlow" => [CLan, 61], # 6.11.4 - Specifying Attributes of Blocks and Control...
"attributes-loopUnroll" => [CLan, 61], # 6.11.5 - Specifying Attribute For Unrolling Loops
"blocks" => [CLan, 64], # 6.12 - Blocks
"workItemFunctions" => [CLan, 69], # 6.13.1 - Work-Item Functions
"mathFunctions" => [CLan, 72], # 6.13.2 - Math Functions
"FP_CONTRACT" => [CLan, 79], # 6.13.2.1 - Floating-point macros and pragmas
"mathConstants" => [CLan, 79], # 6.13.2 - Table at end of Math Functions
"macroLimits" => [CLan, 80], # 6.13.2.1 - Floating-point macros and pragmas
"integerFunctions" => [CLan, 82], # 6.13.3 - Integer Functions
"commonFunctions" => [CLan, 86], # 6.13.4 - Common Functions
"geometricFunctions" => [CLan, 88], # 6.13.5 - Geometric Functions
"relationalFunctions" => [CLan, 90], # 6.13.6 - Relational Functions
"vectorDataLoadandStoreFunctions" => [CLan, 93], # 6.13.7 - Vector Data Load and Store Functions
"syncFunctions" => [CLan, 97], # 6.13.8 - Synchronization Functions
"work_group_barrier" => [CLan, 97], # 6.13.8 - Synchronization and Memory Fence Functions
"addressSpaceQualifierFuncs" => [CLan, 99], # 6.13.9 - Address Space Qualifier Functions
"asyncCopyFunctions" => [CLan, 100], # 6.13.10 - Async Copies
"atomicFunctions" => [CLan, 103], # 6.13.11 - Atomic Functions
"ATOMIC_VAR_INIT" => [CLan, 104], # 6.13.11.1 - The ATOMIC_VAR_INIT macro
"atomic_init" => [CLan, 104], # 6.13.11.2 - The atomic_init generic function
"memory_order" => [CLan, 105], # 6.13.11.3 - Order and Consistency
"memory_scope" => [CLan, 105], # 6.13.11.4 - Memory Scope
"atomic_work_item_fence" => [CLan, 105], # 6.13.11.5.1 - The atomic_flag_clear functions
"atomic_store" => [CLan, 107], # 6.13.11.7.1 - The atomic_store generic functions
"atomic_load" => [CLan, 107], # 6.13.11.7.2 - The atomic_load generic functions
"atomic_exchange" => [CLan, 108], # 6.13.11.7.3 - The atomic_exchange generic functions
"atomic_compare_exchange" => [CLan, 108], # 6.13.11.7.4 - The atomic_compare_exchange generic functions
"atomic_fetch_key" => [CLan, 109], # 6.13.11.7.5 - The atomic_fetch and modify generic functions
"atomic_flag" => [CLan, 110], # 6.13.11.7.6 - The atomic_flag type and operations
"atomic_flag_test_and_set" => [CLan, 111], # 6.13.11.7.7 - The atomic_flag_test_and_set functions
"atomic_flag_clear" => [CLan, 111], # 6.13.11.7.8 - The atomic_flag_clear functions
"miscVectorFunctions" => [CLan, 113], # 6.13.12 - Miscellaneous Vector Functions
"printfFunction" => [CLan, 115], # 6.13.13 - printf
"sampler_t" => [CLan, 123], # 6.13.14.1 - Samplers
"cl_khr_srgb_image_writes" => [CLan, 126], # 6.13.14.1.2 - sRGB Images
"imageFunctions" => [CLan, 127], # 6.13.14 - Image Read and Write Functions
"imageQueryFunctions" => [CLan, 149], # 6.13.14.5 - Built-in Image Query Functions
"work_group_all" => [CLan, 154], # 6.13.15 - Work-group Functions
"work_group_any" => [CLan, 154], # 6.13.15 - Work-group Functions
"work_group_broadcast" => [CLan, 154], # 6.13.15 - Work-group Functions
"work_group_reduce" => [CLan, 154], # 6.13.15 - Work-group Functions
"work_group_scan_exclusive" => [CLan, 154], # 6.13.15 - Work-group Functions
"work_group_scan_inclusive" => [CLan, 155], # 6.13.15 - Work-group Functions
"read_pipe" => [CLan, 158], # 6.13.16.2 - Built-in Pipe Read and Write Functions
"write_pipe" => [CLan, 158], # 6.13.16.2 -
"reserve_read_pipe" => [CLan, 158], # 6.13.16.2 -
"reserve_write_pipe" => [CLan, 158], # 6.13.16.2 -
"commit_read_pipe" => [CLan, 159], # 6.13.16.2 -
"commit_write_pipe" => [CLan, 159], # 6.13.16.2 -
"is_valid_reserve_id" => [CLan, 159], # 6.13.16.2 -
"work_group_reserve_read_pipe" => [CLan, 159], # 6.13.16.3 - Built-in Work-group Pipe Read and Write Functions
"work_group_reserve_write_pipe" => [CLan, 159], # 6.13.16.3 -
"work_group_commit_read_pipe" => [CLan, 159], # 6.13.16.3 -
"work_group_commit_write_pipe" => [CLan, 159], # 6.13.16.3 -
"get_pipe_num_packets" => [CLan, 160], # 6.13.16.4 - Built-in Pipe Query Functions
"get_pipe_max_packets" => [CLan, 160], # 6.13.16.4 -
"enqueueKernelFunctions" => [CLan, 162], # 6.13.17 - Enqueuing Kernels
"kernelQueryFunctions" => [CLan, 169], # 6.13.17.6 - Built-in Functions – Kernel Query Functions
"enqueue_marker" => [CLan, 170], # 6.13.17.7 - Built-in Functions – Queuing other commands
"eventFunctions" => [CLan, 171], # 6.13.17.8 - Built-in Functions – Event Functions
"helperFunctions" => [CLan, 174], # 6.13.17.9 - built-in helper functions
"referenceWong" => [CLan, 1], # 11 - [ References (to Wong paper) ]
"EXTENSION" => [Ext, 7], # 9.1 - Compiler Directives for Optional Extensions
"clGetExtensionFunctionAddressForPlatform" => [Ext, 9], # 9.2 - Getting OpenCL API Extension Function Pointers
"cl_khr_int64_base_atomics" => [Ext, 12], # 9.3 - 64-bit Atomics
"cl_khr_int64_extended_atomics" => [Ext, 12], # 9.3 - 64-bit Atomics
"cl_khr_fp16" => [Ext, 12], # 9.4 - Half Floating-Point
"imageFunctionsHalf" => [Ext, 24], # 9.4.8 - Image Read and Write Functions (half)
"cl_khr_3d_image_writes" => [Ext, 32], # 9.4.8 - Image Read and Write Functions (half) [in footnote only]
"cl_khr_gl_sharing" => [Ext, 37], # 9.5 - Creating CL context from a GL context or share group
"clGetGLContextInfoKHR" => [Ext, 41], # 9.5.5 - Additions to section 9.8 of the...
"clCreateFromGLBuffer" => [Ext, 47], # 9.6.2 - CL Buffer Objects -> GL Buffer Objects
"clCreateFromGLTexture" => [Ext, 48], # 9.6.3 - CL Image Objects -> GL Textures
"clCreateFromGLRenderbuffer" => [Ext, 51], # 9.6.4 - CL Image Objects -> GL Renderbuffers
"clGetGLObjectInfo" => [Ext, 53], # 9.6.5 - Querying GL object information from a CL...
"clGetGLTextureInfo" => [Ext, 54], # 9.6.5 - Querying GL object information from a CL...
"clEnqueueAcquireGLObjects" => [Ext, 55], # 9.6.6 - Sharing memory objects that map to GL objects...
"clEnqueueReleaseGLObjects" => [Ext, 56], # 9.6.6 - Sharing memory objects that map to GL objects...
"cl_khr_gl_event" => [Ext, 59], # 9.7 - Creating CL event objets
"clCreateEventFromGLsyncKHR" => [Ext, 60], # 9.7.4 - Additions to Chapter 5
"cl_khr_d3d10_sharing" => [Ext, 64], # 9.8 - Sharing Memory Objects with Direct3D 10
"clGetDeviceIDsFromD3D10KHR" => [Ext, 69], # 9.8.7.1 - Querying OpenCL Devices Corresponding to... 11...
"clCreateFromD3D10BufferKHR" => [Ext, 71], # 9.8.7.3 - Sharing Direct3D 10 Buffer Resources as OpenCL...
"clCreateFromD3D10Texture2DKHR" => [Ext, 72], # 9.8.7.4 - Sharing Direct3D 10 Texture and Resources...
"clCreateFromD3D10Texture3DKHR" => [Ext, 73], # 9.8.7.4 - Sharing Direct3D 10 Texture and...
"clEnqueueAcquireD3D10ObjectsKHR" => [Ext, 75], # 9.8.7.6 - Sharing memory objects created from Direct3D 10..
"clEnqueueReleaseD3D10ObjectsKHR" => [Ext, 77], # 9.8.7.6 - Sharing memory objects created from...
"cl_khr_dx9_media_sharing" => [Ext, 81], # 9.9 - DX9 Media Surface Sharing
"clGetDeviceIDsFromDX9MediaAdapterKHR" => [Ext, 85], # 9.9.7.1 - Querying OpenCL Devices corresponding....
"clCreateFromDX9MediaSurfaceKHR" => [Ext, 87], # 9.9.7.2 Creating Media Resources as OpenCL Image Objects
"clEnqueueAcquireDX9MediaSurfacesKHR" => [Ext, 89], # 9.9.7.4 - Sharing Memory Objects created from Media Surfaces
"clEnqueueReleaseDX9MediaSurfacesKHR" => [Ext, 91], # 9.9.7.4 - Sharing Memory Objects...
"cl_khr_d3d11_sharing" => [Ext, 95], # 9.10 - Sharing Memory Objects with Direct3D 11
"clGetDeviceIDsFromD3D11KHR" => [Ext, 100], # 9.10.7.1 - Querying OpenCL Devices Corresponding to Direct3D
"clCreateFromD3D11BufferKHR" => [Ext, 102], # 9.10.7.3 - Sharing Direct3D 11 Buffer Resources
"clCreateFromD3D11Texture2DKHR" => [Ext, 103], # 9.10.7.4 - Sharing Direct3D 11 Texture and Resources...
"clCreateFromD3D11Texture3DKHR" => [Ext, 104], # 9.10.7.4 - Sharing Direct3D 11 Texture and Resources....
"clEnqueueAcquireD3D11ObjectsKHR" => [Ext, 106], # 9.10.7.6 - Sharing memory objects created from Direct3D 11...
"clEnqueueReleaseD3D11ObjectsKHR" => [Ext, 108], # 9.10.7.6 - Sharing memory objects created from Direct3D 11...
"cl_khr_gl_depth_images" => [Ext, 111], # 9.11 - Sharing OpenGL and OpenGL ES Depth and Depth-Stencil Images
"cl_khr_gl_msaa_sharing" => [Ext, 113], # 9.12 - Sharing of CL / GL MSAA Textures
"get_image_num_samples" => [Ext, 119], # 9.12.3 - Additions to Chapter 6 for MSAA
"cl_khr_initialize_memory" => [Ext, 120], # 9.13 - Local and Private Memory Initialization
"cl_khr_terminate_context" => [Ext, 122], # 9.14 - Terminiating OpenCL contexts
"clTerminateContextKHR" => [Ext, 123], # 9.14 - Terminiating OpenCL contexts
"cl_khr_spir" => [Ext, 125], # 9.15 - SPIR Binaries
"cl_khr_icd" => [Ext, 127], # 9.16 - OpenCL Installable Client Driver (ICD)
"clIcdGetPlatformIDsKHR" => [Ext, 130], # 9.16.9 - Additions to chapter 4...
"cl_khr_subgroups" => [Ext, 133], # 9.17 - Sub-groups - deprecated
"cl_khr_mipmap_image" => [Ext, 156], # 9.18 - Mipmaps
"get_image_num_mip_levels" => [Ext, 165], # 9.18.2.1 - Additions to section 6.13.14 – Image Read, Write and Query...
"cl_khr_egl_image" => [Ext, 166], # 9.19 - Creating CL image objects from EGL images
"clCreateFromEGLImageKHR" => [Ext, 167], # 9.19.4 - Additions to Chapter 5 of the OpenCL 2.0 Specification
"clEnqueueAcquireEGLObjectsKHR" => [Ext, 169], # 9.19.4 - Additions to Chapter 5 of the OpenCL 2.0 Specification
"clEnqueueReleaseEGLObjectsKHR" => [Ext, 170], # 9.19.4 - Additions to Chapter 5 of the OpenCL 2.0 Specification
"cl_khr_egl_event" => [Ext, 174], # 9.20 - Creating CL event objects from EGL sync objects
"clCreateEventFromEGLSyncKHR" => [Ext, 175], # 9.20.4 - Additions to Chapter 5 of the OpenCL 2.0 Specification
"cl_khr_device_enqueue_local_arg_types" => [Ext, 178], # 9.20 - Device Enqueue Local Argument Types
"cl_khr_priority_hints" => [Ext, 178], # 9.21 - Priority Hints
"cl_khr_throttle_hints" => [Ext, 179], # 9.22 - Throttle Hints
"cl_khr_il_program" => [Ext, 180], # A.1 Summary of changes from OpenCL 2.0
}
###############################################################################
# Copy the specified file to the output, substituting any references to spec page numbers
#
IO.foreach(ARGV[0]) do |line|
if line.match("namedest=")
keyword = line.sub(/^.*namedest=/, "").sub(/\".*$/, "").chomp.rstrip
if Pagenums.has_key?(keyword)
specName = Pagenums.fetch(keyword)[0]
pageNum = Pagenums.fetch(keyword)[1]
#puts "specName=" + specName + ", pageNum=" + pageNum.to_s
# We no longer insert the page numbers, because they are not up to date - see
# https://github.com/KhronosGroup/OpenCL-Docs/issues/87
# puts line.sub(/namedest=[^\s]*\"/, "page=" + pageNum.to_s + '"').sub(/opencl-1.x-latest.pdf/, specName)
puts line.sub(/opencl-1.x-latest.pdf/, specName)
else
abort("Spec page number for keyword \"" + keyword + "\" not found in " + $0) + '"'
end
else
puts line
end
end