[Mesa-dev] [PATCH v3 00/14] nvc0: add compute shaders on Fermi

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed Feb 17 21:27:38 UTC 2016


Hi,

This series adds support for ARB_compute_shader only on Fermi.  Kepler compute
support is really different and I need to fix a bunch of things to make it work
correctly.

Almost all piglit/dEQP tests pass. The list of fails is available below.

Samuel Pitoiset (14):
  nvc0: allocate an area for compute user constbufs
  nvc0: bind constant buffers for compute on Fermi
  nvc0: add a new validation state for 3D driver constbuf
  nvc0: bind driver constbuf for compute on Fermi
  nvc0: bind shader buffers for compute on Fermi
  nvc0: bind textures/samplers for compute on Fermi
  nvc0: add support for indirect compute on Fermi
  nvc0: invalidate compute state when switching pipe contexts
  nvc0: reduce likelihood of collision for real buffers on Fermi
  nv50/ir: use s[] addr space for shared buffers
  nv50/ir: add lock/unlock subops for load/store
  nv50/ir: make OP_SELP a compare instruction
  nv50/ir: add atomics support on shared memory for Fermi
  nvc0: enable compute shaders on Fermi

 src/gallium/drivers/nouveau/codegen/nv50_ir.h      |   2 +
 .../drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp  |  29 ++-
 .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp  |  41 ++--
 .../drivers/nouveau/codegen/nv50_ir_inlines.h      |   4 +-
 .../nouveau/codegen/nv50_ir_lowering_nvc0.cpp      | 103 +++++++++-
 .../nouveau/codegen/nv50_ir_lowering_nvc0.h        |   1 +
 .../drivers/nouveau/codegen/nv50_ir_print.cpp      |  10 +
 src/gallium/drivers/nouveau/nvc0/mme/Makefile      |   2 +-
 src/gallium/drivers/nouveau/nvc0/mme/com90c0.mme   |  24 +++
 src/gallium/drivers/nouveau/nvc0/mme/com90c0.mme.h |  19 ++
 src/gallium/drivers/nouveau/nvc0/nvc0_compute.c    | 220 ++++++++++++++++++---
 src/gallium/drivers/nouveau/nvc0/nvc0_context.c    |  28 ++-
 src/gallium/drivers/nouveau/nvc0/nvc0_context.h    |   8 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_macros.h     |   2 +
 src/gallium/drivers/nouveau/nvc0/nvc0_program.c    |   3 +
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |  20 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.h     |   2 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_state.c      |  17 +-
 .../drivers/nouveau/nvc0/nvc0_state_validate.c     |  40 +++-
 src/gallium/drivers/nouveau/nvc0/nvc0_tex.c        |  27 ++-
 src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c        |  10 +-
 21 files changed, 520 insertions(+), 92 deletions(-)
 create mode 100644 src/gallium/drivers/nouveau/nvc0/mme/com90c0.mme
 create mode 100644 src/gallium/drivers/nouveau/nvc0/mme/com90c0.mme.h

-- 
2.6.4

deqp-gles31/functional/compute/basic/copy_image_to_ssbo_large: crash
deqp-gles31/functional/compute/basic/copy_image_to_ssbo_small: crash
deqp-gles31/functional/compute/basic/copy_ssbo_to_image_large: crash
deqp-gles31/functional/compute/basic/copy_ssbo_to_image_small: crash
deqp-gles31/functional/compute/basic/image_barrier_multiple: crash
deqp-gles31/functional/compute/basic/image_barrier_single: crash
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/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

Probably related to sqrt.

deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_combined_grid_500x500_drawcount_2500: crash
deqp-gles31/functional/draw_indirect/compute_interop/large/drawarrays_separate_grid_500x500_drawcount_2500: crash
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_1000x1000_drawcount_5000: crash
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_combined_grid_500x500_drawcount_2500: crash
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_1000x1000_drawcount_5000: crash
deqp-gles31/functional/draw_indirect/compute_interop/large/drawelements_separate_grid_500x500_drawcount_2500: crash

We are submitting too fast. This could be fixed later.



More information about the mesa-dev mailing list