unsigned int unBit;
unsigned int i;
+ if (context->radeon.NewGLState & (_NEW_PROGRAM_CONSTANTS|_NEW_PROGRAM))
+ {
+ vpc->needUpdateVF = 1;
+ }
+
if (context->radeon.radeonScreen->chip_family < CHIP_FAMILY_RV770)
{
vpc->r700AsmCode.bR6xx = 1;
unsigned int unNumParamData;
unsigned int ui;
+ if (vp->needUpdateVF)
+ {
+ vp->loaded = GL_FALSE;
+ vp->r700Shader.bNeedsAssembly = GL_TRUE;
+ Process_Vertex_Program_Vfetch_Instructions(vp, &(vp->mesa_program));
+ r600DeleteShader(ctx, vp->shaderbo);
+ }
+
if(GL_FALSE == vp->loaded)
{
if(vp->r700Shader.bNeedsAssembly == GL_TRUE)
{
struct gl_vertex_program mesa_program; /* Must be first */
- struct r700_vertex_program *next;
+ struct r700_vertex_program *next;
r700_AssemblerBase r700AsmCode;
R700_Shader r700Shader;
- GLboolean translated;
+ GLboolean translated;
GLboolean loaded;
+ GLboolean needUpdateVF;
- /* ... */
-
void * shaderbo;
- ArrayDesc aos_desc[VERT_ATTRIB_MAX];
+ ArrayDesc aos_desc[VERT_ATTRIB_MAX];
};
//Internal