diff options
author | Christian König <[email protected]> | 2010-10-28 20:24:56 +0200 |
---|---|---|
committer | Christian König <[email protected]> | 2010-10-28 20:24:56 +0200 |
commit | 41ed47d6b8fb6c032e2907ef2e49e414c26f35c1 (patch) | |
tree | 8cf267ee3ac5d8b530dd70a28a0d568344aa8304 /src/mesa/main/texstate.c | |
parent | 97a7cf230a70c64fff300931ae7c00aa00449c97 (diff) | |
parent | 5479fa34d9acebd55f68c23a278cf382d0e84248 (diff) |
Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa into pipe-video
Conflicts:
src/gallium/include/pipe/p_format.h
Diffstat (limited to 'src/mesa/main/texstate.c')
-rw-r--r-- | src/mesa/main/texstate.c | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 30c978c1cdd..f4d77189f29 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -63,7 +63,7 @@ static const struct gl_tex_env_combine_state default_combine_state = { * Used by glXCopyContext to copy texture state from one context to another. */ void -_mesa_copy_texture_state( const GLcontext *src, GLcontext *dst ) +_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst ) { GLuint u, tex; @@ -119,7 +119,7 @@ _mesa_copy_texture_state( const GLcontext *src, GLcontext *dst ) * For debugging */ void -_mesa_print_texunit_state( GLcontext *ctx, GLuint unit ) +_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit ) { const struct gl_texture_unit *texUnit = ctx->Texture.Unit + unit; printf("Texture Unit %d\n", unit); @@ -363,7 +363,7 @@ _mesa_ClientActiveTextureARB(GLenum texture) * \param ctx GL context. */ static void -update_texture_matrices( GLcontext *ctx ) +update_texture_matrices( struct gl_context *ctx ) { GLuint u; @@ -386,7 +386,7 @@ update_texture_matrices( GLcontext *ctx ) * Examine texture unit's combine/env state to update derived state. */ static void -update_tex_combine(GLcontext *ctx, struct gl_texture_unit *texUnit) +update_tex_combine(struct gl_context *ctx, struct gl_texture_unit *texUnit) { struct gl_tex_env_combine_state *combine; @@ -489,30 +489,35 @@ update_tex_combine(GLcontext *ctx, struct gl_texture_unit *texUnit) * \param ctx GL context. */ static void -update_texture_state( GLcontext *ctx ) +update_texture_state( struct gl_context *ctx ) { GLuint unit; struct gl_fragment_program *fprog = NULL; struct gl_vertex_program *vprog = NULL; GLbitfield enabledFragUnits = 0x0; - if (ctx->Shader.CurrentProgram && - ctx->Shader.CurrentProgram->LinkStatus) { - fprog = ctx->Shader.CurrentProgram->FragmentProgram; - vprog = ctx->Shader.CurrentProgram->VertexProgram; + if (ctx->Shader.CurrentVertexProgram && + ctx->Shader.CurrentVertexProgram->LinkStatus) { + vprog = ctx->Shader.CurrentVertexProgram->VertexProgram; + } else if (ctx->VertexProgram._Enabled) { + /* XXX enable this if/when non-shader vertex programs get + * texture fetches: + vprog = ctx->VertexProgram.Current; + */ } - else { - if (ctx->FragmentProgram._Enabled) { - fprog = ctx->FragmentProgram.Current; - } - if (ctx->VertexProgram._Enabled) { - /* XXX enable this if/when non-shader vertex programs get - * texture fetches: - vprog = ctx->VertexProgram.Current; - */ - } + + if (ctx->Shader.CurrentFragmentProgram && + ctx->Shader.CurrentFragmentProgram->LinkStatus) { + fprog = ctx->Shader.CurrentFragmentProgram->FragmentProgram; + } + else if (ctx->FragmentProgram._Enabled) { + fprog = ctx->FragmentProgram.Current; } + /* FINISHME: Geometry shader texture accesses should also be considered + * FINISHME: here. + */ + /* TODO: only set this if there are actual changes */ ctx->NewState |= _NEW_TEXTURE; @@ -653,7 +658,7 @@ update_texture_state( GLcontext *ctx ) * Update texture-related derived state. */ void -_mesa_update_texture( GLcontext *ctx, GLuint new_state ) +_mesa_update_texture( struct gl_context *ctx, GLuint new_state ) { if (new_state & _NEW_TEXTURE_MATRIX) update_texture_matrices( ctx ); @@ -678,7 +683,7 @@ _mesa_update_texture( GLcontext *ctx, GLuint new_state ) * GL_FALSE. */ static GLboolean -alloc_proxy_textures( GLcontext *ctx ) +alloc_proxy_textures( struct gl_context *ctx ) { static const GLenum targets[] = { GL_TEXTURE_1D, @@ -716,7 +721,7 @@ alloc_proxy_textures( GLcontext *ctx ) * \param unit texture unit number to be initialized. */ static void -init_texture_unit( GLcontext *ctx, GLuint unit ) +init_texture_unit( struct gl_context *ctx, GLuint unit ) { struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; GLuint tex; @@ -764,7 +769,7 @@ init_texture_unit( GLcontext *ctx, GLuint unit ) * Initialize texture state for the given context. */ GLboolean -_mesa_init_texture(GLcontext *ctx) +_mesa_init_texture(struct gl_context *ctx) { GLuint u; @@ -796,7 +801,7 @@ _mesa_init_texture(GLcontext *ctx) * Free dynamically-allocted texture data attached to the given context. */ void -_mesa_free_texture_data(GLcontext *ctx) +_mesa_free_texture_data(struct gl_context *ctx) { GLuint u, tgt; @@ -825,7 +830,7 @@ _mesa_free_texture_data(GLcontext *ctx) * shared state. */ void -_mesa_update_default_objects_texture(GLcontext *ctx) +_mesa_update_default_objects_texture(struct gl_context *ctx) { GLuint u, tex; |