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>
This commit is contained in:
Icecream95
2021-01-04 20:41:57 +13:00
committed by Marge Bot
parent 4ee6d68d1f
commit d5d3f77e4a
5 changed files with 8 additions and 0 deletions

View File

@@ -165,6 +165,9 @@ The integer capabilities:
TEXCOORD semantic. TEXCOORD semantic.
Also, TGSI_SEMANTIC_PCOORD becomes available, which labels a fragment shader Also, TGSI_SEMANTIC_PCOORD becomes available, which labels a fragment shader
input that will always be replaced with sprite coordinates. input that will always be replaced with sprite coordinates.
* ``PIPE_CAP_TEXTURE_BUFFER_SAMPLER``: Whether a sampler should still
be used for PIPE_BUFFER resources (normally a sampler is only used
if the texture target is PIPE_TEXTURE_*).
* ``PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER``: Whether it is preferable * ``PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER``: Whether it is preferable
to use a blit to implement a texture transfer which needs format conversions to use a blit to implement a texture transfer which needs format conversions
and swizzling in gallium frontends. Generally, all hardware drivers with and swizzling in gallium frontends. Generally, all hardware drivers with

View File

@@ -148,6 +148,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY: case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY:
case PIPE_CAP_TGSI_TEXCOORD: case PIPE_CAP_TGSI_TEXCOORD:
case PIPE_CAP_TEXTURE_BUFFER_SAMPLER:
return 0; return 0;
case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER: case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER:

View File

@@ -792,6 +792,7 @@ enum pipe_cap
PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT,
PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY, PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY,
PIPE_CAP_TGSI_TEXCOORD, PIPE_CAP_TGSI_TEXCOORD,
PIPE_CAP_TEXTURE_BUFFER_SAMPLER,
PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER, PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER,
PIPE_CAP_QUERY_PIPELINE_STATISTICS, PIPE_CAP_QUERY_PIPELINE_STATISTICS,
PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK, PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK,

View File

@@ -685,6 +685,8 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
!!(screen->get_param(screen, PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK) & !!(screen->get_param(screen, PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK) &
(PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 | (PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 |
PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_R600)); PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_R600));
st->texture_buffer_sampler =
screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_SAMPLER);
st->has_time_elapsed = st->has_time_elapsed =
screen->get_param(screen, PIPE_CAP_QUERY_TIME_ELAPSED); screen->get_param(screen, PIPE_CAP_QUERY_TIME_ELAPSED);
st->has_half_float_packing = st->has_half_float_packing =

View File

@@ -181,6 +181,7 @@ struct st_context
boolean needs_texcoord_semantic; boolean needs_texcoord_semantic;
boolean apply_texture_swizzle_to_border_color; boolean apply_texture_swizzle_to_border_color;
boolean texture_buffer_sampler;
/* On old libGL's for linux we need to invalidate the drawables /* On old libGL's for linux we need to invalidate the drawables
* on glViewpport calls, this is set via a option. * on glViewpport calls, this is set via a option.