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. _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
