Mesa (10.1): mesa: Fix error condition for multisample proxy texture targets
Carl Worth
cworth at kemper.freedesktop.org
Wed Apr 23 09:27:24 UTC 2014
Module: Mesa
Branch: 10.1
Commit: 488f5b4390c1cb6fcecf257a9a1692a4ced7aead
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=488f5b4390c1cb6fcecf257a9a1692a4ced7aead
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date: Thu Apr 3 18:29:52 2014 -0700
mesa: Fix error condition for multisample proxy texture targets
Fixes failures in Khronos OpenGL CTS test proxy_textures_invalid_samples
Cc: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
(cherry picked from commit ee10e893cbd616da295dc46ca37ece664cd91d1a)
Conflicts:
src/mesa/main/teximage.c
---
src/mesa/main/teximage.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 34a04a9..2b1c8a6 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -4353,7 +4353,7 @@ teximagemultisample(GLuint dims, GLenum target, GLsizei samples,
{
struct gl_texture_object *texObj;
struct gl_texture_image *texImage;
- GLboolean sizeOK, dimensionsOK;
+ GLboolean sizeOK, dimensionsOK, samplesOK;
mesa_format texFormat;
GLenum sample_count_error;
@@ -4390,7 +4390,17 @@ teximagemultisample(GLuint dims, GLenum target, GLsizei samples,
sample_count_error = _mesa_check_sample_count(ctx, target,
internalformat, samples);
- if (sample_count_error != GL_NO_ERROR) {
+ samplesOK = sample_count_error == GL_NO_ERROR;
+
+ /* Page 254 of OpenGL 4.4 spec says:
+ * "Proxy arrays for two-dimensional multisample and two-dimensional
+ * multisample array textures are operated on in the same way when
+ * TexImage2DMultisample is called with target specified as
+ * PROXY_TEXTURE_2D_MULTISAMPLE, or TexImage3DMultisample is called
+ * with target specified as PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY.
+ * However, if samples is not supported, then no error is generated.
+ */
+ if (!samplesOK && !_mesa_is_proxy_texture(target)) {
_mesa_error(ctx, sample_count_error, "%s(samples)", func);
return;
}
@@ -4422,7 +4432,7 @@ teximagemultisample(GLuint dims, GLenum target, GLsizei samples,
width, height, depth, 0);
if (_mesa_is_proxy_texture(target)) {
- if (dimensionsOK && sizeOK) {
+ if (samplesOK && dimensionsOK && sizeOK) {
_mesa_init_teximage_fields(ctx, texImage,
width, height, depth, 0, internalformat, texFormat);
texImage->NumSamples = samples;
More information about the mesa-commit
mailing list