[Mesa-dev] [PATCH v3 00/12] nvc0: ARB_compute_shader for Kepler/Maxwell

Samuel Pitoiset samuel.pitoiset at gmail.com
Fri Apr 1 16:55:56 UTC 2016


Hi,

This series adds support for ARB_compute_shader on GK104 and GM107+, except on
GK110 where one test miserably fail (related to texelFetch) for really weird
reasons. Anyway, this is not going to break anything because NVF0_COMPUTE is
still required for using compute on GK110. I will have a deeper look at this
fail later.

Almost all dEQP compute tests pass with a very good ratio. As usual, the list
of fails is described below. About piglit, only two tests fail but this is
related to images support.

I don't update GL3.txt in this series because compute shaders are not really
useful without images support.

ARB_shader_image_load_store and ARB_shader_image_size are in work in progress
and should be ready in a couple of weeks.

Please review,
Thanks!

Samuel Pitoiset (12):
  nvc0: bind driver cb for compute on c7[] for Kepler
  nvc0: bind shader buffers for compute on Kepler
  nvc0: bind user uniforms for compute on Kepler
  nvc0: store ubo info to the driver constbuf on Kepler
  nvc0: reduce likelihood of collision for real buffers on Kepler
  nvc0: add indirect compute support on Kepler
  nvc0/ir: add support for compute UBOs on Kepler
  nvc0/ir: fix wrong pred emission for ld lock on GK104
  nvc0/ir: add atomics support on shared memory for Kepler
  nvc0/ir: do not lower shared+atomics on GM107+
  nvc0: bump the maximum number of UBOs for compute on Kepler
  nvc0: enable compute shaders on GK104 and GM107+

 .../drivers/nouveau/codegen/nv50_ir_driver.h       |   1 +
 .../drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp  |   5 +-
 .../nouveau/codegen/nv50_ir_lowering_nvc0.cpp      | 178 +++++++++++++-
 .../nouveau/codegen/nv50_ir_lowering_nvc0.h        |   4 +
 src/gallium/drivers/nouveau/nvc0/nvc0_context.h    |   9 +
 src/gallium/drivers/nouveau/nvc0/nvc0_program.c    |  16 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   4 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.h     |   1 -
 src/gallium/drivers/nouveau/nvc0/nve4_compute.c    | 261 ++++++++++++++++-----
 src/gallium/drivers/nouveau/nvc0/nve4_compute.h    |  44 +---
 10 files changed, 408 insertions(+), 115 deletions(-)

-- 
2.7.4

** dEQP **

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/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/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
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/const_expression/compute/sampler2darrayshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/const_expression/compute/sampler2dshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/const_expression/compute/samplercubeshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/const_literal/compute/sampler2darrayshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/const_literal/compute/sampler2dshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/const_literal/compute/samplercubeshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/dynamically_uniform/compute/sampler2darrayshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/dynamically_uniform/compute/sampler2dshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/dynamically_uniform/compute/samplercubeshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/uniform/compute/sampler2darrayshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/uniform/compute/sampler2dshadow: fail
deqp-gles31/functional/shaders/opaque_type_indexing/sampler/uniform/compute/samplercubeshadow: 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
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

** piglit **

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




More information about the mesa-dev mailing list