st/mesa: implement ARB_internalformat_query v2
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -1555,6 +1555,7 @@ void
|
||||
st_init_texture_functions(struct dd_function_table *functions)
|
||||
{
|
||||
functions->ChooseTextureFormat = st_ChooseTextureFormat;
|
||||
functions->QuerySamplesForFormat = st_QuerySamplesForFormat;
|
||||
functions->TexImage = st_TexImage;
|
||||
functions->TexSubImage = _mesa_store_texsubimage;
|
||||
functions->CompressedTexSubImage = _mesa_store_compressed_texsubimage;
|
||||
|
||||
@@ -516,6 +516,7 @@ void st_init_extensions(struct st_context *st)
|
||||
ctx->Extensions.ARB_fragment_shader = GL_TRUE;
|
||||
ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
|
||||
ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
|
||||
ctx->Extensions.ARB_internalformat_query = GL_TRUE;
|
||||
ctx->Extensions.ARB_map_buffer_range = GL_TRUE;
|
||||
ctx->Extensions.ARB_shader_objects = GL_TRUE;
|
||||
ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
|
||||
|
||||
@@ -1642,6 +1642,40 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLenum target,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.ChooseTextureFormat().
|
||||
*/
|
||||
size_t
|
||||
st_QuerySamplesForFormat(struct gl_context *ctx, GLenum internalFormat,
|
||||
int samples[16])
|
||||
{
|
||||
struct pipe_screen *screen = st_context(ctx)->pipe->screen;
|
||||
enum pipe_format format;
|
||||
unsigned i, bind, num_sample_counts = 0;
|
||||
|
||||
if (_mesa_is_depth_or_stencil_format(internalFormat))
|
||||
bind = PIPE_BIND_DEPTH_STENCIL;
|
||||
else
|
||||
bind = PIPE_BIND_RENDER_TARGET;
|
||||
|
||||
/* Set sample counts in descending order. */
|
||||
for (i = 16; i > 1; i--) {
|
||||
format = st_choose_format(screen, internalFormat, GL_NONE, GL_NONE,
|
||||
PIPE_TEXTURE_2D, i, bind);
|
||||
|
||||
if (format != PIPE_FORMAT_NONE) {
|
||||
samples[num_sample_counts++] = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (!num_sample_counts) {
|
||||
samples[num_sample_counts++] = 1;
|
||||
}
|
||||
|
||||
return num_sample_counts;
|
||||
}
|
||||
|
||||
|
||||
GLboolean
|
||||
st_sampler_compat_formats(enum pipe_format format1, enum pipe_format format2)
|
||||
{
|
||||
|
||||
@@ -67,6 +67,9 @@ st_ChooseTextureFormat(struct gl_context * ctx, GLenum target,
|
||||
GLint internalFormat,
|
||||
GLenum format, GLenum type);
|
||||
|
||||
size_t
|
||||
st_QuerySamplesForFormat(struct gl_context *ctx, GLenum internalFormat,
|
||||
int samples[16]);
|
||||
|
||||
/* can we use a sampler view to translate these formats
|
||||
only used to make TFP so far */
|
||||
|
||||
Reference in New Issue
Block a user