[Mesa-dev] [RFC 06/63] st/format: Replace QuerySamplesForFormat by new QueryInternalFormat hook
Eduardo Lima Mitev
elima at igalia.com
Tue Jan 19 08:41:46 PST 2016
The previous code for SAMPLES and NUM_SAMPLE_COUNTS is reused as a private function.
---
src/mesa/state_tracker/st_cb_texture.c | 2 +-
src/mesa/state_tracker/st_format.c | 38 ++++++++++++++++++++++++++++++++--
src/mesa/state_tracker/st_format.h | 8 +++----
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 0ceb370..adac660 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -1955,7 +1955,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 = _mesa_store_compressed_texsubimage;
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 2b92bad..1dcbec6 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"
@@ -2266,9 +2267,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])
{
@@ -2307,6 +2308,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 90e00e8..9b44987 100644
--- a/src/mesa/state_tracker/st_format.h
+++ b/src/mesa/state_tracker/st_format.h
@@ -66,11 +66,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,
--
2.5.3
More information about the mesa-dev
mailing list