1f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell/*
2f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell * Mesa 3-D graphics library
36dd98e9853a6984150aa47467112e016c40a4ab4Brian * Version:  7.1
4f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell *
56dd98e9853a6984150aa47467112e016c40a4ab4Brian * 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"
35176a8359b93badfff3b6f6e78df974f870fbf7aaVinson Lee#include "main/mtypes.h"
36f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell#include "t_vp_build.h"
37f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
38f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
396dd98e9853a6984150aa47467112e016c40a4ab4Brian/**
4032ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell * XXX This should go away someday, but still referenced by some drivers...
41f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell */
42f9995b30756140724f41daf963fa06167912be7fKristian Høgsbergvoid _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx )
43a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell{
44122629f27925a9dc50029bebc5079f87f416a7e1Brian Paul   const struct gl_vertex_program *prev = ctx->VertexProgram._Current;
45f069e5e412eebabe64286d35598173caac5c132eKeith Whitwell
46dba21ed913da2222e3b55fc8ba724ca93acbabf1Nicolai Haehnle   if (!ctx->VertexProgram._Current ||
47dba21ed913da2222e3b55fc8ba724ca93acbabf1Nicolai Haehnle       ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) {
4832ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell      ctx->VertexProgram._Current
4932ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell         = ctx->VertexProgram._TnlProgram
5032ef6e75839d6be283e034436e5dd34eabb67958Keith Whitwell         = _mesa_get_fixed_func_vertex_program(ctx);
51a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell   }
52a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell
53c3626a91cee5034528f3f92c802a8e5947ea5f92Keith Whitwell   /* Tell the driver about the change.  Could define a new target for
54c3626a91cee5034528f3f92c802a8e5947ea5f92Keith Whitwell    * this?
55a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell    */
56a328e469d328f8b6fd5afdfc21d576fa1a2c43fcBrian   if (ctx->VertexProgram._Current != prev && ctx->Driver.BindProgram) {
57122629f27925a9dc50029bebc5079f87f416a7e1Brian Paul      ctx->Driver.BindProgram(ctx, GL_VERTEX_PROGRAM_ARB,
58122629f27925a9dc50029bebc5079f87f416a7e1Brian Paul                            (struct gl_program *) ctx->VertexProgram._Current);
59a328e469d328f8b6fd5afdfc21d576fa1a2c43fcBrian   }
60a8534885efb13ec7f071192c1504513cd90d07deKeith Whitwell}
61