On 02/11/2016 08:03 PM, Marek Olšák wrote:
BTW, all my Reviewed-by tags that I gave you for v1 and v2 now also apply to v3.

Thanks for your time and patience. :-)


Marek

On Thu, Feb 11, 2016 at 12:21 PM, Marek Olšák <mar...@gmail.com> wrote:
Patches 3-4, 8-10, 12, 14-15:

Reviewed-by: Marek Olšák <marek.ol...@amd.com>

Marek

On Wed, Feb 10, 2016 at 7:10 PM, Samuel Pitoiset
<samuel.pitoi...@gmail.com> wrote:
Hi,

This series adds the core support for ARB_compute_shader which is required for
OpenGL 4.3. This series is now based on mesa master since Ilia has pushed his
work related to ssbo+atomics.

In piglit, this passes all compute related tests except two of them which are
related to ARB_shader_image_load_store (Ilia is currently working on it).

In dEQP, there are 92 fails and 1383 passes. The list of fails are
explained below.

Importand changes from v3:
  - ARB_compute_shader is not exposed by default because compute shaders
    required images support... To use it, don't forget to set
    MESA_EXTENSION_OVERRIDE=GL_ARB_compute_shader (suggested by Ilia)
  - dump the TGSI compute program in the trace driver
  - correctly initialize pipe_grid_info for nv50/nvc0

Important changes from v2:
   - introduce TGSI_FILE_MEMORY and make use it instead of TGSI_FILE_BUFFER
   - add PIPE_SHADER_CAP_SUPPORTED_IRS and enable ARB_compute_shader only if the
     underlying driver supports TGSI
   - do not reserve a buffer for shared memory, that's useless

Patches which still need to be reviewed:
  - gallium: add a new interface for pipe_context::launch_grid() (v1 only)
  - gallium: add indirect compute parameters to pipe_grid_info (v1 only)
  - gallium: add PIPE_SHADER_CAP_SUPPORTED_IRS
  - tgsi/ureg: add shared variables support for compute shaders
  - st/mesa: add a second pipeline for compute (v1 only)
  - st/mesa: add intrinsics for shared variables (v1 only)
  - st/mesa: add mappings for compute shader sysvals (v1 only)
  - st/mesa: implement limits for ARB_compute_shader (v1 only)

Only minor changes have been applied since the v1, but I just want to be sure
that all patches are correctly Rb. The Gallium interface is now stable, so I
will probably push this series this week if I don't get strong objections. :-)

Please review, thanks!

Ilia Mirkin (1):
   mesa: make compute maximums reflect driver-provided values

Samuel Pitoiset (18):
   mesa: do not use a constant for MAX_COMPUTE_SHARED_SIZE
   mesa: store shared size in gl_compute_program
   mesa: add PROGRAM_MEMORY
   gallium/cso: add support for compute shaders
   gallium: add a new interface for pipe_context::launch_grid()
   gallium: add indirect compute parameters to pipe_grid_info
   gallium: add PIPE_SHADER_CAP_SUPPORTED_IRS
   tgsi/ureg: add shared variables support for compute shaders
   st/mesa: add a second pipeline for compute
   st/mesa: add compute shader states
   st/mesa: add conversion for compute shaders
   st/mesa: add intrinsics for shared variables
   st/mesa: keep track of shared memory declarations
   st/mesa: add mappings for compute shader sysvals
   st/mesa: add state validation for compute shaders
   st/mesa: add compute program dispatch callbacks
   st/mesa: implement limits for ARB_compute_shader
   trace: add all compute related functions

  src/compiler/glsl/builtin_variables.cpp            |  15 ++-
  src/compiler/glsl/glsl_parser_extras.cpp           |   7 +
  src/compiler/glsl/glsl_parser_extras.h             |   5 +
  src/compiler/glsl/main.cpp                         |   5 +
  src/gallium/auxiliary/cso_cache/cso_context.c      |  30 +++++
  src/gallium/auxiliary/cso_cache/cso_context.h      |   4 +
  src/gallium/auxiliary/gallivm/lp_bld_limits.h      |   2 +
  src/gallium/auxiliary/tgsi/tgsi_build.c            |   1 +
  src/gallium/auxiliary/tgsi/tgsi_dump.c             |   5 +
  src/gallium/auxiliary/tgsi/tgsi_exec.h             |   2 +
  src/gallium/auxiliary/tgsi/tgsi_strings.c          |   1 +
  src/gallium/auxiliary/tgsi/tgsi_text.c             |   3 +
  src/gallium/auxiliary/tgsi/tgsi_ureg.c             |  32 +++++
  src/gallium/auxiliary/tgsi/tgsi_ureg.h             |   3 +
  src/gallium/docs/source/screen.rst                 |   2 +
  src/gallium/drivers/freedreno/freedreno_screen.c   |   2 +
  src/gallium/drivers/ilo/ilo_gpgpu.c                |   8 +-
  src/gallium/drivers/ilo/ilo_screen.c               |   2 +
  src/gallium/drivers/nouveau/nv50/nv50_compute.c    |  16 +--
  src/gallium/drivers/nouveau/nv50/nv50_context.h    |   3 +-
  .../drivers/nouveau/nv50/nv50_query_hw_sm.c        |  12 +-
  src/gallium/drivers/nouveau/nvc0/nvc0_compute.c    |  19 ++-
  src/gallium/drivers/nouveau/nvc0/nvc0_context.h    |   6 +-
  .../drivers/nouveau/nvc0/nvc0_query_hw_sm.c        |  12 +-
  src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   2 +
  src/gallium/drivers/nouveau/nvc0/nve4_compute.c    |  10 +-
  src/gallium/drivers/r300/r300_screen.c             |   4 +
  src/gallium/drivers/r600/evergreen_compute.c       |  19 ++-
  src/gallium/drivers/r600/r600_pipe.c               |   2 +
  src/gallium/drivers/radeonsi/si_compute.c          |  33 +++--
  src/gallium/drivers/radeonsi/si_pipe.c             |   5 +
  src/gallium/drivers/svga/svga_screen.c             |   6 +
  src/gallium/drivers/trace/tr_context.c             |  75 +++++++++++
  src/gallium/drivers/trace/tr_dump_state.c          |  60 +++++++++
  src/gallium/drivers/trace/tr_dump_state.h          |   4 +
  src/gallium/drivers/trace/tr_screen.c              |  25 ++++
  src/gallium/drivers/vc4/vc4_screen.c               |   2 +
  src/gallium/include/pipe/p_context.h               |  17 +--
  src/gallium/include/pipe/p_defines.h               |   1 +
  src/gallium/include/pipe/p_shader_tokens.h         |   4 +-
  src/gallium/include/pipe/p_state.h                 |  39 ++++++
  src/gallium/state_trackers/clover/core/kernel.cpp  |  13 +-
  src/gallium/tests/trivial/compute.c                |  11 +-
  src/mesa/Makefile.sources                          |   2 +
  src/mesa/main/config.h                             |  11 --
  src/mesa/main/get_hash_params.py                   |  14 +-
  src/mesa/main/mtypes.h                             |   7 +
  src/mesa/main/shaderapi.c                          |   1 +
  src/mesa/state_tracker/st_atom.c                   |  54 ++++++--
  src/mesa/state_tracker/st_atom.h                   |  11 +-
  src/mesa/state_tracker/st_atom_atomicbuf.c         |  18 +++
  src/mesa/state_tracker/st_atom_constbuf.c          |  46 ++++++-
  src/mesa/state_tracker/st_atom_sampler.c           |   8 ++
  src/mesa/state_tracker/st_atom_shader.c            |  36 +++++
  src/mesa/state_tracker/st_atom_storagebuf.c        |  21 +++
  src/mesa/state_tracker/st_atom_texture.c           |  26 ++++
  src/mesa/state_tracker/st_cb_bitmap.c              |   2 +-
  src/mesa/state_tracker/st_cb_clear.c               |   2 +-
  src/mesa/state_tracker/st_cb_compute.c             |  85 ++++++++++++
  src/mesa/state_tracker/st_cb_compute.h             |  38 ++++++
  src/mesa/state_tracker/st_cb_drawpixels.c          |   4 +-
  src/mesa/state_tracker/st_cb_drawtex.c             |   2 +-
  src/mesa/state_tracker/st_cb_msaa.c                |   2 +-
  src/mesa/state_tracker/st_cb_program.c             |  28 ++++
  src/mesa/state_tracker/st_cb_rasterpos.c           |   2 +-
  src/mesa/state_tracker/st_cb_readpixels.c          |   2 +-
  src/mesa/state_tracker/st_context.c                |   9 ++
  src/mesa/state_tracker/st_context.h                |  12 ++
  src/mesa/state_tracker/st_draw.c                   |   4 +-
  src/mesa/state_tracker/st_draw_feedback.c          |   2 +-
  src/mesa/state_tracker/st_extensions.c             |  43 +++++-
  src/mesa/state_tracker/st_glsl_to_tgsi.cpp         | 130 +++++++++++++++++-
  src/mesa/state_tracker/st_program.c                | 147 +++++++++++++++++++++
  src/mesa/state_tracker/st_program.h                |  63 +++++++++
  74 files changed, 1219 insertions(+), 142 deletions(-)
  create mode 100644 src/mesa/state_tracker/st_cb_compute.c
  create mode 100644 src/mesa/state_tracker/st_cb_compute.h

--
2.6.4

** PIGLIT **

MESA_GL_VERSION_OVERRIDE=4.2 ./piglit-run.py -1 --dmesg -t arb_compute_shader
tests/all.py

  spec/arb_compute_shader/built-in constants/gl_MaxComputeImageUniforms: fail
  spec/arb_compute_shader/minmax: fail

** DEQP **

MESA_GLES_VERSION_OVERRIDE=3.1 ./piglit-run.py -1 --dmesg -t compute
tests/deqp_gles31.py

deqp-gles31/functional/compute/basic/copy_image_to_ssbo_large: fail
deqp-gles31/functional/compute/basic/copy_image_to_ssbo_small: fail
deqp-gles31/functional/compute/basic/copy_ssbo_to_image_large: fail
deqp-gles31/functional/compute/basic/copy_ssbo_to_image_small: fail
deqp-gles31/functional/compute/basic/image_barrier_multiple: fail
deqp-gles31/functional/compute/basic/image_barrier_single: fail
deqp-gles31/functional/state_query/integer/max_compute_image_uniforms_getboolean:
 fail
deqp-gles31/functional/state_query/integer/max_compute_image_uniforms_getfloat: 
fail
deqp-gles31/functional/state_query/integer/max_compute_image_uniforms_getinteger:
 fail
deqp-gles31/functional/state_query/integer/max_compute_image_uniforms_getinteger64:
 fail

No image support.

deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_combined_grid_200x200_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_combined_grid_200x200_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_combined_grid_200x200_drawcount_800:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_combined_grid_500x500_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_combined_grid_500x500_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_separate_grid_200x200_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_separate_grid_200x200_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_separate_grid_200x200_drawcount_800:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_separate_grid_500x500_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_separate_grid_500x500_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_1000x1000_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_1000x1000_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_1200x1200_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_1200x1200_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_500x500_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_500x500_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_1000x1000_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_1000x1000_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_1200x1200_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_1200x1200_drawcount_8:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_500x500_drawcount_1:
 fail
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_500x500_drawcount_8:
 fail

Some other indirect draw+compute pass, these ones fail no apparent reasons.

deqp-gles31/functional/shaders/builtin_functions/precision/acos/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/acos/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/acos/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/acos/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/atan2/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/atan2/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/atan2/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/atan2/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/atan2/mediump_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/atan2/mediump_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/lowp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/lowp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/lowp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/mediump_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/mediump_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/distance/mediump_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/mediump_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/mediump_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/mediump_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/ldexp/mediump_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/lowp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/lowp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/lowp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/lowp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/mediump_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/mediump_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/mediump_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/length/mediump_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/refract/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/refract/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/refract/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/refract/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/highp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/lowp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/lowp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/lowp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/lowp_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/mediump_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/mediump_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/mediump_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/sqrt/mediump_compute/vec4:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/tanh/highp_compute/scalar:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/tanh/highp_compute/vec2:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/tanh/highp_compute/vec3:
 fail
deqp-gles31/functional/shaders/builtin_functions/precision/tanh/highp_compute/vec4:
 fail

We don't know exactly what's going wrong here, but this is definitely not 
related to
the compute support.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to