[Mesa-dev] [PATCH 00/12] nvc0: add compute shaders support on Fermi
Samuel Pitoiset
samuel.pitoiset at gmail.com
Sat Feb 6 22:37:59 UTC 2016
Hi,
This series adds support for ARB_compute_shader only on Fermi for now.
Kepler compute support is really different than Fermi and I need to fix
a bunch of things to make it work correctly.
As explained in the core compute shaders series, almost all piglit/dEQP tests
pass. The list of fails is available below.
Please review, thanks!
Samuel Pitoiset (12):
nvc0: allocate an area for compute user constbufs
nvc0: allow to push constant buffers for compute on Fermi
nvc0: bind constant buffers for compute on Fermi
nvc0: bind driver consts on buffer 15 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
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 | 25 +-
.../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 42 +++-
.../drivers/nouveau/codegen/nv50_ir_inlines.h | 4 +-
.../nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 102 +++++++-
.../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 | 19 ++
src/gallium/drivers/nouveau/nvc0/mme/com90c0.mme.h | 13 +
src/gallium/drivers/nouveau/nvc0/nvc0_compute.c | 265 ++++++++++++++++++++-
src/gallium/drivers/nouveau/nvc0/nvc0_context.c | 23 +-
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 | 14 +-
src/gallium/drivers/nouveau/nvc0/nvc0_tex.c | 4 +-
src/gallium/drivers/nouveau/nvc0/nvc0_transfer.c | 15 +-
src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c | 10 +-
22 files changed, 534 insertions(+), 69 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
** 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.
More information about the mesa-dev
mailing list