Add LP_DEBUG=tgsi_ir (tgsi already taken) to fallback to TGSI paths. Disable NIR_VALIDATE in CI (Michel/Eric acked) Reviewed-by: Roland Scheidegger <sroland@vmware.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2303> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2303>master
| extends: .piglit-test | extends: .piglit-test | ||||
| variables: | variables: | ||||
| LP_NUM_THREADS: 0 | LP_NUM_THREADS: 0 | ||||
| NIR_VALIDATE: 0 | |||||
| PIGLIT_OPTIONS: > | PIGLIT_OPTIONS: > | ||||
| --process-isolation false | --process-isolation false | ||||
| -x arb_gpu_shader5 | -x arb_gpu_shader5 | ||||
| extends: .piglit-test | extends: .piglit-test | ||||
| variables: | variables: | ||||
| LP_NUM_THREADS: 0 | LP_NUM_THREADS: 0 | ||||
| NIR_VALIDATE: 0 | |||||
| PIGLIT_PROFILES: glslparser | PIGLIT_PROFILES: glslparser | ||||
| piglit-quick_shader: | piglit-quick_shader: | ||||
| extends: .piglit-test | extends: .piglit-test | ||||
| variables: | variables: | ||||
| LP_NUM_THREADS: 1 | LP_NUM_THREADS: 1 | ||||
| NIR_VALIDATE: 0 | |||||
| PIGLIT_PROFILES: quick_shader | PIGLIT_PROFILES: quick_shader | ||||
| .deqp-test: | .deqp-test: | ||||
| variables: | variables: | ||||
| DEQP_VER: gles2 | DEQP_VER: gles2 | ||||
| DEQP_PARALLEL: 4 | DEQP_PARALLEL: 4 | ||||
| NIR_VALIDATE: 0 | |||||
| # Don't use threads inside llvmpipe, we've already got all 4 cores | # Don't use threads inside llvmpipe, we've already got all 4 cores | ||||
| # busy with DEQP_PARALLEL. | # busy with DEQP_PARALLEL. | ||||
| LP_NUM_THREADS: 0 | LP_NUM_THREADS: 0 |
| spec/!opengl 4.5/named-framebuffer-draw-buffers-errors: skip | spec/!opengl 4.5/named-framebuffer-draw-buffers-errors: skip | ||||
| spec/!opengl 4.5/named-framebuffer-read-buffer-errors: skip | spec/!opengl 4.5/named-framebuffer-read-buffer-errors: skip | ||||
| spec/!opengl es 2.0/invalid-es3-queries_gles2: skip | spec/!opengl es 2.0/invalid-es3-queries_gles2: skip | ||||
| spec/!opengl es 3.0/gles-3.0-transform-feedback-uniform-buffer-object: fail | |||||
| spec/!opengl es 3.0/minmax: fail | spec/!opengl es 3.0/minmax: fail | ||||
| spec/3dfx_texture_compression_fxt1/compressedteximage gl_compressed_rgb_fxt1_3dfx: skip | spec/3dfx_texture_compression_fxt1/compressedteximage gl_compressed_rgb_fxt1_3dfx: skip | ||||
| spec/3dfx_texture_compression_fxt1/compressedteximage gl_compressed_rgba_fxt1_3dfx: skip | spec/3dfx_texture_compression_fxt1/compressedteximage gl_compressed_rgba_fxt1_3dfx: skip | ||||
| summary: | summary: | ||||
| name: results | name: results | ||||
| ---- -------- | ---- -------- | ||||
| pass: 19301 | |||||
| fail: 237 | |||||
| pass: 19302 | |||||
| fail: 236 | |||||
| crash: 2 | crash: 2 | ||||
| skip: 1962 | skip: 1962 | ||||
| timeout: 0 | timeout: 0 |
| #define DEBUG_MEM 0x4000 | #define DEBUG_MEM 0x4000 | ||||
| #define DEBUG_FS 0x8000 | #define DEBUG_FS 0x8000 | ||||
| #define DEBUG_CS 0x10000 | #define DEBUG_CS 0x10000 | ||||
| #define DEBUG_NIR 0x20000 | |||||
| #define DEBUG_TGSI_IR 0x20000 | |||||
| /* Performance flags. These are active even on release builds. | /* Performance flags. These are active even on release builds. | ||||
| */ | */ |
| { "mem", DEBUG_MEM, NULL }, | { "mem", DEBUG_MEM, NULL }, | ||||
| { "fs", DEBUG_FS, NULL }, | { "fs", DEBUG_FS, NULL }, | ||||
| { "cs", DEBUG_CS, NULL }, | { "cs", DEBUG_CS, NULL }, | ||||
| { "nir", DEBUG_NIR, NULL }, | |||||
| { "tgsi_ir", DEBUG_TGSI_IR, NULL }, | |||||
| DEBUG_NAMED_VALUE_END | DEBUG_NAMED_VALUE_END | ||||
| }; | }; | ||||
| #endif | #endif | ||||
| case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL: | case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL: | ||||
| return 1; | return 1; | ||||
| case PIPE_CAP_LOAD_CONSTBUF: | case PIPE_CAP_LOAD_CONSTBUF: | ||||
| case PIPE_CAP_PACKED_UNIFORMS: | |||||
| return !!(LP_DEBUG & DEBUG_NIR); | |||||
| case PIPE_CAP_PACKED_UNIFORMS: { | |||||
| struct llvmpipe_screen *lscreen = llvmpipe_screen(screen); | |||||
| return !lscreen->use_tgsi; | |||||
| } | |||||
| default: | default: | ||||
| return u_pipe_screen_get_param_defaults(screen, param); | return u_pipe_screen_get_param_defaults(screen, param); | ||||
| } | } | ||||
| { | { | ||||
| case PIPE_SHADER_FRAGMENT: | case PIPE_SHADER_FRAGMENT: | ||||
| case PIPE_SHADER_COMPUTE: | case PIPE_SHADER_COMPUTE: | ||||
| if (param == PIPE_SHADER_CAP_PREFERRED_IR) { | |||||
| struct llvmpipe_screen *lscreen = llvmpipe_screen(screen); | |||||
| if (lscreen->use_tgsi) | |||||
| return PIPE_SHADER_IR_TGSI; | |||||
| else | |||||
| return PIPE_SHADER_IR_NIR; | |||||
| } | |||||
| switch (param) { | switch (param) { | ||||
| default: | default: | ||||
| if ((LP_DEBUG & DEBUG_NIR) && param == PIPE_SHADER_CAP_PREFERRED_IR) | |||||
| return PIPE_SHADER_IR_NIR; | |||||
| return gallivm_get_shader_param(param); | return gallivm_get_shader_param(param); | ||||
| } | } | ||||
| case PIPE_SHADER_VERTEX: | case PIPE_SHADER_VERTEX: | ||||
| case PIPE_SHADER_GEOMETRY: | case PIPE_SHADER_GEOMETRY: | ||||
| if ((LP_DEBUG & DEBUG_NIR) && param == PIPE_SHADER_CAP_PREFERRED_IR) | |||||
| return PIPE_SHADER_IR_NIR; | |||||
| if (param == PIPE_SHADER_CAP_PREFERRED_IR) { | |||||
| struct llvmpipe_screen *lscreen = llvmpipe_screen(screen); | |||||
| if (lscreen->use_tgsi) | |||||
| return PIPE_SHADER_IR_TGSI; | |||||
| else | |||||
| return PIPE_SHADER_IR_NIR; | |||||
| } | |||||
| switch (param) { | switch (param) { | ||||
| case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: | case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: | ||||
| screen->base.finalize_nir = llvmpipe_finalize_nir; | screen->base.finalize_nir = llvmpipe_finalize_nir; | ||||
| llvmpipe_init_screen_resource_funcs(&screen->base); | llvmpipe_init_screen_resource_funcs(&screen->base); | ||||
| screen->use_tgsi = (LP_DEBUG & DEBUG_TGSI_IR); | |||||
| screen->num_threads = util_cpu_caps.nr_cpus > 1 ? util_cpu_caps.nr_cpus : 0; | screen->num_threads = util_cpu_caps.nr_cpus > 1 ? util_cpu_caps.nr_cpus : 0; | ||||
| #ifdef EMBEDDED_DEVICE | #ifdef EMBEDDED_DEVICE | ||||
| screen->num_threads = 0; | screen->num_threads = 0; |
| struct lp_cs_tpool *cs_tpool; | struct lp_cs_tpool *cs_tpool; | ||||
| mtx_t cs_mutex; | mtx_t cs_mutex; | ||||
| bool use_tgsi; | |||||
| }; | }; | ||||