gallium: Add a cap bit for integer multiplication between 32-bit and 16-bit

Driver supports integer multiplication between a 32-bit integer and a
16-bit integer.  If the second operand is 32-bits, the upper 16-bits are
ignored, and the low 16-bits are possibly sign extended as necessary.

Iris will eventually enable this.  Not sure about other drivers.

v2: Add default value to u_screen.c.  Suggested by Caio.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/767>
This commit is contained in:
Ian Romanick 2019-11-14 14:16:26 -08:00 committed by Marge Bot
parent 9db20748fd
commit b14e718e68
3 changed files with 3 additions and 0 deletions

View File

@ -405,6 +405,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
return 16;
case PIPE_CAP_OPENCL_INTEGER_FUNCTIONS:
case PIPE_CAP_INTEGER_MULTIPLY_32X16:
return 0;
default:

View File

@ -566,6 +566,7 @@ The integer capabilities:
* ``PIPE_CAP_CLIP_PLANES``: Driver supports user-defined clip-planes.
* ``PIPE_CAP_MAX_VERTEX_BUFFERS``: Number of supported vertex buffers.
* ``PIPE_CAP_OPENCL_INTEGER_FUNCTIONS``: Driver supports extended OpenCL-style integer functions. This includes averge, saturating additiong, saturating subtraction, absolute difference, count leading zeros, and count trailing zeros.
* ``PIPE_CAP_INTEGER_MULTIPLY_32X16``: Driver supports integer multiplication between a 32-bit integer and a 16-bit integer. If the second operand is 32-bits, the upper 16-bits are ignored, and the low 16-bits are possibly sign extended as necessary.
.. _pipe_capf:

View File

@ -911,6 +911,7 @@ enum pipe_cap
PIPE_CAP_CLIP_PLANES,
PIPE_CAP_MAX_VERTEX_BUFFERS,
PIPE_CAP_OPENCL_INTEGER_FUNCTIONS,
PIPE_CAP_INTEGER_MULTIPLY_32X16,
};
/**