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