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
|
||||
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 bytes.
|
||||
|
||||
|
||||
.. _pipe_capf:
|
||||
|
|
|
@ -224,6 +224,8 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
return 0;
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 65536;
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
return 1;
|
||||
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_QUERY_PIPELINE_STATISTICS:
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 0;
|
||||
case PIPE_CAP_VERTEX_BUFFER_OFFSET_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_TEXTURE_BUFFER_OBJECTS:
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 65536;
|
||||
case PIPE_CAP_SEAMLESS_CUBE_MAP:
|
||||
return nv50_screen(pscreen)->tesla->oclass >= NVA0_3D_CLASS;
|
||||
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_MULTISAMPLE:
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 65536;
|
||||
case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
|
||||
return (class_3d >= NVE4_3D_CLASS) ? 1 : 0;
|
||||
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_OFFSET_ALIGNMENT:
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 0;
|
||||
|
||||
/* 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:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return MIN2(rscreen->info.vram_size, 0xFFFFFFFF);
|
||||
|
||||
case PIPE_CAP_MIN_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_OFFSET_ALIGNMENT:
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 0;
|
||||
|
||||
/* Stream output. */
|
||||
|
|
|
@ -175,6 +175,8 @@ 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:
|
||||
return 65536;
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
return 0;
|
||||
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_OFFSET_ALIGNMENT:
|
||||
case PIPE_CAP_QUERY_PIPELINE_STATISTICS:
|
||||
case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
|
||||
return 0;
|
||||
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||
return 1;
|
||||
|
|
|
@ -506,7 +506,8 @@ enum pipe_cap {
|
|||
PIPE_CAP_TGSI_TEXCOORD = 79,
|
||||
PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER = 80,
|
||||
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)
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
#include "st_extensions.h"
|
||||
#include "st_format.h"
|
||||
|
||||
static int _min(int a, int b)
|
||||
static unsigned _min(unsigned a, unsigned 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)) {
|
||||
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 =
|
||||
screen->get_param(screen, PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT);
|
||||
|
||||
|
|
Loading…
Reference in New Issue