t_vp_build.c revision 32ef6e75839d6be283e034436e5dd34eabb67958
1f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell/*
2f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * Mesa 3-D graphics library
36dd98e9853a6984150aa47467112e016c40a4ab4Brian Paul * Version:  7.1
4f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell *
56dd98e9853a6984150aa47467112e016c40a4ab4Brian Paul * Copyright (C) 2007  Tungsten Graphics   All Rights Reserved.
6f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell *
7f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a
8f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * copy of this software and associated documentation files (the "Software"),
9f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * to deal in the Software without restriction, including without limitation
10f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * and/or sell copies of the Software, and to permit persons to whom the
12f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * Software is furnished to do so, subject to the following conditions:
13f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell *
14f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * The above copyright notice and this permission notice shall be included
15f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * in all copies or substantial portions of the Software.
16f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell *
17f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
205f534aa1e2c53360bb1ae42fb196e41aa29d0d3dKeith Whitwell * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
215f534aa1e2c53360bb1ae42fb196e41aa29d0d3dKeith Whitwell * WHETHER IN
22f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell */
25f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
26f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell/**
27f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * \file t_vp_build.c
28f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * Create a vertex program to execute the current fixed function T&L pipeline.
29f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * \author Keith Whitwell
30f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell */
31f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
32f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
33bbd287103dad776d8a45c87c4e51fbc26d9b80d5Brian Paul#include "main/glheader.h"
3432ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell#include "main/ffvertex_prog.h"
35f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell#include "t_vp_build.h"
36f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
37f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
386dd98e9853a6984150aa47467112e016c40a4ab4Brian Paul/**
3932ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell * XXX This should go away someday, but still referenced by some drivers...
40f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell */
41a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwellvoid _tnl_UpdateFixedFunctionProgram( GLcontext *ctx )
42a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell{
43122629f27925a9dc50029bebc5079f87f416a7e1Brian Paul   const struct gl_vertex_program *prev = ctx->VertexProgram._Current;
44f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
45dba21ed913da2222e3b55fc8ba724ca93acbabf1Nicolai Hähnle   if (!ctx->VertexProgram._Current ||
46dba21ed913da2222e3b55fc8ba724ca93acbabf1Nicolai Hähnle       ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) {
4732ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell      ctx->VertexProgram._Current
4832ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell         = ctx->VertexProgram._TnlProgram
4932ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell         = _mesa_get_fixed_func_vertex_program(ctx);
50a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell   }
51a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell
52c3626a91cee5034528f3f92c802a8e5947ea5f92Keith Whitwell   /* Tell the driver about the change.  Could define a new target for
53c3626a91cee5034528f3f92c802a8e5947ea5f92Keith Whitwell    * this?
54a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell    */
55a328e469d328f8b6fd5afdfc21d576fa1a2c43fcBrian Paul   if (ctx->VertexProgram._Current != prev && ctx->Driver.BindProgram) {
56122629f27925a9dc50029bebc5079f87f416a7e1Brian Paul      ctx->Driver.BindProgram(ctx, GL_VERTEX_PROGRAM_ARB,
57122629f27925a9dc50029bebc5079f87f416a7e1Brian Paul                            (struct gl_program *) ctx->VertexProgram._Current);
58a328e469d328f8b6fd5afdfc21d576fa1a2c43fcBrian Paul   }
59a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell}
60