summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEduardo Lima Mitev <[email protected]>2015-11-24 22:22:00 +0100
committerEduardo Lima Mitev <[email protected]>2016-03-03 15:14:05 +0100
commitee31b0b1d0f9394f1a41f71c0bf743a59ba7947d (patch)
tree9aebe6e19b302bf25d4da3cd5412200d5fc08976 /src
parent82be7735f32776e76300de3602a72fc236b7261e (diff)
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 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c2
-rw-r--r--src/mesa/state_tracker/st_format.c38
-rw-r--r--src/mesa/state_tracker/st_format.h8
3 files changed, 40 insertions, 8 deletions
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index cfec627f10c..bffa4d026cb 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -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;
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 82bf3a185ad..5392c23ec00 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -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
diff --git a/src/mesa/state_tracker/st_format.h b/src/mesa/state_tracker/st_format.h
index 3e10aa64bc6..6ba61df7e4e 100644
--- a/src/mesa/state_tracker/st_format.h
+++ b/src/mesa/state_tracker/st_format.h
@@ -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,