Reviewed-by: Marek Olšák <marek.ol...@amd.com> M.
On Sep 20, 2017 1:24 PM, "Jan Vesely" <jan.ves...@rutgers.edu> wrote: > Denotes availability of 64bit int atomic instructions > > Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu> > --- > src/gallium/auxiliary/gallivm/lp_bld_limits.h | 1 + > src/gallium/auxiliary/tgsi/tgsi_exec.h | 1 + > src/gallium/docs/source/screen.rst | 1 + > src/gallium/drivers/etnaviv/etnaviv_screen.c | 1 + > src/gallium/drivers/freedreno/freedreno_screen.c | 2 ++ > src/gallium/drivers/i915/i915_screen.c | 1 + > src/gallium/drivers/nouveau/nv30/nv30_screen.c | 1 + > src/gallium/drivers/nouveau/nv50/nv50_screen.c | 1 + > src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 1 + > src/gallium/drivers/r300/r300_screen.c | 1 + > src/gallium/drivers/r600/r600_pipe.c | 1 + > src/gallium/drivers/radeonsi/si_pipe.c | 1 + > src/gallium/drivers/svga/svga_screen.c | 1 + > src/gallium/drivers/vc4/vc4_screen.c | 1 + > src/gallium/drivers/virgl/virgl_screen.c | 1 + > src/gallium/include/pipe/p_defines.h | 1 + > 16 files changed, 17 insertions(+) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_limits.h > b/src/gallium/auxiliary/gallivm/lp_bld_limits.h > index e8cc04a2f9..421eeda4e7 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_limits.h > +++ b/src/gallium/auxiliary/gallivm/lp_bld_limits.h > @@ -118,6 +118,7 @@ gallivm_get_shader_param(enum pipe_shader_cap param) > return 1; > case PIPE_SHADER_CAP_INTEGERS: > return 1; > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: > diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h > b/src/gallium/auxiliary/tgsi/tgsi_exec.h > index 346848cddf..bcf4a32a8a 100644 > --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h > +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h > @@ -511,6 +511,7 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param) > return 1; > case PIPE_SHADER_CAP_INTEGERS: > return 1; > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: > diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/ > screen.rst > index dfbb6cda6c..0d474dfb07 100644 > --- a/src/gallium/docs/source/screen.rst > +++ b/src/gallium/docs/source/screen.rst > @@ -472,6 +472,7 @@ MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0 > BGNSUB, ENDSUB, CAL, and RET, including RET in the main block. > * ``PIPE_SHADER_CAP_INTEGERS``: Whether integer opcodes are supported. > If unsupported, only float opcodes are supported. > +* ``PIPE_SHADER_CAP_INT64_ATOMICS``: Whether int64 atomic opcodes are > supported. The device needs to support add, sub, swap, cmpswap, and, or, > xor, min, and max. > * ``PIPE_SHADER_CAP_FP16``: Whether half precision floating-point opcodes > are supported. > If unsupported, half precision ops need to be lowered to full > precision. > * ``PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS``: The maximum number of texture > diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c > b/src/gallium/drivers/etnaviv/etnaviv_screen.c > index 953ca1204a..8ffda61428 100644 > --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c > +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c > @@ -428,6 +428,7 @@ etna_screen_get_shader_param(struct pipe_screen > *pscreen, > case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED: > return VIV_FEATURE(screen, chipMinorFeatures0, HAS_SQRT_TRIG); > case PIPE_SHADER_CAP_INTEGERS: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: > diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c > b/src/gallium/drivers/freedreno/freedreno_screen.c > index a91e3c2e70..061cc86c6d 100644 > --- a/src/gallium/drivers/freedreno/freedreno_screen.c > +++ b/src/gallium/drivers/freedreno/freedreno_screen.c > @@ -527,6 +527,8 @@ fd_screen_get_shader_param(struct pipe_screen > *pscreen, > if (glsl120) > return 0; > return is_ir3(screen) ? 1 : 0; > + case PIPE_SHADER_CAP_INT64_ATOMICS: > + return 0; > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: > diff --git a/src/gallium/drivers/i915/i915_screen.c > b/src/gallium/drivers/i915/i915_screen.c > index 95ed3341b3..bacd40a57d 100644 > --- a/src/gallium/drivers/i915/i915_screen.c > +++ b/src/gallium/drivers/i915/i915_screen.c > @@ -157,6 +157,7 @@ i915_get_shader_param(struct pipe_screen *screen, > case PIPE_SHADER_CAP_SUBROUTINES: > return 0; > case PIPE_SHADER_CAP_INTEGERS: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: > diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c > b/src/gallium/drivers/nouveau/nv30/nv30_screen.c > index ba466050c6..0d40bfed7a 100644 > --- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c > +++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c > @@ -314,6 +314,7 @@ nv30_screen_get_shader_param(struct pipe_screen > *pscreen, > case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: > case PIPE_SHADER_CAP_SUBROUTINES: > case PIPE_SHADER_CAP_INTEGERS: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: > case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > index 60b6037396..706e8d369b 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > @@ -345,6 +345,7 @@ nv50_screen_get_shader_param(struct pipe_screen > *pscreen, > return 1; > case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED: > return 1; > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > case PIPE_SHADER_CAP_SUBROUTINES: > return 0; /* please inline, or provide function declarations */ > diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > index 8cf6ba6506..87fc754f4c 100644 > --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c > @@ -405,6 +405,7 @@ nvc0_screen_get_shader_param(struct pipe_screen > *pscreen, > case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: > case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: > case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS: > diff --git a/src/gallium/drivers/r300/r300_screen.c > b/src/gallium/drivers/r300/r300_screen.c > index 2838b7cf00..0a1c21bd74 100644 > --- a/src/gallium/drivers/r300/r300_screen.c > +++ b/src/gallium/drivers/r300/r300_screen.c > @@ -354,6 +354,7 @@ static int r300_get_shader_param(struct pipe_screen > *pscreen, > case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: > case PIPE_SHADER_CAP_SUBROUTINES: > case PIPE_SHADER_CAP_INTEGERS: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: > case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: > diff --git a/src/gallium/drivers/r600/r600_pipe.c > b/src/gallium/drivers/r600/r600_pipe.c > index 2e5008c8d4..62839d4c19 100644 > --- a/src/gallium/drivers/r600/r600_pipe.c > +++ b/src/gallium/drivers/r600/r600_pipe.c > @@ -570,6 +570,7 @@ static int r600_get_shader_param(struct pipe_screen* > pscreen, > case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: > return 1; > case PIPE_SHADER_CAP_SUBROUTINES: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > return 0; > case PIPE_SHADER_CAP_INTEGERS: > diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/ > radeonsi/si_pipe.c > index 0666798964..2eacc5d69e 100644 > --- a/src/gallium/drivers/radeonsi/si_pipe.c > +++ b/src/gallium/drivers/radeonsi/si_pipe.c > @@ -742,6 +742,7 @@ static int si_get_shader_param(struct pipe_screen* > pscreen, > case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: > case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: > case PIPE_SHADER_CAP_INTEGERS: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: > case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: > diff --git a/src/gallium/drivers/svga/svga_screen.c > b/src/gallium/drivers/svga/svga_screen.c > index 3845d17692..7392a18ec1 100644 > --- a/src/gallium/drivers/svga/svga_screen.c > +++ b/src/gallium/drivers/svga/svga_screen.c > @@ -517,6 +517,7 @@ vgpu9_get_shader_param(struct pipe_screen *screen, > return 0; > case PIPE_SHADER_CAP_SUBROUTINES: > return 0; > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_INTEGERS: > return 0; > case PIPE_SHADER_CAP_FP16: > diff --git a/src/gallium/drivers/vc4/vc4_screen.c > b/src/gallium/drivers/vc4/vc4_screen.c > index 04ae44688d..4f38346d83 100644 > --- a/src/gallium/drivers/vc4/vc4_screen.c > +++ b/src/gallium/drivers/vc4/vc4_screen.c > @@ -407,6 +407,7 @@ vc4_screen_get_shader_param(struct pipe_screen > *pscreen, > return 0; > case PIPE_SHADER_CAP_INTEGERS: > return 1; > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: > case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: > diff --git a/src/gallium/drivers/virgl/virgl_screen.c > b/src/gallium/drivers/virgl/virgl_screen.c > index 46b3bd3fd0..935ce2f9b0 100644 > --- a/src/gallium/drivers/virgl/virgl_screen.c > +++ b/src/gallium/drivers/virgl/virgl_screen.c > @@ -335,6 +335,7 @@ virgl_get_shader_param(struct pipe_screen *screen, > return 4096 * sizeof(float[4]); > case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD: > case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS: > + case PIPE_SHADER_CAP_INT64_ATOMICS: > case PIPE_SHADER_CAP_FP16: > default: > return 0; > diff --git a/src/gallium/include/pipe/p_defines.h > b/src/gallium/include/pipe/p_defines.h > index 7294492017..be5907e4fb 100644 > --- a/src/gallium/include/pipe/p_defines.h > +++ b/src/gallium/include/pipe/p_defines.h > @@ -832,6 +832,7 @@ enum pipe_shader_cap > PIPE_SHADER_CAP_INDIRECT_CONST_ADDR, > PIPE_SHADER_CAP_SUBROUTINES, /* BGNSUB, ENDSUB, CAL, RET */ > PIPE_SHADER_CAP_INTEGERS, > + PIPE_SHADER_CAP_INT64_ATOMICS, > PIPE_SHADER_CAP_FP16, > PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS, > PIPE_SHADER_CAP_PREFERRED_IR, > -- > 2.13.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev