[Mesa-dev] [PATCH v5 00/21] Introducing SPIR-V support to clover

Pierre Moreau pierre.morrow at free.fr
Sun Mar 25 18:02:09 UTC 2018


Hello,

This has only minor changes compared to the previous version, but as it
introduces a new patch, I preferred to resend the whole series, as patch
numbering would be messed up otherwise.

As is_valid_spirv will be also used by the SPIR-V backend, I moved that
function away from api/program.cpp and into spirv/invocation.cpp, to avoid
introducing it in one place in this series, and moving it around in the next
series.

The current repository for llvm-spirv is temporary, and should be replaced by
an official one during next week. I’ll send an update to patch 13 when that
happens.

The series is accessible at
https://github.com/pierremoreau/mesa/tree/clover_spirv_series_v5.

Thanks in advance for the reviews and comments.
Pierre


v5:
* Update patch 02 to return the proper type for
  clCreateCommandQueueWithProperties;
* Add a comment in patch 13 to indicate where to find llvm-spirv;
* Move the is_spirv_valid function to spirv/invocation.cpp and improve it to
  take an OpenCL version as argument, which is used to configure the SPIR-V
  validator, instead of hardcoding OpenCL 1.2: new patch 16;
* Edit patch 17 to use SPIR-V functions from the backend.

Missing reviews/acks for:
* Patch 07: “clover/api: Rework the validation of devices for building”;
* Patch 14: “clover/llvm: Allow translating from SPIR-V to LLVM IR”;
* Patch 18: “clover: Handle CL_PROGRAM_IL in clGetProgramInfo”


Karol Herbst (1):
  clover: update ICD table to support everything up to 2.2

Pierre Moreau (20):
  include/CL: Update to the latest OpenCL 2.2 headers
  clover/api: Fix tab indentation to spaces
  clover: Remove the TGSI backend as unused
  clover: Add an helper for checking if an IR is supported
  clover/device: Replace usage of "1 << PIPE_SHADER_IR_*" with
    supports_ir
  clover/api: Rework the validation of devices for building
  clover/api: Fail if trying to build a non-executable binary
  clover: Disallow creating libraries from other libraries
  clover: Track flags per module section
  clover: Move device extensions definitions to core/device.cpp
  clover: Move platform extensions definitions to clover/platform.cpp
  configure.ac,meson: Check for SPIRV-Tools and llvm-spirv
  clover/llvm: Allow translating from SPIR-V to LLVM IR
  include/CL: Add cl_khr_il_program
  clover/spirv: Add functions for validating SPIR-V binaries
  clover: Implement clCreateProgramWithILKHR
  clover: Handle CL_PROGRAM_IL in clGetProgramInfo
  clover/api: Implement CL_DEVICE_IL_VERSION
  clover: Advertise cl_khr_il_program
  clover: Implement clCreateProgramWithIL from OpenCL 2.1

 configure.ac                                       |   18 +
 include/CL/cl.h                                    |  472 +++++++--
 include/CL/cl_d3d10.h                              |    7 +-
 include/CL/cl_d3d11.h                              |    7 +-
 include/CL/cl_dx9_media_sharing.h                  |    9 +-
 include/CL/cl_dx9_media_sharing_intel.h            |  182 ++++
 include/CL/cl_egl.h                                |    9 +-
 include/CL/cl_ext.h                                |  338 +++++-
 include/CL/cl_ext_intel.h                          |  429 ++++++++
 include/CL/cl_gl.h                                 |    7 +-
 include/CL/cl_gl_ext.h                             |    7 +-
 include/CL/cl_platform.h                           |  328 ++++--
 include/CL/cl_va_api_media_sharing_intel.h         |  172 ++++
 include/CL/opencl.h                                |    7 +-
 meson.build                                        |    8 +
 src/gallium/state_trackers/clover/Makefile.am      |   22 +-
 src/gallium/state_trackers/clover/Makefile.sources |    6 +-
 src/gallium/state_trackers/clover/api/device.cpp   |   20 +-
 src/gallium/state_trackers/clover/api/dispatch.cpp |   29 +-
 src/gallium/state_trackers/clover/api/dispatch.hpp |  194 ++++
 src/gallium/state_trackers/clover/api/platform.cpp |    6 +-
 src/gallium/state_trackers/clover/api/program.cpp  |  124 ++-
 src/gallium/state_trackers/clover/core/device.cpp  |   32 +-
 src/gallium/state_trackers/clover/core/device.hpp  |    2 +
 src/gallium/state_trackers/clover/core/module.cpp  |    1 +
 src/gallium/state_trackers/clover/core/module.hpp  |   13 +-
 .../state_trackers/clover/core/platform.cpp        |    5 +
 .../state_trackers/clover/core/platform.hpp        |    2 +
 src/gallium/state_trackers/clover/core/program.cpp |   55 +-
 src/gallium/state_trackers/clover/core/program.hpp |   12 +
 .../state_trackers/clover/llvm/codegen/bitcode.cpp |    3 +-
 .../state_trackers/clover/llvm/codegen/common.cpp  |    2 +-
 .../state_trackers/clover/llvm/invocation.cpp      |   29 +
 .../state_trackers/clover/llvm/invocation.hpp      |    6 +
 src/gallium/state_trackers/clover/meson.build      |   19 +-
 .../state_trackers/clover/spirv/invocation.cpp     |  138 +++
 .../clover/{tgsi => spirv}/invocation.hpp          |   26 +-
 src/gallium/state_trackers/clover/spirv/spirv.hpp  | 1081 ++++++++++++++++++++
 .../state_trackers/clover/tgsi/compiler.cpp        |  120 ---
 39 files changed, 3547 insertions(+), 398 deletions(-)
 create mode 100644 include/CL/cl_dx9_media_sharing_intel.h
 create mode 100644 include/CL/cl_ext_intel.h
 create mode 100644 include/CL/cl_va_api_media_sharing_intel.h
 create mode 100644 src/gallium/state_trackers/clover/spirv/invocation.cpp
 rename src/gallium/state_trackers/clover/{tgsi => spirv}/invocation.hpp (56%)
 delete mode 100644 src/gallium/state_trackers/clover/tgsi/compiler.cpp

-- 
2.16.3



More information about the mesa-dev mailing list