mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 18:10:11 +01:00
gallium: add PIPE_SHADER_CAP_SUPPORTED_IRS
This cap indicates the supported representations of programs. It should be a mask of pipe_shader_ir bits. It will allow to enable ARB_compute_shader if the underlying driver supports TGSI. Changes from v2: - improve description of PIPE_SHADER_CAP_SUPPORTED_IRS Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
43f4420fba
commit
5e09ac78e5
12 changed files with 33 additions and 0 deletions
|
|
@ -128,6 +128,8 @@ gallivm_get_shader_param(enum pipe_shader_cap param)
|
||||||
return PIPE_MAX_SHADER_SAMPLER_VIEWS;
|
return PIPE_MAX_SHADER_SAMPLER_VIEWS;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 1 << PIPE_SHADER_IR_TGSI;
|
||||||
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
|
case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -465,6 +465,8 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param)
|
||||||
return PIPE_MAX_SHADER_SAMPLER_VIEWS;
|
return PIPE_MAX_SHADER_SAMPLER_VIEWS;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 1 << PIPE_SHADER_IR_TGSI;
|
||||||
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
|
|
|
||||||
|
|
@ -415,6 +415,8 @@ to be 0.
|
||||||
(also used to implement atomic counters). Having this be non-0 also
|
(also used to implement atomic counters). Having this be non-0 also
|
||||||
implies support for the ``LOAD``, ``STORE``, and ``ATOM*`` TGSI
|
implies support for the ``LOAD``, ``STORE``, and ``ATOM*`` TGSI
|
||||||
opcodes.
|
opcodes.
|
||||||
|
* ``PIPE_SHADER_CAP_SUPPORTED_IRS``: Supported representations of the
|
||||||
|
program. It should be a mask of ``pipe_shader_ir`` bits.
|
||||||
|
|
||||||
|
|
||||||
.. _pipe_compute_cap:
|
.. _pipe_compute_cap:
|
||||||
|
|
|
||||||
|
|
@ -434,6 +434,8 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
||||||
return 16;
|
return 16;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||||
return 32;
|
return 32;
|
||||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,8 @@ ilo_get_shader_param(struct pipe_screen *screen, unsigned shader,
|
||||||
return ILO_MAX_SAMPLER_VIEWS;
|
return ILO_MAX_SAMPLER_VIEWS;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||||
|
|
|
||||||
|
|
@ -272,6 +272,8 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
|
case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
|
||||||
case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
|
case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
|
||||||
case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
|
case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
|
||||||
|
|
|
||||||
|
|
@ -324,6 +324,8 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
|
||||||
return 32;
|
return 32;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PIPE_SHADER_VERTEX:
|
case PIPE_SHADER_VERTEX:
|
||||||
|
|
@ -383,6 +385,8 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
|
||||||
return 32;
|
return 32;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -532,6 +532,8 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
|
||||||
} else {
|
} else {
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
}
|
}
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
if (rscreen->b.family == CHIP_CYPRESS ||
|
if (rscreen->b.family == CHIP_CYPRESS ||
|
||||||
rscreen->b.family == CHIP_CAYMAN || rscreen->b.family == CHIP_ARUBA)
|
rscreen->b.family == CHIP_CAYMAN || rscreen->b.family == CHIP_ARUBA)
|
||||||
|
|
|
||||||
|
|
@ -448,6 +448,10 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_NATIVE;
|
return PIPE_SHADER_IR_NATIVE;
|
||||||
|
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
|
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
return HAVE_LLVM >= 0x0307;
|
return HAVE_LLVM >= 0x0307;
|
||||||
|
|
||||||
|
|
@ -511,6 +515,8 @@ static int si_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enu
|
||||||
return 16;
|
return 16;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
return HAVE_LLVM >= 0x0307;
|
return HAVE_LLVM >= 0x0307;
|
||||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||||
|
|
|
||||||
|
|
@ -468,6 +468,8 @@ vgpu9_get_shader_param(struct pipe_screen *screen, unsigned shader,
|
||||||
return 16;
|
return 16;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||||
|
|
@ -527,6 +529,8 @@ vgpu9_get_shader_param(struct pipe_screen *screen, unsigned shader,
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||||
|
|
@ -619,6 +623,8 @@ vgpu10_get_shader_param(struct pipe_screen *screen, unsigned shader,
|
||||||
return SVGA3D_DX_MAX_SAMPLERS;
|
return SVGA3D_DX_MAX_SAMPLERS;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_DOUBLES:
|
case PIPE_SHADER_CAP_DOUBLES:
|
||||||
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
|
||||||
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,8 @@ vc4_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
|
||||||
return VC4_MAX_TEXTURE_SAMPLERS;
|
return VC4_MAX_TEXTURE_SAMPLERS;
|
||||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||||
return PIPE_SHADER_IR_TGSI;
|
return PIPE_SHADER_IR_TGSI;
|
||||||
|
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||||
|
return 0;
|
||||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||||
return 32;
|
return 32;
|
||||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||||
|
|
|
||||||
|
|
@ -725,6 +725,7 @@ enum pipe_shader_cap
|
||||||
PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE,
|
PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE,
|
||||||
PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT,
|
PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT,
|
||||||
PIPE_SHADER_CAP_MAX_SHADER_BUFFERS,
|
PIPE_SHADER_CAP_MAX_SHADER_BUFFERS,
|
||||||
|
PIPE_SHADER_CAP_SUPPORTED_IRS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue