[aqsis] Update to current bugfix
Nicolas Chauvet
kwizart at fedoraproject.org
Tue Mar 29 16:07:52 UTC 2011
commit 549df81fc97bb074aae2a765f7ed367b2d88880f
Author: Nicolas Chauvet <kwizart at gmail.com>
Date: Tue Mar 29 18:08:02 2011 +0200
Update to current bugfix
aqsis-1.6.0-bugfix20110329.patch | 748 ++++++++++++++++++++++++++++++++++++++
aqsis.spec | 14 +-
2 files changed, 758 insertions(+), 4 deletions(-)
---
diff --git a/aqsis-1.6.0-bugfix20110329.patch b/aqsis-1.6.0-bugfix20110329.patch
new file mode 100644
index 0000000..be3e5fb
--- /dev/null
+++ b/aqsis-1.6.0-bugfix20110329.patch
@@ -0,0 +1,748 @@
+diff --git a/include/aqsis/ri/slo.h b/include/aqsis/ri/slo.h
+index 49cde91..71a49c6 100644
+--- a/include/aqsis/ri/slo.h
++++ b/include/aqsis/ri/slo.h
+@@ -60,6 +60,7 @@ extern "C"
+ SLO_STOR_VARIABLE,
+ SLO_STOR_TEMPORARY,
+ SLO_STOR_PARAMETER,
++ SLO_STOR_OUTPUTPARAMETER,
+ SLO_STOR_GSTATE
+ } SLO_STORAGE;
+
+diff --git a/include/aqsis/ri/slx.h b/include/aqsis/ri/slx.h
+index c72096e..f30ae35 100644
+--- a/include/aqsis/ri/slx.h
++++ b/include/aqsis/ri/slx.h
+@@ -60,6 +60,7 @@ extern "C"
+ SLX_STOR_VARIABLE,
+ SLX_STOR_TEMPORARY,
+ SLX_STOR_PARAMETER,
++ SLX_STOR_OUTPUTPARAMETER,
+ SLX_STOR_GSTATE
+ } SLX_STORAGE;
+
+diff --git a/include/aqsis/shadervm/ishader.h b/include/aqsis/shadervm/ishader.h
+index 926f4d4..8bdfb1f 100644
+--- a/include/aqsis/shadervm/ishader.h
++++ b/include/aqsis/shadervm/ishader.h
+@@ -23,6 +23,7 @@
+
+ #include <aqsis/core/interfacefwd.h>
+ #include <aqsis/riutil/primvartype.h>
++#include <aqsis/shadervm/ishaderdata.h>
+ #include <aqsis/util/exception.h>
+
+ namespace Aqsis {
+@@ -133,10 +134,10 @@ struct AQSIS_SHADERVM_SHARE IqShader
+ virtual TqInt Uses() const = 0;
+ /** Variable creation function.
+ */
+- virtual IqShaderData* CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, bool fArgument = false, bool fOutput = false ) = 0;
++ virtual IqShaderData* CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, IqShaderData::EqStorage storage = IqShaderData::Unknown ) = 0;
+ /** Variable array creation function.
+ */
+- virtual IqShaderData* CreateVariableArray( EqVariableType Type, EqVariableClass Class, const CqString& name, TqInt Count, bool fArgument = false, bool fOutput = false ) = 0;
++ virtual IqShaderData* CreateVariableArray( EqVariableType Type, EqVariableClass Class, const CqString& name, TqInt Count, IqShaderData::EqStorage storage = IqShaderData::Unknown ) = 0;
+ /** Function to create some temporary storage which complies to the IqShaderData interface.
+ */
+ virtual IqShaderData* CreateTemporaryStorage( EqVariableType type, EqVariableClass _class ) = 0;
+diff --git a/include/aqsis/shadervm/ishaderdata.h b/include/aqsis/shadervm/ishaderdata.h
+index 65c9c4b..bf50705 100644
+--- a/include/aqsis/shadervm/ishaderdata.h
++++ b/include/aqsis/shadervm/ishaderdata.h
+@@ -29,6 +29,16 @@ namespace Aqsis {
+
+ struct IqShaderData
+ {
++ /** \brief Storage type within the shader context
++ */
++ enum EqStorage
++ {
++ Unknown, ///< Don't know the storage
++ Temporary, ///< An internal temporary variable
++ Parameter, ///< A parameter to the shader
++ OutputParameter ///< An output parameter for the shader
++ };
++
+ /// Virtual destructor so that derived classes get cleaned up properly.
+ virtual ~IqShaderData()
+ {}
+@@ -257,10 +267,12 @@ struct IqShaderData
+ * \return Read only reference to a CqString class.
+ */
+ virtual const CqString& strName() const = 0;
+- /** Determine whether this data storage represents a shader argument.
+- * \return True if a shader argument, false otherwise.
++ /** Get the storage type
++ *
++ * \return the storage type on the shader, that is, whether it's a
++ * temporary, parameter, etc.
+ */
+- virtual bool fParameter() const = 0;
++ virtual EqStorage Storage() const = 0;
+
+ /** Pure virtual, prepare the variable for the SIMD size.
+ * \param uGridRes The size of the SIMD grid in u.
+diff --git a/libs/core/shaders.h b/libs/core/shaders.h
+index f77b6bf..c5c842e 100644
+--- a/libs/core/shaders.h
++++ b/libs/core/shaders.h
+@@ -284,18 +284,18 @@ class CqLayeredShader : public IqShader
+ // Gather the uses from all layers as they are added.
+ return ( m_Uses );
+ }
+- virtual IqShaderData* CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, bool fArgument = false, bool fOutput = false )
++ virtual IqShaderData* CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, IqShaderData::EqStorage storage )
+ {
+ // Call CreateVariable on the first shader in the list, all layers must be the same type.
+ if(!m_Layers.empty())
+- return(m_Layers.front().second->CreateVariable(Type, Class, name, fArgument, fOutput));
++ return(m_Layers.front().second->CreateVariable(Type, Class, name, storage));
+ return ( NULL );
+ }
+- virtual IqShaderData* CreateVariableArray( EqVariableType Type, EqVariableClass Class, const CqString& name, TqInt Count, bool fArgument = false, bool fOutput = false )
++ virtual IqShaderData* CreateVariableArray( EqVariableType Type, EqVariableClass Class, const CqString& name, TqInt Count, IqShaderData::EqStorage storage )
+ {
+ // Call CreateVariableArray on the first shader in the list, all layers must be the same type.
+ if(!m_Layers.empty())
+- return(m_Layers.front().second->CreateVariableArray(Type, Class, name, Count, fArgument, fOutput));
++ return(m_Layers.front().second->CreateVariableArray(Type, Class, name, Count, storage));
+ return ( NULL );
+ }
+ virtual IqShaderData* CreateTemporaryStorage( EqVariableType type, EqVariableClass _class )
+diff --git a/libs/shadervm/shadervariable.h b/libs/shadervm/shadervariable.h
+index ed1ab9c..bde269c 100644
+--- a/libs/shadervm/shadervariable.h
++++ b/libs/shadervm/shadervariable.h
+@@ -59,7 +59,7 @@ class CqShaderVariable : public IqShaderData
+ {
+ public:
+ CqShaderVariable();
+- CqShaderVariable( const char* strName, bool fParameter = false );
++ CqShaderVariable( const char* strName, EqStorage storage = Unknown );
+ virtual ~CqShaderVariable() {}
+
+ virtual void GetBool( bool& res, TqInt index = 0 ) const
+@@ -93,16 +93,16 @@ class CqShaderVariable : public IqShaderData
+
+ /** Determine if this variable is storage for a shader argument.
+ */
+- virtual bool fParameter() const
++ virtual EqStorage Storage() const
+ {
+- return ( m_fParameter );
++ return ( m_storage );
+ }
+
+ /** Indicate whether or not this variable is a shader argument.
+ */
+- void SetfParameter( bool fParameter = true )
++ void SetStorage(EqStorage storage)
+ {
+- m_fParameter = fParameter;
++ m_storage = storage;
+ }
+
+ virtual bool isArray() const
+@@ -120,7 +120,7 @@ class CqShaderVariable : public IqShaderData
+
+ protected:
+ CqString m_strName; ///< Name of this variable.
+- bool m_fParameter; ///< Flag indicating this variable is a shader argument.
++ EqStorage m_storage; ///< variable storage: temporary, shader parameter, etc
+ }
+ ;
+
+@@ -138,9 +138,9 @@ class CqShaderVariableArray: public CqShaderVariable
+ /** Default constructor.
+ * \param name Character pointer to the name to use.
+ * \param Count the size of the array.
+- * \param fParameter Boolean value, true indicates the shader variable is a shader parameter.
++ * \param storage behaviour on the shader (temporary / shader parameter etc)
+ */
+- CqShaderVariableArray( const char* name, TqInt Count, bool fParameter = false ) : CqShaderVariable( name, fParameter )
++ CqShaderVariableArray( const char* name, TqInt Count, EqStorage storage = Unknown ) : CqShaderVariable( name, storage )
+ {
+ assert( Count > 0 );
+ m_aVariables.resize( Count );
+@@ -444,7 +444,7 @@ class CqShaderVariableUniform : public CqShaderVariable
+ CqShaderVariableUniform() : CqShaderVariable()
+ {
+ }
+- CqShaderVariableUniform( const char* strName, bool fParameter = false ) : CqShaderVariable( strName, fParameter )
++ CqShaderVariableUniform( const char* strName, EqStorage storage = Unknown ) : CqShaderVariable( strName, storage )
+ {
+
+ }
+@@ -663,7 +663,7 @@ class CqShaderVariableUniformFloat : public CqShaderVariableUniform<type_float,
+ CqShaderVariableUniformFloat( ) : CqShaderVariableUniform<type_float, TqFloat>()
+ {
+ }
+- CqShaderVariableUniformFloat( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_float, TqFloat>( strName, fParameter )
++ CqShaderVariableUniformFloat( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_float, TqFloat>( strName, storage )
+ {
+ }
+ virtual void GetFloat( TqFloat& res, TqInt index = 0 ) const
+@@ -716,7 +716,7 @@ class CqShaderVariableUniformString : public CqShaderVariableUniform<type_string
+ CqShaderVariableUniformString( ) : CqShaderVariableUniform<type_string, CqString>()
+ {
+ }
+- CqShaderVariableUniformString( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_string, CqString>( strName, fParameter )
++ CqShaderVariableUniformString( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_string, CqString>( strName, storage )
+ {
+ }
+ virtual void GetString( CqString& res, TqInt index = 0 ) const
+@@ -761,7 +761,7 @@ class CqShaderVariableUniformPoint : public CqShaderVariableUniform<type_point,
+ CqShaderVariableUniformPoint() : CqShaderVariableUniform<type_point, CqVector3D>()
+ {
+ }
+- CqShaderVariableUniformPoint( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_point, CqVector3D>( strName, fParameter )
++ CqShaderVariableUniformPoint( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_point, CqVector3D>( strName, storage )
+ {
+ }
+ virtual void GetPoint( CqVector3D& res, TqInt index = 0 ) const
+@@ -830,7 +830,7 @@ class CqShaderVariableUniformVector : public CqShaderVariableUniform<type_vector
+ CqShaderVariableUniformVector() : CqShaderVariableUniform<type_vector, CqVector3D>()
+ {
+ }
+- CqShaderVariableUniformVector( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_vector, CqVector3D>( strName, fParameter )
++ CqShaderVariableUniformVector( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_vector, CqVector3D>( strName, storage )
+ {
+ }
+ virtual void GetPoint( CqVector3D& res, TqInt index = 0 ) const
+@@ -899,7 +899,7 @@ class CqShaderVariableUniformNormal : public CqShaderVariableUniform<type_normal
+ CqShaderVariableUniformNormal() : CqShaderVariableUniform<type_normal, CqVector3D>()
+ {
+ }
+- CqShaderVariableUniformNormal( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_normal, CqVector3D>( strName, fParameter )
++ CqShaderVariableUniformNormal( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_normal, CqVector3D>( strName, storage )
+ {}
+ virtual void GetPoint( CqVector3D& res, TqInt index = 0 ) const
+ {
+@@ -967,7 +967,7 @@ class CqShaderVariableUniformColor : public CqShaderVariableUniform<type_color,
+ CqShaderVariableUniformColor() : CqShaderVariableUniform<type_color, CqColor>()
+ {
+ }
+- CqShaderVariableUniformColor( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_color, CqColor>( strName, fParameter )
++ CqShaderVariableUniformColor( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_color, CqColor>( strName, storage )
+ {
+ }
+ virtual void GetColor( CqColor& res, TqInt index = 0 ) const
+@@ -1008,7 +1008,7 @@ class CqShaderVariableUniformMatrix : public CqShaderVariableUniform<type_matrix
+ CqShaderVariableUniformMatrix() : CqShaderVariableUniform<type_matrix, CqMatrix>()
+ {
+ }
+- CqShaderVariableUniformMatrix( const char* strName, bool fParameter = false ) : CqShaderVariableUniform<type_matrix, CqMatrix>( strName, fParameter )
++ CqShaderVariableUniformMatrix( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableUniform<type_matrix, CqMatrix>( strName, storage )
+ {
+ }
+ virtual void GetMatrix( CqMatrix& res, TqInt index = 0 ) const
+@@ -1056,7 +1056,7 @@ class CqShaderVariableVarying : public CqShaderVariable
+ m_aValue.resize( 1 );
+ }
+
+- CqShaderVariableVarying( const char* strName, bool fParameter = false ) : CqShaderVariable( strName, fParameter )
++ CqShaderVariableVarying( const char* strName, EqStorage storage = Unknown ) : CqShaderVariable( strName, storage )
+ {
+ m_aValue.resize( 1 );
+ }
+@@ -1264,7 +1264,7 @@ class CqShaderVariableVaryingFloat : public CqShaderVariableVarying<type_float,
+ CqShaderVariableVaryingFloat( ) : CqShaderVariableVarying<type_float, TqFloat>( )
+ {
+ }
+- CqShaderVariableVaryingFloat( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_float, TqFloat>( strName, fParameter )
++ CqShaderVariableVaryingFloat( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_float, TqFloat>( strName, storage )
+ {
+ }
+ virtual void GetFloat( TqFloat& res, TqInt index = 0 ) const
+@@ -1343,7 +1343,7 @@ class CqShaderVariableVaryingString : public CqShaderVariableVarying<type_string
+ CqShaderVariableVaryingString( ) : CqShaderVariableVarying<type_string, CqString>( )
+ {
+ }
+- CqShaderVariableVaryingString( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_string, CqString>( strName, fParameter )
++ CqShaderVariableVaryingString( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_string, CqString>( strName, storage )
+ {
+ }
+ virtual void GetString( CqString& res, TqInt index = 0 ) const
+@@ -1414,7 +1414,7 @@ class CqShaderVariableVaryingPoint : public CqShaderVariableVarying<type_point,
+ CqShaderVariableVaryingPoint( ) : CqShaderVariableVarying<type_point, CqVector3D>( )
+ {
+ }
+- CqShaderVariableVaryingPoint( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_point, CqVector3D>( strName, fParameter )
++ CqShaderVariableVaryingPoint( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_point, CqVector3D>( strName, storage )
+ {
+ }
+ virtual void GetPoint( CqVector3D& res, TqInt index = 0 ) const
+@@ -1524,7 +1524,7 @@ class CqShaderVariableVaryingVector : public CqShaderVariableVarying<type_vector
+ CqShaderVariableVaryingVector( ) : CqShaderVariableVarying<type_vector, CqVector3D>( )
+ {
+ }
+- CqShaderVariableVaryingVector( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_vector, CqVector3D>( strName, fParameter )
++ CqShaderVariableVaryingVector( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_vector, CqVector3D>( strName, storage )
+ {
+ }
+ virtual void GetPoint( CqVector3D& res, TqInt index = 0 ) const
+@@ -1634,7 +1634,7 @@ class CqShaderVariableVaryingNormal : public CqShaderVariableVarying<type_normal
+ CqShaderVariableVaryingNormal( ) : CqShaderVariableVarying<type_normal, CqVector3D>( )
+ {
+ }
+- CqShaderVariableVaryingNormal( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_normal, CqVector3D>( strName, fParameter )
++ CqShaderVariableVaryingNormal( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_normal, CqVector3D>( strName, storage )
+ {
+ }
+ virtual void GetPoint( CqVector3D& res, TqInt index = 0 ) const
+@@ -1744,7 +1744,7 @@ class CqShaderVariableVaryingColor : public CqShaderVariableVarying<type_color,
+ CqShaderVariableVaryingColor( ) : CqShaderVariableVarying<type_color, CqColor>( )
+ {
+ }
+- CqShaderVariableVaryingColor( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_color, CqColor>( strName, fParameter )
++ CqShaderVariableVaryingColor( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_color, CqColor>( strName, storage )
+ {
+ }
+ virtual void GetColor( CqColor& res, TqInt index = 0 ) const
+@@ -1814,7 +1814,7 @@ class CqShaderVariableVaryingMatrix : public CqShaderVariableVarying<type_matrix
+ CqShaderVariableVaryingMatrix( ) : CqShaderVariableVarying<type_matrix, CqMatrix>( )
+ {
+ }
+- CqShaderVariableVaryingMatrix( const char* strName, bool fParameter = false ) : CqShaderVariableVarying<type_matrix, CqMatrix>( strName, fParameter )
++ CqShaderVariableVaryingMatrix( const char* strName, EqStorage storage = Unknown ) : CqShaderVariableVarying<type_matrix, CqMatrix>( strName, storage )
+ {
+ }
+ virtual void GetMatrix( CqMatrix& res, TqInt index = 0 ) const
+@@ -1882,12 +1882,12 @@ class CqShaderVariableVaryingMatrix : public CqShaderVariableVarying<type_matrix
+
+ inline CqShaderVariable::CqShaderVariable()
+ : m_strName(),
+- m_fParameter(false)
++ m_storage(Unknown)
+ {}
+
+-inline CqShaderVariable::CqShaderVariable(const char* strName, bool fParameter)
++inline CqShaderVariable::CqShaderVariable(const char* strName, EqStorage storage)
+ : m_strName(strName),
+- m_fParameter(fParameter)
++ m_storage(storage)
+ {}
+
+ } // namespace Aqsis
+diff --git a/libs/shadervm/shadervm.cpp b/libs/shadervm/shadervm.cpp
+index f2177c3..3e52ff5 100644
+--- a/libs/shadervm/shadervm.cpp
++++ b/libs/shadervm/shadervm.cpp
+@@ -584,7 +584,7 @@ CqShaderVM::~CqShaderVM()
+ * Function to create a local variable for a specific shader
+ */
+
+-IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, bool fParameter, bool fOutput )
++IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, IqShaderData::EqStorage storage )
+ {
+ // Create a VM specific shader variable, which implements the IqShaderData interface,
+ // based on the type and class specified.
+@@ -597,9 +597,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingFloat( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingFloat( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformFloat( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformFloat( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -612,9 +612,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingPoint( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingPoint( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformPoint( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformPoint( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -627,9 +627,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingNormal( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingNormal( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformNormal( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformNormal( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -642,9 +642,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingVector( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingVector( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformVector( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformVector( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -657,9 +657,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingString( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingString( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformString( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformString( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -672,9 +672,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingColor( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingColor( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformColor( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformColor( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -693,9 +693,9 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ switch ( Class )
+ {
+ case class_varying:
+- return ( new CqShaderVariableVaryingMatrix( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableVaryingMatrix( name.c_str(), storage ) );
+ case class_uniform:
+- return ( new CqShaderVariableUniformMatrix( name.c_str(), fParameter ) );
++ return ( new CqShaderVariableUniformMatrix( name.c_str(), storage ) );
+ default: // Clear up compiler warnings
+ break;
+ }
+@@ -714,63 +714,63 @@ IqShaderData* CqShaderVM::CreateVariable( EqVariableType Type, EqVariableClass C
+ * Function to create a local variable array for a specific shader
+ */
+
+-IqShaderData* CqShaderVM::CreateVariableArray( EqVariableType VarType, EqVariableClass VarClass, const CqString& name, TqInt Count, bool fParameter, bool fOutput )
++IqShaderData* CqShaderVM::CreateVariableArray( EqVariableType VarType, EqVariableClass VarClass, const CqString& name, TqInt Count, IqShaderData::EqStorage storage )
+ {
+ IqShaderData * pVar = 0;
+ switch ( VarType )
+ {
+ case type_float:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingFloat( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingFloat( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformFloat( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformFloat( name.c_str(), storage );
+ break;
+
+ case type_point:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingPoint( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingPoint( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformPoint( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformPoint( name.c_str(), storage );
+ break;
+
+ case type_normal:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingNormal( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingNormal( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformNormal( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformNormal( name.c_str(), storage );
+ break;
+
+ case type_vector:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingVector( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingVector( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformVector( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformVector( name.c_str(), storage );
+ break;
+
+ case type_color:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingColor( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingColor( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformColor( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformColor( name.c_str(), storage );
+ break;
+
+ case type_string:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingString( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingString( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformString( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformString( name.c_str(), storage );
+ break;
+
+ case type_matrix:
+ if ( VarClass == class_varying )
+- pVar = new CqShaderVariableVaryingMatrix( name.c_str(), fParameter );
++ pVar = new CqShaderVariableVaryingMatrix( name.c_str(), storage );
+ else
+- pVar = new CqShaderVariableUniformMatrix( name.c_str(), fParameter );
++ pVar = new CqShaderVariableUniformMatrix( name.c_str(), storage );
+ break;
+ default: // Clear up the warnings
+ break;
+ }
+- CqShaderVariableArray* pArray = new CqShaderVariableArray( name.c_str(), Count, fParameter );
++ CqShaderVariableArray* pArray = new CqShaderVariableArray( name.c_str(), Count, storage );
+ pArray->aVariables() [ 0 ] = pVar;
+ TqInt i;
+ for ( i = 1; i < Count; i++ )
+@@ -787,7 +787,7 @@ IqShaderData* CqShaderVM::CreateVariableArray( EqVariableType VarType, EqVariabl
+ IqShaderData* CqShaderVM::CreateTemporaryStorage( EqVariableType type, EqVariableClass _class )
+ {
+ CqString strName( "__temporary__" );
+- return ( CreateVariable( type, _class, strName ) );
++ return ( CreateVariable( type, _class, strName, IqShaderData::Temporary ) );
+ }
+
+
+@@ -1015,8 +1015,7 @@ void CqShaderVM::LoadProgram( std::istream* pFile )
+ EqVariableType VarType = type_invalid;
+ EqVariableClass VarClass = class_varying;
+ bool fVarArray = false;
+- bool fParameter = false;
+- bool fOutput = false;
++ IqShaderData::EqStorage varStorage = IqShaderData::Temporary;
+ switch ( Segment )
+ {
+ case Seg_Data:
+@@ -1025,9 +1024,14 @@ void CqShaderVM::LoadProgram( std::istream* pFile )
+ while ( VarType == type_invalid )
+ {
+ if ( ohash == htoken) // == "output"
+- fOutput = true;
++ varStorage = IqShaderData::OutputParameter;
+ else if ( phash == htoken) // == "param"
+- fParameter = true;
++ {
++ // "output" implies "param"; careful not to
++ // overwrite the "output" designation.
++ if ( varStorage != IqShaderData::OutputParameter)
++ varStorage = IqShaderData::Parameter;
++ }
+ else if ( vhash == htoken) // == "varying"
+ VarClass = class_varying;
+ else if ( uhash == htoken) // == "uniform"
+@@ -1059,9 +1063,9 @@ void CqShaderVM::LoadProgram( std::istream* pFile )
+ continue;
+
+ if ( fVarArray )
+- AddLocalVariable( CreateVariableArray( VarType, VarClass, token, array_count, fParameter, fOutput ) );
++ AddLocalVariable( CreateVariableArray( VarType, VarClass, token, array_count, varStorage ) );
+ else
+- AddLocalVariable( CreateVariable( VarType, VarClass, token, fParameter, fOutput ) );
++ AddLocalVariable( CreateVariable( VarType, VarClass, token, varStorage ) );
+ break;
+
+ case Seg_Init:
+diff --git a/libs/shadervm/shadervm.h b/libs/shadervm/shadervm.h
+index 51cc8e0..94fd39b 100644
+--- a/libs/shadervm/shadervm.h
++++ b/libs/shadervm/shadervm.h
+@@ -174,8 +174,8 @@ class AQSIS_SHADERVM_SHARE CqShaderVM : public CqShaderStack, public IqShader, p
+ {
+ return ( m_Uses );
+ }
+- virtual IqShaderData* CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, bool fArgument = false, bool fOutput = false );
+- virtual IqShaderData* CreateVariableArray( EqVariableType Type, EqVariableClass Class, const CqString& name, TqInt Count, bool fParameter = false, bool fOutput = false );
++ virtual IqShaderData* CreateVariable( EqVariableType Type, EqVariableClass Class, const CqString& name, IqShaderData::EqStorage storage );
++ virtual IqShaderData* CreateVariableArray( EqVariableType Type, EqVariableClass Class, const CqString& name, TqInt Count, IqShaderData::EqStorage storage );
+ virtual IqShaderData* CreateTemporaryStorage( EqVariableType type, EqVariableClass _class );
+ virtual void DeleteTemporaryStorage( IqShaderData* pData );
+ virtual void DefaultSurface();
+diff --git a/libs/slxargs/slx.cpp b/libs/slxargs/slx.cpp
+index 5012132..c5bec84 100644
+--- a/libs/slxargs/slx.cpp
++++ b/libs/slxargs/slx.cpp
+@@ -87,6 +87,7 @@ static const char * SLX_STOR_CONSTANT_STR = "constant";
+ static const char * SLX_STOR_VARIABLE_STR = "variable";
+ static const char * SLX_STOR_TEMPORARY_STR = "temporary";
+ static const char * SLX_STOR_PARAMETER_STR = "parameter";
++static const char * SLX_STOR_OUTPUTPARAMETER_STR = "output parameter";
+ static const char * SLX_STOR_GSTATE_STR = "gstate";
+
+ static const char * SLX_DETAIL_UNKNOWN_STR = "unknown";
+@@ -239,7 +240,8 @@ static void FreeArgRecStorage( SLX_VISSYMDEF * theShaderArgArray, int theShaderN
+ * Store info in the shader arg record specified by index
+ */
+ static RtInt StoreShaderArgDef( SLX_VISSYMDEF * theArgsArray, int argsArrayIdx,
+- char * varName, SLX_TYPE varType, char * spacename, char * defaultVal, int arrayLen )
++ char * varName, SLX_TYPE varType, SLX_STORAGE storage,
++ char * spacename, char * defaultVal, int arrayLen )
+ {
+ SLX_VISSYMDEF * theShaderArgRec;
+ RtInt result;
+@@ -252,7 +254,7 @@ static RtInt StoreShaderArgDef( SLX_VISSYMDEF * theArgsArray, int argsArrayIdx,
+
+ theShaderArgRec->svd_type = varType;
+
+- theShaderArgRec->svd_storage = SLX_STOR_PARAMETER;
++ theShaderArgRec->svd_storage = storage;
+
+ theShaderArgRec->svd_detail = SLX_DETAIL_UNIFORM;
+
+@@ -327,7 +329,21 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ int arrayLen = 0;
+ int arrayIndex;
+
+- if ( shaderVar != NULL && shaderVar->fParameter() )
++ SLX_STORAGE storage = SLX_STOR_UNKNOWN;
++ switch(shaderVar->Storage())
++ {
++ case IqShaderData::Parameter:
++ storage = SLX_STOR_PARAMETER;
++ break;
++ case IqShaderData::OutputParameter:
++ storage = SLX_STOR_OUTPUTPARAMETER;
++ break;
++ default:
++ storage = SLX_STOR_UNKNOWN;
++ break;
++ }
++
++ if ( shaderVar != NULL && storage != SLX_STOR_UNKNOWN )
+ {
+ theType = shaderVar->Type();
+ theClass = shaderVar->Class();
+@@ -370,7 +386,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ spacename = ( char * ) malloc( 1 );
+ *spacename = 0x0; // NULL string
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -407,7 +423,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ spacename = ( char * ) malloc( 1 );
+ *spacename = 0x0; // NULL string
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -447,7 +463,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ strcpy( spacename, "current" );
+
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -487,7 +503,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ strcpy( spacename, "current" );
+
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -527,7 +543,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ strcpy( spacename, "current" );
+
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -567,7 +583,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ strcpy( spacename, "rgb" );
+
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -633,7 +649,7 @@ static void AddShaderVar( IqShaderData * shaderVar,
+ strcpy( spacename, "current" );
+
+ StoreShaderArgDef( theArgsArray, *theNArgs, theVarNameStr, slxType,
+- spacename, defaultVal, arrayLen );
++ storage, spacename, defaultVal, arrayLen );
+ ( *theNArgs ) ++;
+ }
+ break;
+@@ -663,7 +679,7 @@ static RtInt GetCurrentShaderInfo( char * name, char * filePath )
+ {
+ try
+ {
+- boost::shared_ptr<IqShader> pShader = createShaderVM(0, slxFile, DSOPath);
++ boost::shared_ptr<IqShader> pShader = createShaderVM(0, slxFile, DSOPath ? DSOPath : "");
+ pShader->SetstrName( filePath );
+ pShader->PrepareDefArgs();
+
+@@ -1337,6 +1353,9 @@ char *SLX_StortoStr ( SLX_STORAGE storage )
+ case SLX_STOR_PARAMETER:
+ slxStorageStr = ( char * ) SLX_STOR_PARAMETER_STR;
+ break;
++ case SLX_STOR_OUTPUTPARAMETER:
++ slxStorageStr = ( char * ) SLX_STOR_OUTPUTPARAMETER_STR;
++ break;
+ case SLX_STOR_GSTATE:
+ slxStorageStr = ( char * ) SLX_STOR_GSTATE_STR;
+ break;
+diff --git a/tools/aqsltell/aqsltell.cpp b/tools/aqsltell/aqsltell.cpp
+index a4310ff..e5ab61b 100644
+--- a/tools/aqsltell/aqsltell.cpp
++++ b/tools/aqsltell/aqsltell.cpp
+@@ -151,9 +151,10 @@ int main( int argc, const char** argv )
+ if ( symPtr->svd_arraylen != 0 )
+ arrayLen = symPtr->svd_arraylen;
+
+- std::cout << " \"" << symPtr->svd_name << "\" \"parameter " <<
+- SLX_DetailtoStr( symPtr->svd_detail ) << " " <<
+- SLX_TypetoStr( symPtr->svd_type );
++ std::cout << " \"" << symPtr->svd_name << "\" \""
++ << SLX_StortoStr( symPtr->svd_storage ) << " "
++ << SLX_DetailtoStr( symPtr->svd_detail ) << " "
++ << SLX_TypetoStr( symPtr->svd_type );
+
+ if ( symPtr->svd_arraylen != 0 )
+ std::cout << "[" << arrayLen << "]";
+diff --git a/tools/displays/sdcBMP/d_sdcBMP.cpp b/tools/displays/sdcBMP/d_sdcBMP.cpp
+index b6edb26..1be42ba 100644
+--- a/tools/displays/sdcBMP/d_sdcBMP.cpp
++++ b/tools/displays/sdcBMP/d_sdcBMP.cpp
+@@ -169,7 +169,7 @@ extern "C" PtDspyError DspyImageOpen(PtDspyImageHandle *image,
+
+ // Initialize our global resources
+
+- memset(&g_Data, sizeof(AppData), 0);
++ memset(&g_Data, 0, sizeof(AppData));
+
+ flagstuff->flags = PkDspyFlagsWantsScanLineOrder;
+
+diff --git a/tools/displays/sdcWin32/d_sdcWin32.cpp b/tools/displays/sdcWin32/d_sdcWin32.cpp
+index 53d9259..ae2f62e 100644
+--- a/tools/displays/sdcWin32/d_sdcWin32.cpp
++++ b/tools/displays/sdcWin32/d_sdcWin32.cpp
+@@ -247,7 +247,7 @@ static bool InitApplication(HINSTANCE hInstance)
+
+ // Initialize our global application data
+
+- memset(&g_Data, sizeof(AppData), 0);
++ memset(&g_Data, 0, sizeof(AppData));
+
+
+ // Save our instance handle.
diff --git a/aqsis.spec b/aqsis.spec
index b7e8988..2968156 100644
--- a/aqsis.spec
+++ b/aqsis.spec
@@ -1,13 +1,14 @@
Name: aqsis
Version: 1.6.0
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Open source 3D rendering solution adhering to the RenderMan standard
Group: Applications/Multimedia
License: GPLv2+ and LGPLv2+
URL: http://www.aqsis.org
Source0: http://downloads.sourceforge.net/aqsis/aqsis-%{version}.tar.gz
-Patch0: aqsis-1.6.0-cstdlib.patch
+Patch0: aqsis-1.6.0-bugfix20110329.patch
+Patch1: aqsis-1.6.0-cstdlib.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: desktop-file-utils
@@ -20,7 +21,7 @@ BuildRequires: fltk-devel >= 1.1.0, fltk-fluid
BuildRequires: libjpeg-devel >= 6
BuildRequires: libtiff-devel >= 3.7.1
BuildRequires: libxslt
-BuildRequires: tinyxml-devel
+#BuildRequires: tinyxml-devel
BuildRequires: OpenEXR-devel
BuildRequires: zlib-devel >= 1.1.4
@@ -98,6 +99,7 @@ integration with third-party applications.
%prep
%setup -q
%patch0 -p1
+%patch1 -p1
%build
@@ -119,7 +121,7 @@ pushd build
-DAQSIS_BOOST_THREAD_LIBRARY_NAME=boost_thread-mt \
-DAQSIS_BOOST_WAVE_LIBRARY_NAME=boost_wave-mt \
-DCMAKE_CXX_FLAGS="$CXXFLAGS -DBOOST_FILESYSTEM_VERSION=2" \
- -DAQSIS_USE_EXTERNAL_TINYXML:BOOL=ON ..
+ -DAQSIS_USE_EXTERNAL_TINYXML:BOOL=OFF ..
make VERBOSE=1 %{?_smp_mflags}
@@ -242,6 +244,10 @@ fi || :
%changelog
+* Tue Mar 29 2011 Nicolas Chauvet <kwizart at gmail.com> - 1.6.0-8
+- Update to current bugfix
+- Disable tinyxml
+
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.6.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
More information about the scm-commits
mailing list