Просмотр исходного кода

llvmpipe: switch to NIR by default

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
Dave Airlie 6 лет назад
Родитель
Сommit
e6b2af56cb

+ 4
- 0
.gitlab-ci.yml Просмотреть файл

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

+ 2
- 3
.gitlab-ci/piglit/quick_gl.txt Просмотреть файл

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

+ 1
- 1
src/gallium/drivers/llvmpipe/lp_debug.h Просмотреть файл

#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.
*/ */

+ 21
- 7
src/gallium/drivers/llvmpipe/lp_screen.c Просмотреть файл

{ "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;

+ 2
- 0
src/gallium/drivers/llvmpipe/lp_screen.h Просмотреть файл



struct lp_cs_tpool *cs_tpool; struct lp_cs_tpool *cs_tpool;
mtx_t cs_mutex; mtx_t cs_mutex;

bool use_tgsi;
}; };





Загрузка…
Отмена
Сохранить