gallium: add PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE for GL
v2: fix typo 65535 -> 65536 Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
b6d3373442
commit
52cb395bb1
|
@ -162,6 +162,8 @@ The integer capabilities:
|
||||||
state should be swizzled manually according to the swizzle in the sampler
|
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
|
view it is intended to be used with, or herein undefined results may occur
|
||||||
for permutational swizzles.
|
for permutational swizzles.
|
||||||
|
* ``PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE``: The maximum accessible size with
|
||||||
|
a buffer sampler view, in bytes.
|
||||||
|
|
||||||
|
|
||||||
.. _pipe_capf:
|
.. _pipe_capf:
|
||||||
|
|
|
@ -224,6 +224,8 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
return 1;
|
return 1;
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
|
return 65536;
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER:
|
case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER:
|
||||||
|
|
|
@ -124,6 +124,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||||
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
||||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
||||||
|
|
|
@ -105,6 +105,8 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_SCALED_RESOLVE:
|
case PIPE_CAP_SCALED_RESOLVE:
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
return 1;
|
return 1;
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
|
return 65536;
|
||||||
case PIPE_CAP_SEAMLESS_CUBE_MAP:
|
case PIPE_CAP_SEAMLESS_CUBE_MAP:
|
||||||
return nv50_screen(pscreen)->tesla->oclass >= NVA0_3D_CLASS;
|
return nv50_screen(pscreen)->tesla->oclass >= NVA0_3D_CLASS;
|
||||||
case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
|
case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
|
||||||
|
|
|
@ -104,6 +104,8 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
case PIPE_CAP_TEXTURE_MULTISAMPLE:
|
case PIPE_CAP_TEXTURE_MULTISAMPLE:
|
||||||
return 1;
|
return 1;
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
|
return 65536;
|
||||||
case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
|
case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
|
||||||
return (class_3d >= NVE4_3D_CLASS) ? 1 : 0;
|
return (class_3d >= NVE4_3D_CLASS) ? 1 : 0;
|
||||||
case PIPE_CAP_TWO_SIDED_STENCIL:
|
case PIPE_CAP_TWO_SIDED_STENCIL:
|
||||||
|
|
|
@ -163,6 +163,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* SWTCL-only features. */
|
/* SWTCL-only features. */
|
||||||
|
|
|
@ -595,6 +595,9 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_TGSI_TEXCOORD:
|
case PIPE_CAP_TGSI_TEXCOORD:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
|
return MIN2(rscreen->info.vram_size, 0xFFFFFFFF);
|
||||||
|
|
||||||
case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT:
|
case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT:
|
||||||
return R600_MAP_BUFFER_ALIGNMENT;
|
return R600_MAP_BUFFER_ALIGNMENT;
|
||||||
|
|
||||||
|
|
|
@ -381,6 +381,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Stream output. */
|
/* Stream output. */
|
||||||
|
|
|
@ -175,6 +175,8 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
return 1;
|
return 1;
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
return 1;
|
return 1;
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
|
return 65536;
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_TGSI_TEXCOORD:
|
case PIPE_CAP_TGSI_TEXCOORD:
|
||||||
|
|
|
@ -265,6 +265,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||||
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
||||||
|
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -506,7 +506,8 @@ enum pipe_cap {
|
||||||
PIPE_CAP_TGSI_TEXCOORD = 79,
|
PIPE_CAP_TGSI_TEXCOORD = 79,
|
||||||
PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER = 80,
|
PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER = 80,
|
||||||
PIPE_CAP_QUERY_PIPELINE_STATISTICS = 81,
|
PIPE_CAP_QUERY_PIPELINE_STATISTICS = 81,
|
||||||
PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK = 82
|
PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK = 82,
|
||||||
|
PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE = 83
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0)
|
#define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0)
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#include "st_extensions.h"
|
#include "st_extensions.h"
|
||||||
#include "st_format.h"
|
#include "st_format.h"
|
||||||
|
|
||||||
static int _min(int a, int b)
|
static unsigned _min(unsigned a, unsigned b)
|
||||||
{
|
{
|
||||||
return (a < b) ? a : b;
|
return (a < b) ? a : b;
|
||||||
}
|
}
|
||||||
|
@ -744,6 +744,9 @@ void st_init_extensions(struct st_context *st)
|
||||||
if (screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OBJECTS)) {
|
if (screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OBJECTS)) {
|
||||||
ctx->Extensions.ARB_texture_buffer_object = GL_TRUE;
|
ctx->Extensions.ARB_texture_buffer_object = GL_TRUE;
|
||||||
|
|
||||||
|
ctx->Const.MaxTextureBufferSize =
|
||||||
|
_min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE),
|
||||||
|
(1u << 31) - 1);
|
||||||
ctx->Const.TextureBufferOffsetAlignment =
|
ctx->Const.TextureBufferOffsetAlignment =
|
||||||
screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT);
|
screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue