gallium: rename PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE->MAX_TEXEL_BUFFER_ELEMENTS_UINT
to allow exposing 4G - 1. The "SIZE" was also a misnomer because it meant elements. This no longer clamps the size to INT_MAX in st/mesa. Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16881>
This commit is contained in:
parent
dc4a3a18e9
commit
fd6b8999d7
|
@ -195,8 +195,9 @@ The integer capabilities:
|
|||
state should be swizzled manually according to the swizzle in the sampler
|
||||
view it is intended to be used with, or herein undefined results may occur
|
||||
for permutational swizzles.
|
||||
* ``PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE``: The maximum accessible size with
|
||||
a buffer sampler view, in texels.
|
||||
* ``PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT``: The maximum accessible number of
|
||||
elements within a sampler buffer view and image buffer view. This is unsigned
|
||||
integer with the maximum of 4G - 1.
|
||||
* ``PIPE_CAP_MAX_VIEWPORTS``: The maximum number of viewports (and scissors
|
||||
since they are linked) a driver can support. Returning 0 is equivalent
|
||||
to returning 1 because every driver has to support at least a single
|
||||
|
|
|
@ -167,7 +167,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
/* GL_EXT_texture_buffer minimum value. */
|
||||
return 65536;
|
||||
|
||||
|
|
|
@ -791,7 +791,7 @@ agx_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
|
||||
return 16;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return 65536;
|
||||
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
|
|
|
@ -300,7 +300,7 @@ crocus_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return 16; // XXX: u_screen says 256 is the minimum value...
|
||||
case PIPE_CAP_TEXTURE_TRANSFER_MODES:
|
||||
return PIPE_TEXTURE_TRANSFER_BLIT;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return CROCUS_MAX_TEXTURE_BUFFER_SIZE;
|
||||
case PIPE_CAP_MAX_VIEWPORTS:
|
||||
return devinfo->ver >= 6 ? 16 : 1;
|
||||
|
|
|
@ -291,7 +291,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
if (is_a4xx(screen) || is_a5xx(screen) || is_a6xx(screen))
|
||||
return 64;
|
||||
return 0;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
/* We could possibly emulate more by pretending 2d/rect textures and
|
||||
* splitting high bits of index into 2nd dimension..
|
||||
*/
|
||||
|
|
|
@ -341,7 +341,7 @@ iris_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return 16; // XXX: u_screen says 256 is the minimum value...
|
||||
case PIPE_CAP_TEXTURE_TRANSFER_MODES:
|
||||
return PIPE_TEXTURE_TRANSFER_BLIT;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return IRIS_MAX_TEXTURE_BUFFER_SIZE;
|
||||
case PIPE_CAP_MAX_VIEWPORTS:
|
||||
return 16;
|
||||
|
|
|
@ -230,7 +230,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||
return 1;
|
||||
/* Adressing that many 64bpp texels fits in an i32 so this is a reasonable value */
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return 134217728;
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
return 16;
|
||||
|
|
|
@ -158,7 +158,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
|
||||
case PIPE_CAP_VS_LAYER_VIEWPORT:
|
||||
case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS:
|
||||
|
|
|
@ -125,7 +125,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET:
|
||||
case PIPE_CAP_MAX_TEXEL_OFFSET:
|
||||
return 7;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return 128 * 1024 * 1024;
|
||||
case PIPE_CAP_GLSL_FEATURE_LEVEL:
|
||||
return 330;
|
||||
|
|
|
@ -137,7 +137,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return -32;
|
||||
case PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET:
|
||||
return 31;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return 128 * 1024 * 1024;
|
||||
case PIPE_CAP_GLSL_FEATURE_LEVEL:
|
||||
return 430;
|
||||
|
|
|
@ -200,7 +200,7 @@ panfrost_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
|
||||
return 16;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return 65536;
|
||||
|
||||
/* Must be at least 64 for correct behaviour */
|
||||
|
|
|
@ -347,7 +347,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return MIN2(rscreen->b.info.max_alloc_size, INT_MAX);
|
||||
|
||||
case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT:
|
||||
|
|
|
@ -233,7 +233,7 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE:
|
||||
return 4096 * 1024;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
case PIPE_CAP_MAX_SHADER_BUFFER_SIZE:
|
||||
/* Allow max 512 MB to pass CTS with a 32-bit build. */
|
||||
return MIN2(sscreen->info.max_alloc_size, 512 * 1024 * 1024);
|
||||
|
|
|
@ -1160,7 +1160,7 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws,
|
|||
si_init_screen_live_shader_cache(sscreen);
|
||||
|
||||
sscreen->max_texture_buffer_size = sscreen->b.get_param(
|
||||
&sscreen->b, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE);
|
||||
&sscreen->b, PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT);
|
||||
|
||||
/* Set these flags in debug_flags early, so that the shader cache takes
|
||||
* them into account.
|
||||
|
|
|
@ -218,7 +218,7 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
return 1;
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return 65536;
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
return 16;
|
||||
|
|
|
@ -324,7 +324,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
case PIPE_CAP_TEXTURE_MULTISAMPLE:
|
||||
return svgascreen->ms_samples ? 1 : 0;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
/* convert bytes to texels for the case of the largest texel
|
||||
* size: float[4].
|
||||
*/
|
||||
|
|
|
@ -218,7 +218,7 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
return vscreen->caps.caps.v1.bset.texture_multisample;
|
||||
case PIPE_CAP_MAX_VIEWPORTS:
|
||||
return vscreen->caps.caps.v1.max_viewports;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return vscreen->caps.caps.v1.max_tbo_size;
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
||||
|
|
|
@ -627,7 +627,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return mode;
|
||||
}
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
case PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT:
|
||||
return MIN2(get_smallest_buffer_heap(screen),
|
||||
screen->info.props.limits.maxTexelBufferElements);
|
||||
|
||||
|
|
|
@ -227,7 +227,7 @@ device::max_images_write() const {
|
|||
|
||||
size_t
|
||||
device::max_image_buffer_size() const {
|
||||
return pipe->get_param(pipe, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE);
|
||||
return pipe->get_param(pipe, PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT);
|
||||
}
|
||||
|
||||
cl_uint
|
||||
|
|
|
@ -258,7 +258,7 @@ lvp_physical_device_init(struct lvp_physical_device *device,
|
|||
.maxImageDimension3D = (1 << device->pscreen->get_param(device->pscreen, PIPE_CAP_MAX_TEXTURE_3D_LEVELS)),
|
||||
.maxImageDimensionCube = (1 << device->pscreen->get_param(device->pscreen, PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS)),
|
||||
.maxImageArrayLayers = device->pscreen->get_param(device->pscreen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS),
|
||||
.maxTexelBufferElements = device->pscreen->get_param(device->pscreen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE),
|
||||
.maxTexelBufferElements = device->pscreen->get_param(device->pscreen, PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT),
|
||||
.maxUniformBufferRange = min_shader_param(device->pscreen, PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE),
|
||||
.maxStorageBufferRange = device->pscreen->get_param(device->pscreen, PIPE_CAP_MAX_SHADER_BUFFER_SIZE),
|
||||
.maxPushConstantsSize = MAX_PUSH_CONSTANTS_SIZE,
|
||||
|
|
|
@ -810,7 +810,7 @@ enum pipe_cap
|
|||
PIPE_CAP_TEXTURE_TRANSFER_MODES,
|
||||
PIPE_CAP_QUERY_PIPELINE_STATISTICS,
|
||||
PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK,
|
||||
PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE,
|
||||
PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT,
|
||||
PIPE_CAP_MAX_VIEWPORTS,
|
||||
PIPE_CAP_ENDIANNESS,
|
||||
PIPE_CAP_MIXED_FRAMEBUFFER_SIZES,
|
||||
|
|
|
@ -1470,8 +1470,7 @@ void st_init_extensions(struct pipe_screen *screen,
|
|||
|
||||
if (extensions->ARB_texture_buffer_object) {
|
||||
consts->MaxTextureBufferSize =
|
||||
_min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE),
|
||||
(1u << 31) - 1);
|
||||
screen->get_param(screen, PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT);
|
||||
consts->TextureBufferOffsetAlignment =
|
||||
screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT);
|
||||
|
||||
|
|
Loading…
Reference in New Issue