Add serial tracking to ProgramBinary

Trac #21270
Bug=351
Signed-off-by: Nicolas Capens



git-svn-id: https://angleproject.googlecode.com/svn/trunk@1232 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 3977f20..6eebb8a 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -57,7 +57,9 @@
 {
 }
 
-ProgramBinary::ProgramBinary()
+unsigned int ProgramBinary::mCurrentSerial = 1;
+
+ProgramBinary::ProgramBinary() : mSerial(issueSerial())
 {
     mDevice = getDevice();
 
@@ -123,6 +125,16 @@
     }
 }
 
+unsigned int ProgramBinary::getSerial() const
+{
+    return mSerial;
+}
+
+unsigned int ProgramBinary::issueSerial()
+{
+    return mCurrentSerial++;
+}
+
 IDirect3DPixelShader9 *ProgramBinary::getPixelShader()
 {
     return mPixelExecutable;
diff --git a/src/libGLESv2/ProgramBinary.h b/src/libGLESv2/ProgramBinary.h
index 8a587b9..f928644 100644
--- a/src/libGLESv2/ProgramBinary.h
+++ b/src/libGLESv2/ProgramBinary.h
@@ -155,6 +155,8 @@
     bool validateSamplers(InfoLog *infoLog);
     bool isValidated() const;
 
+    unsigned int getSerial() const;
+
     static std::string decorateAttribute(const std::string &name);    // Prepend an underscore
     static std::string undecorateUniform(const std::string &_name);   // Remove leading underscore
 
@@ -219,6 +221,11 @@
     GLint mDxPointsOrLinesLocation;
 
     bool mValidated;
+
+    const unsigned int mSerial;
+
+    static unsigned int issueSerial();
+    static unsigned int mCurrentSerial;
 };
 }