diff options
Diffstat (limited to 'src/mesa/main/texparam.c')
-rw-r--r-- | src/mesa/main/texparam.c | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 3d56dac3f91..4b9dcb5d3b5 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -439,6 +439,20 @@ set_tex_parameteri(struct gl_context *ctx, } goto invalid_pname; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (ctx->Extensions.AMD_seamless_cubemap_per_texture) { + GLenum param = params[0]; + if (param != GL_TRUE && param != GL_FALSE) { + goto invalid_param; + } + if (param != texObj->Sampler.CubeMapSeamless) { + flush(ctx); + texObj->Sampler.CubeMapSeamless = param; + } + return GL_TRUE; + } + goto invalid_pname; + default: goto invalid_pname; } @@ -580,6 +594,7 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param) case GL_TEXTURE_COMPARE_FUNC_ARB: case GL_DEPTH_TEXTURE_MODE_ARB: case GL_TEXTURE_SRGB_DECODE_EXT: + case GL_TEXTURE_CUBE_MAP_SEAMLESS: { /* convert float param to int */ GLint p[4]; @@ -629,6 +644,7 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params) case GL_TEXTURE_COMPARE_FUNC_ARB: case GL_DEPTH_TEXTURE_MODE_ARB: case GL_TEXTURE_SRGB_DECODE_EXT: + case GL_TEXTURE_CUBE_MAP_SEAMLESS: { /* convert float param to int */ GLint p[4]; @@ -979,11 +995,9 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level, } break; case GL_TEXTURE_SHARED_SIZE: - if (ctx->VersionMajor >= 3) { - /* XXX return number of exponent bits for shared exponent texture - * formats, like GL_RGB9_E5. - */ - *params = 0; + if (ctx->VersionMajor >= 3 || + ctx->Extensions.EXT_texture_shared_exponent) { + *params = texFormat == MESA_FORMAT_RGB9_E5_FLOAT ? 5 : 0; } else { goto invalid_pname; @@ -1237,6 +1251,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) } break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (ctx->Extensions.AMD_seamless_cubemap_per_texture) { + *params = (GLfloat) obj->Sampler.CubeMapSeamless; + } + else { + error = GL_TRUE; + } + default: error = GL_TRUE; break; @@ -1398,6 +1420,14 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) } break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (ctx->Extensions.AMD_seamless_cubemap_per_texture) { + *params = (GLint) obj->Sampler.CubeMapSeamless; + } + else { + error = GL_TRUE; + } + default: ; /* silence warnings */ } |