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:
@@ -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
|
||||||
|
@@ -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:
|
||||||
|
@@ -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,
|
||||||
|
@@ -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 =
|
||||||
|
@@ -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.
|
||||||
|
Reference in New Issue
Block a user