Mike Blumenkrantz
f8ff6eb78b
gallium: add a pipe cap for performing automatic prim type conversion
...
drivers can now export a bitmask of the primitive types they support,
and all others will be automatically be rewritten
the default value is set to all primitive types supported to preserve
existing behavior
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973 >
2021-06-23 03:13:41 +00:00
Mike Blumenkrantz
c9a65e5f77
gallium: add a pipe cap to rewrite index buffers for draws using a non-fixed restart index
...
for drivers that set it, this now automatically handles restart index rewriting
by running draws through primconvert when necessary
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10973 >
2021-06-23 03:13:41 +00:00
Eric Anholt
5de3cbbb2e
nir: Generate load_ubo_vec4 directly for !PIPE_CAP_NATIVE_INTEGERS
...
The prog_to_nir->NIR-to-TGSI change ended up causing regressions on r300,
and svga against r300-class hardware, because nir_lower_uniforms_to_ubo()
introduced shifts that nir_lower_ubo_vec4() tried to reverse, but that NIR
couldn't prove are no-ops (since shifting up and back down may drop bits),
and the hardware can't do the integer ops.
Instead, make it so that nir_lower_uniforms_to_ubo can generate
nir_intrinsic_load_ubo_vec4 directly for !INTEGER hardware.
Fixes: cf3fc79cd0
("st/mesa: Replace mesa_to_tgsi() with prog_to_nir() and nir_to_tgsi().")
Closes : #4602
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10194 >
2021-04-16 21:58:00 +00:00
Mike Blumenkrantz
b122beaff3
gallium: split PIPE_CAP_SAMPLER_REDUCTION_MINMAX into modes
...
this enables detection for the EXT vs the ARB extension, which have
different specifications regarding which formats must be supported
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10030 >
2021-04-15 01:20:40 +00:00
Marek Olšák
d7250b0b08
gallium: add PIPE_SHADER_CAP_FP16_CONST_BUFFERS for FP16 uniforms
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9050 >
2021-04-13 05:07:42 +00:00
Dave Airlie
7c999249ef
gallium: add a sampler reduction cap + settings
...
This is to allow for
VK_EXT_sampler_filter_minmax
GL_EXT_texture_filter_minmax
support
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Karol Herbst <kherbst@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9487 >
2021-03-12 00:05:24 +00:00
Christian Gmeiner
758a2d5343
gallium: add PIPE_CAP_TEXRECT
...
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8898 >
2021-02-23 14:04:30 +00:00
Mike Blumenkrantz
e8f71f6ac4
mesa/st: add PIPE_CAP_GL_CLAMP
...
when this is not set, this triggers shader and sampler state updates any time a sampler
starts or stops using GL_CLAMP, applying bitmasks needed to run nir_lower_tex
and setting CLAMP_TO_BORDER/CLAMP_TO_EDGE as necessary to mimic the behavior
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8756 >
2021-02-18 14:32:05 +00:00
Eric Anholt
175c827e72
gallium: Flip the default value of PIPE_CAP_SHAREABLE_SHADERS.
...
We should be exposing it in every driver, since it's required eventually
to reduce jank. Make drivers have to explicitly opt out instead of opt
in.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9088 >
2021-02-17 19:31:07 +00:00
Eric Anholt
cd03f1c6f6
gallium: Document behavior of more lowering pipe caps.
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8601 >
2021-02-09 20:06:48 -08:00
Eric Anholt
59f047e6e7
docs: Document PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME.
...
It does more than the name suggests!
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8843 >
2021-02-04 14:02:12 -08:00
Icecream95
d5d3f77e4a
gallium: Add new cap PIPE_CAP_TEXTURE_BUFFER_SAMPLER
...
This indicates whether a driver wants samplers for buffer textures as
well as normal textures.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8300 >
2021-01-12 19:06:00 +00:00
Marek Olšák
0cf5d1f226
gallium: remove PIPE_CAP_INFO_START_WITH_USER_INDICES and fix all drivers
...
Drivers aren't allowed to ignore start with user index buffers anymore.
This is required by the new fast path where mesa/main is using pipe_draw_info.
Reviewed-by: Gert Wollny <gert.wollny@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7679 >
2021-01-04 19:22:34 -05:00
Marek Olšák
05f35a50e3
gallium: remove and emulate PIPE_CAP_MULTI_DRAW
...
To remove PIPE_CAP checking in the common code.
It's better if drivers lower multi draws even if the hardware doesn't
support it beause the multi draw loop can be moved deeper into the driver
to remove more overhead.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7679 >
2021-01-04 19:22:33 -05:00
Marek Olšák
9b1f091bd9
gallium: add PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6946 >
2020-12-01 11:52:10 +00:00
Marek Olšák
80b391077f
gallium: add missing bits of the direct multi draw interface
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7441 >
2020-11-18 01:41:24 +00:00
James Jones
68d70fb969
gallium: Add format modifier plane count query
...
Rather than hard-code a list of all the format
modifiers supported by any gallium driver and the
number of aux planes they require in the dri state
tracker, add a screen proc that queries the number
of planes required for a given modifier+format
pair.
Since the only format modifiers that require
auxiliary planes currently are the iris driver's
I915_FORMAT_MOD_Y_TILED_CCS,
I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, and
I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS, the absence
of the screen proc implies zero aux planes for all
of the screen's supported modifiers. Hence, when
a driver does not expose the proc, derive the
number of planes directly from the format.
Signed-off-by: James Jones <jajones@nvidia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3723 >
2020-11-11 10:51:37 +00:00
James Jones
6ee10ab3de
gallium: Add pipe_screen::is_dmabuf_modifier_supported
...
Add a "do you support this modifier?" query to all
drivers which support format modifiers. This will
be used in a subsequent change to fully
encapsulate modifier validation and auxiliary plane
count calculation logic behind the driver
abstraction, which will in turn simplify the
addition of device-class-specific format modifiers
in the nouveau driver.
Signed-off-by: James Jones <jajones@nvidia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3723 >
2020-11-11 10:51:37 +00:00
Pierre-Eric Pelloux-Prayer
7748e50138
gallium: add new cap PIPE_CAP_DEVICE_PROTECTED_CONTENT
...
Will be used to implement EGL_EXT_protected_surface.
Reviewed-by: Eric Engestrom <eric@engestrom.ch >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5096 >
2020-11-02 10:15:47 +01:00
Marek Olšák
22253e6b65
gallium: rename PIPE_TRANSFER_* -> PIPE_MAP_*
...
Acked-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5749 >
2020-09-22 03:20:54 +00:00
Pierre-Eric Pelloux-Prayer
fc6df020e3
gallium: add PIPE_CAP_MAX_TEXTURE_MB
...
Allows driver to override the default value (1024) from mesa.
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6754 >
2020-09-21 14:14:48 +02:00
Pierre-Eric Pelloux-Prayer
d94bec5c49
mesa/st: introduce PIPE_CAP_NO_CLIP_ON_COPY_TEX
...
If supported this means that src_x/src_y/width/height parameters of
CopyTex functions will not be clipped using the read framebuffer's dimensions.
Cc: mesa-stable
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6259 >
2020-09-02 11:53:16 +02:00
Gert Wollny
a03e24aa7f
gallium + mesa/st: Add PIPE_CAP_NIR_ATOMICS_AS_DEREF and use it
...
This cap is useful for drivers that support hardware atomics and need
special handling to resolve their addresses.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6025 >
2020-08-09 13:45:32 +00:00
Rob Clark
c4e0cae90c
gallium: replace 16BIT_TEMPS cap with 16BIT_CONSTS
...
All drivers that support mediump lowering should support 16BIT_TEMPS,
but some do not also want 16b consts to be lowered. Replace the pipe
cap in preperation to remove LowerPrecisionTemporaries.
Note: also updates reference checksums for the arm64_a630_traces job,
due to lowering more to 16b
Signed-off-by: Rob Clark <robdclark@chromium.org >
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6189 >
2020-08-05 21:00:44 +00:00
Elie Tournier
377731ec1b
gallium: Add PIPE_CAP_BLEND_EQUATION_ADVANCED
...
Signed-off-by: Elie Tournier <elie.tournier@collabora.com >
Reviewed-by: Gert Wollny <gert.wollny@collabora.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5516 >
2020-07-17 06:19:16 +00:00
Karol Herbst
c0f7f833eb
gallium: add PIPE_CAP_RESOURCE_FROM_USER_MEMORY_COMPUTE_ONLY
...
With the current UAPI we only support user pointers from the compute
engines, so we need a way to express that in gallium.
v2: fix typos
v3: add allows_user_pointers helper
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Pierre Moreau <dev@pmoreau.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5906 >
2020-07-14 19:59:12 +00:00
Michel Dänzer
89caa485f1
Revert https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4580
...
It broke the CI pipeline on master:
https://gitlab.freedesktop.org/mesa/mesa/-/jobs/3604314
https://gitlab.freedesktop.org/mesa/mesa/-/jobs/3604315
Revert for now, to allow other MRs to be merged.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5905 >
2020-07-14 17:08:10 +02:00
Karol Herbst
dd2cc5bc44
gallium: add PIPE_CAP_RESOURCE_FROM_USER_MEMORY_COMPUTE_ONLY
...
With the current UAPI we only support user pointers from the compute
engines, so we need a way to express that in gallium.
v2: fix typos
v3: add allows_user_pointers helper
Signed-off-by: Karol Herbst <kherbst@redhat.com >
Reviewed-by: Pierre Moreau <dev@pmoreau.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4580 >
2020-07-14 14:04:59 +00:00
Marek Olšák
75b59bb1d6
gallium: add PIPE_SHADER_CAP_GLSL_16BIT_TEMPS for LowerPrecisionTemporaries
...
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5746 >
2020-07-07 22:02:06 -04:00
Erik Faye-Lund
2f81398187
merge gallium docs into main docs
...
Reviewed-by: Eric Engestrom <eric@engestrom.ch >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5706 >
2020-07-07 10:22:08 +00:00