Commit a113a42e authored by Illia Iorin's avatar Illia Iorin Committed by Timothy Arceri
Browse files

mesa/main: Fix multisample texture initialize

Sampler of Multisample textures wasn't initialized correct. So when
texture object created as  multisample its sampler is initialized in a
individual case. We change the initial state of TEXTURE_MIN_FILTER and
TEXTURE_MAG_FILTER to NEAREST.
These changes are approved by KhronosGroup.
https://github.com/KhronosGroup/OpenGL-API/issues/45

Signed-off-by: default avatarSergii Romantsov <sergii.romantsov@globallogic.com>
Signed-off-by: default avatarIllia Iorin <illia.iorin@globallogic.com>
Reviewed-by: Emma Anholt's avatarEric Anholt <eric@anholt.net>
Reviewed-by: default avatarMarek Olšák <marek.olsak@amd.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109057
parent a7d40a13
......@@ -272,6 +272,8 @@ _mesa_initialize_texture_object( struct gl_context *ctx,
target == GL_TEXTURE_2D_MULTISAMPLE ||
target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY);
GLenum filter = GL_LINEAR;
memset(obj, 0, sizeof(*obj));
/* init the non-zero fields */
simple_mtx_init(&obj->Mutex, mtx_plain);
......@@ -292,20 +294,30 @@ _mesa_initialize_texture_object( struct gl_context *ctx,
obj->RequiredTextureImageUnits = 1;
/* sampler state */
if (target == GL_TEXTURE_RECTANGLE_NV ||
target == GL_TEXTURE_EXTERNAL_OES) {
obj->Sampler.WrapS = GL_CLAMP_TO_EDGE;
obj->Sampler.WrapT = GL_CLAMP_TO_EDGE;
obj->Sampler.WrapR = GL_CLAMP_TO_EDGE;
obj->Sampler.MinFilter = GL_LINEAR;
}
else {
obj->Sampler.WrapS = GL_REPEAT;
obj->Sampler.WrapT = GL_REPEAT;
obj->Sampler.WrapR = GL_REPEAT;
obj->Sampler.MinFilter = GL_NEAREST_MIPMAP_LINEAR;
switch (target) {
case GL_TEXTURE_2D_MULTISAMPLE:
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
filter = GL_NEAREST;
/* fallthrough */
case GL_TEXTURE_RECTANGLE_NV:
case GL_TEXTURE_EXTERNAL_OES:
obj->Sampler.WrapS = GL_CLAMP_TO_EDGE;
obj->Sampler.WrapT = GL_CLAMP_TO_EDGE;
obj->Sampler.WrapR = GL_CLAMP_TO_EDGE;
obj->Sampler.MinFilter = filter;
obj->Sampler.MagFilter = filter;
break;
default:
obj->Sampler.WrapS = GL_REPEAT;
obj->Sampler.WrapT = GL_REPEAT;
obj->Sampler.WrapR = GL_REPEAT;
obj->Sampler.MinFilter = GL_NEAREST_MIPMAP_LINEAR;
obj->Sampler.MagFilter = GL_LINEAR;
break;
}
obj->Sampler.MagFilter = GL_LINEAR;
obj->Sampler.MinLod = -1000.0;
obj->Sampler.MaxLod = 1000.0;
obj->Sampler.LodBias = 0.0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment