st/format: Replace QuerySamplesForFormat by new QueryInternalFormat hook
The previous code for SAMPLES and NUM_SAMPLE_COUNTS is reused as a private function. Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
82be7735f3
commit
ee31b0b1d0
|
@ -3104,7 +3104,7 @@ void
|
|||
st_init_texture_functions(struct dd_function_table *functions)
|
||||
{
|
||||
functions->ChooseTextureFormat = st_ChooseTextureFormat;
|
||||
functions->QuerySamplesForFormat = st_QuerySamplesForFormat;
|
||||
functions->QueryInternalFormat = st_QueryInternalFormat;
|
||||
functions->TexImage = st_TexImage;
|
||||
functions->TexSubImage = st_TexSubImage;
|
||||
functions->CompressedTexSubImage = st_CompressedTexSubImage;
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include "main/texstore.h"
|
||||
#include "main/image.h"
|
||||
#include "main/macros.h"
|
||||
#include "main/formatquery.h"
|
||||
|
||||
#include "pipe/p_context.h"
|
||||
#include "pipe/p_defines.h"
|
||||
|
@ -2308,9 +2309,9 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLenum target,
|
|||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.ChooseTextureFormat().
|
||||
* Called via ctx->Driver.QueryInternalFormat().
|
||||
*/
|
||||
size_t
|
||||
static size_t
|
||||
st_QuerySamplesForFormat(struct gl_context *ctx, GLenum target,
|
||||
GLenum internalFormat, int samples[16])
|
||||
{
|
||||
|
@ -2349,6 +2350,39 @@ st_QuerySamplesForFormat(struct gl_context *ctx, GLenum target,
|
|||
return num_sample_counts;
|
||||
}
|
||||
|
||||
/**
|
||||
* ARB_internalformat_query2 driver hook.
|
||||
*/
|
||||
void
|
||||
st_QueryInternalFormat(struct gl_context *ctx, GLenum target,
|
||||
GLenum internalFormat, GLenum pname, GLint *params)
|
||||
{
|
||||
/* The API entry-point gives us a temporary params buffer that is non-NULL
|
||||
* and guaranteed to have at least 16 elements.
|
||||
*/
|
||||
assert(params != NULL);
|
||||
|
||||
switch (pname) {
|
||||
case GL_SAMPLES:
|
||||
st_QuerySamplesForFormat(ctx, target, internalFormat, params);
|
||||
break;
|
||||
|
||||
case GL_NUM_SAMPLE_COUNTS: {
|
||||
size_t num_samples;
|
||||
num_samples = st_QuerySamplesForFormat(ctx, target, internalFormat,
|
||||
params);
|
||||
params[0] = (GLint) num_samples;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
/* For the rest of the pnames, we call back the Mesa's default
|
||||
* function for drivers that don't implement ARB_internalformat_query2.
|
||||
*/
|
||||
_mesa_query_internal_format_default(ctx, target, internalFormat, pname,
|
||||
params);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is used for translating texture border color and the clear
|
||||
|
|
|
@ -70,11 +70,9 @@ st_ChooseTextureFormat(struct gl_context * ctx, GLenum target,
|
|||
GLint internalFormat,
|
||||
GLenum format, GLenum type);
|
||||
|
||||
size_t
|
||||
st_QuerySamplesForFormat(struct gl_context *ctx, GLenum target,
|
||||
GLenum internalFormat, int samples[16]);
|
||||
|
||||
|
||||
void
|
||||
st_QueryInternalFormat(struct gl_context *ctx, GLenum target,
|
||||
GLenum internalFormat, GLenum pname, GLint *params);
|
||||
|
||||
extern void
|
||||
st_translate_color(const union gl_color_union *colorIn,
|
||||
|
|
Loading…
Reference in New Issue