diff options
author | Michal Krol <mjkrol@gmail.org> | 2005-03-18 14:28:02 +0000 |
---|---|---|
committer | Michal Krol <mjkrol@gmail.org> | 2005-03-18 14:28:02 +0000 |
commit | 2fb2e27e28569371bd0d12aa74504d53bb04edc0 (patch) | |
tree | 87fd04629f66c78767e68ed8fe9ea2d552771042 /src/mesa/shader/slang/Public | |
parent | 5b641a516ecde984027d4fc1fe198195b7b861a7 (diff) |
update against 03-Feb-2005 release
Diffstat (limited to 'src/mesa/shader/slang/Public')
-rwxr-xr-x | src/mesa/shader/slang/Public/ShaderLang.h | 134 | ||||
-rwxr-xr-x | src/mesa/shader/slang/Public/ShaderLangExt.h | 132 |
2 files changed, 56 insertions, 210 deletions
diff --git a/src/mesa/shader/slang/Public/ShaderLang.h b/src/mesa/shader/slang/Public/ShaderLang.h index 1cda3d9e30..b7345fd9dd 100755 --- a/src/mesa/shader/slang/Public/ShaderLang.h +++ b/src/mesa/shader/slang/Public/ShaderLang.h @@ -1,5 +1,5 @@ -/*
-//Copyright (C) 2002-2004 3Dlabs Inc. Ltd.
+//
+//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
//All rights reserved.
//
//Redistribution and use in source and binary forms, with or without
@@ -30,69 +30,47 @@ //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.
-*/
+//
#ifndef _COMPILER_INTERFACE_INCLUDED_
#define _COMPILER_INTERFACE_INCLUDED_
+#include "../Include/ResourceLimits.h"
#ifdef _WIN32
#define C_DECL __cdecl
-#define SH_IMPORT_EXPORT
+#ifdef SH_EXPORTING
+ #define SH_IMPORT_EXPORT __declspec(dllexport)
+#else
+ #define SH_IMPORT_EXPORT __declspec(dllimport)
+#endif
#else
#define SH_IMPORT_EXPORT
#define __fastcall
#define C_DECL
#endif
-/*
+//
// This is the platform independent interface between an OGL driver
// and the shading language compiler/linker.
-*/
+//
#ifdef __cplusplus
extern "C" {
#endif
-/*
+//
// Driver must call this first, once, before doing any other
// compiler/linker operations.
-*/
+//
SH_IMPORT_EXPORT int ShInitialize();
-/*
+//
// Driver should call this at shutdown.
-*/
+//
SH_IMPORT_EXPORT int __fastcall ShFinalize();
-/*
-// to be used for hardwareDataType and userDataType by ICD
-*/
-typedef enum {
- EFloat,
- EInt,
- EBool,
- EFloat_Vec2,
- EFloat_Vec3,
- EFloat_Vec4,
- EInt_Vec2,
- EInt_Vec3,
- EInt_Vec4,
- EBool_Vec2,
- EBool_Vec3,
- EBool_Vec4,
- EFloat_Mat2,
- EFloat_Mat3,
- EFloat_Mat4,
- ESampler_1D,
- ESampler_2D,
- ESampler_3D,
- ESampler_Cube,
- ESampler_1D_Shadow,
- ESampler_2D_Shadow,
- EStruct
-} ShBasicType;
-
-/*
+
+//
// Types of languages the compiler can consume.
-*/
+//
typedef enum {
EShLangVertex,
EShLangFragment,
@@ -101,9 +79,9 @@ typedef enum { EShLangCount
} EShLanguage;
-/*
+//
// Types of output the linker will create.
-*/
+//
typedef enum {
EShExVertexFragment,
EShExPackFragment,
@@ -111,20 +89,20 @@ typedef enum { EShExFragment
} EShExecutable;
-/*
+//
// Optimization level for the compiler.
-*/
+//
typedef enum {
EShOptNoGeneration,
EShOptNone,
- EShOptSimple, /* Optimizations that can be done quickly */
- EShOptFull /* Optimizations that will take more time */
+ EShOptSimple, // Optimizations that can be done quickly
+ EShOptFull // Optimizations that will take more time
} EShOptimizationLevel;
-/*
+//
// Build a table for bindings. This can be used for locating
// attributes, uniforms, globals, etc., as needed.
-*/
+//
typedef struct {
char* name;
int binding;
@@ -132,10 +110,10 @@ typedef struct { typedef struct {
int numBindings;
- ShBinding* bindings; /* array of bindings */
+ ShBinding* bindings; // array of bindings
} ShBindingTable;
-/*
+//
// ShHandle held by but opaque to the driver. It is allocated,
// managed, and de-allocated by the compiler/linker. It's contents
// are defined by and used by the compiler and linker. For example,
@@ -143,79 +121,79 @@ typedef struct { // to the linker can be stored where ShHandle points.
//
// If handle creation fails, 0 will be returned.
-*/
+//
typedef void* ShHandle;
-/*
+//
// Driver calls these to create and destroy compiler/linker
// objects.
-*/
-SH_IMPORT_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions); /* one per shader */
-SH_IMPORT_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions); /* one per shader pair */
-SH_IMPORT_EXPORT ShHandle ShConstructUniformMap(); /* one per uniform namespace (currently entire program object) */
+//
+SH_IMPORT_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions); // one per shader
+SH_IMPORT_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions); // one per shader pair
+SH_IMPORT_EXPORT ShHandle ShConstructUniformMap(); // one per uniform namespace (currently entire program object)
SH_IMPORT_EXPORT void ShDestruct(ShHandle);
-/*
+//
// The return value of ShCompile is boolean, indicating
// success or failure.
//
// The info-log should be written by ShCompile into
// ShHandle, so it can answer future queries.
-*/
+//
SH_IMPORT_EXPORT int ShCompile(
const ShHandle,
const char* const shaderStrings[],
const int numStrings,
const EShOptimizationLevel,
+ const TBuiltInResource *resources,
int debugOptions
);
-/*
+//
// Similar to ShCompile, but accepts an opaque handle to an
// intermediate language structure.
-*/
+//
SH_IMPORT_EXPORT int ShCompileIntermediate(
ShHandle compiler,
ShHandle intermediate,
const EShOptimizationLevel,
- int debuggable /* boolean */
+ int debuggable // boolean
);
SH_IMPORT_EXPORT int ShLink(
- const ShHandle, /* linker object */
- const ShHandle h[], /* compiler objects to link together */
+ const ShHandle, // linker object
+ const ShHandle h[], // compiler objects to link together
const int numHandles,
- ShHandle uniformMap, /* updated with new uniforms */
- short int** uniformsAccessed, /* returned with indexes of uniforms accessed */
+ ShHandle uniformMap, // updated with new uniforms
+ short int** uniformsAccessed, // returned with indexes of uniforms accessed
int* numUniformsAccessed);
-/*
+//
// ShSetEncrpytionMethod is a place-holder for specifying
// how source code is encrypted.
-*/
+//
SH_IMPORT_EXPORT void ShSetEncryptionMethod(ShHandle);
-/*
+//
// All the following return 0 if the information is not
// available in the object passed down, or the object is bad.
-*/
+//
SH_IMPORT_EXPORT const char* ShGetInfoLog(const ShHandle);
SH_IMPORT_EXPORT const void* ShGetExecutable(const ShHandle);
-SH_IMPORT_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*); /* to detect user aliasing */
-SH_IMPORT_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*); /* to force any physical mappings */
-SH_IMPORT_EXPORT int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); /* for all attributes */
-/*
+SH_IMPORT_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*); // to detect user aliasing
+SH_IMPORT_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*); // to force any physical mappings
+SH_IMPORT_EXPORT int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); // for all attributes
+//
// Tell the linker to never assign a vertex attribute to this list of physical attributes
-*/
+//
SH_IMPORT_EXPORT int ShExcludeAttributes(const ShHandle, int *attributes, int count);
-/*
+//
// Returns the location ID of the named uniform.
// Returns -1 if error.
-*/
+//
SH_IMPORT_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char* name);
-SH_IMPORT_EXPORT char* ShGetUniformName(const ShHandle linker, int virtualLocation);
enum TDebugOptions {
EDebugOpNone = 0x000,
@@ -229,4 +207,4 @@ enum TDebugOptions { }
#endif
-#endif /* _COMPILER_INTERFACE_INCLUDED_ */
+#endif // _COMPILER_INTERFACE_INCLUDED_
diff --git a/src/mesa/shader/slang/Public/ShaderLangExt.h b/src/mesa/shader/slang/Public/ShaderLangExt.h index bb669f327e..e44b5f99af 100755 --- a/src/mesa/shader/slang/Public/ShaderLangExt.h +++ b/src/mesa/shader/slang/Public/ShaderLangExt.h @@ -45,143 +45,11 @@ extern "C" {
#endif
-typedef enum {
- EReserved = 0,
- EFixed,
- ERecommended,
- EFloating
-} ShPriority;
-
-typedef enum {
- ESymbol = 0,
- EFloatConst,
- EFloatConstPtr,
- EIntConst,
- EIntConstPtr,
- EBoolConst,
- EBoolConstPtr
-} ShDataType;
-
-// this definition will eventually go once we move to the new linker interface in the driver
-typedef enum {
- EVirtualBinding,
- EPhysicalBinding
-} ShVirtualPhysicalBinding;
-
-typedef struct {
- int size; // out - total physical size for the binding in floats - P10
- int location; // in-out - virtualLocation for all cases
- int functionPriority; // out - used for giving priorities to function bindings
- int proEpilogue; // out - essentially a bool defining whether its a prologue/epilogue or not, 1 means it is
- int builtInName; // out - basically a bool value, 0 means not a builtInName, 1 means its a builtInName
- int arraySize; // out - size of the array in units of its type - if the binding is for an array
- ShPriority bindingPriority; // in-out - EFixed, ERecommended, EFloating
- ShDataType bindingDataType; // in-out - whether its a symbol name or a constant value
- ShBasicType hardwareDataType; // out - bool are loaded as floats on the hardware
- ShBasicType userDataType; // out - mat3 -> mat3, ivec2 -> ivec2, vec2 -> vec2
- ShBasicType basicUserType; // out - mat3 -> float, ivec2 ->int, vec2 -> float
- int sizeOfType; // out - for vec3 -> 3, for float -> 1, for mat3 -> 3, mat3[10] -> 3
- int matrix; // out - essentially a boolean, 0 means vector, 1 means matrix
- union { // in-out
- char* name;
- float floatVal;
- float* floatValPtr;
- int intVal;
- int* intValPtr;
- };
- // A pointer to ShP10PhysicalBinding or ShP20PhysicalBinding
- void* targetDependentData; // in-out
-} ShBindingExt;
-
-//
-// to specify the type of binding
-//
-typedef enum {
- EAttribute,
- EUniform,
- EVarying,
- EFunction,
- EConstant,
- EFunctionRelocation,
- EArbVertexLocal,
- EArbVertexEnv,
- EArbFragmentLocal,
- EArbFragmentEnv,
- EState,
- ENoBindingType } ShBindingType;
-
-typedef struct {
- // a pointer to ShBindingExt
- ShBindingExt* pBinding;
- int numOfBindings;
- ShBindingType type;
-} ShBindingTableExt;
-
-typedef struct {
- ShBindingTableExt *bindingTable;
- int numOfBindingTables;
-} ShBindingList;
-
-SH_IMPORT_EXPORT ShHandle ShConstructBindings();
-SH_IMPORT_EXPORT ShHandle ShConstructLibrary();
-
-SH_IMPORT_EXPORT ShHandle ShAddBinding(ShHandle bindingHandle,
- ShBindingExt* binding,
- ShBindingType type);
-SH_IMPORT_EXPORT ShHandle ShAddBindingTable(ShHandle bindingHandle,
- ShBindingTableExt *bindingTable,
- ShBindingType type);
-
SH_IMPORT_EXPORT int ShLinkExt(
const ShHandle, // linker object
const ShHandle h[], // compiler objects to link together
const int numHandles);
-SH_IMPORT_EXPORT ShBindingList* ShGetBindingList(const ShHandle linkerHandle);
-SH_IMPORT_EXPORT ShBindingTableExt* ShGetBindingTable(const ShHandle linkerHandle, ShBindingType type);
-SH_IMPORT_EXPORT int ShGetUniformLocationExt(const ShHandle linkerHandle, const char* name);
-SH_IMPORT_EXPORT int ShSetFixedAttributeBindingsExt(const ShHandle, const ShBindingTableExt*);
-SH_IMPORT_EXPORT int ShGetUniformLocationExt2(const ShHandle handle, const char* name, int* location, int* offset);
-SH_IMPORT_EXPORT int ShSetVirtualLocation(const ShHandle handle, ShBindingType type, int bindingIndex, int virtualLocation);
-SH_IMPORT_EXPORT int ShGetVirtualLocation(const ShHandle handle, ShBindingType type, int bindingIndex, int *virtualLocation);
-//
-// To get the bindings object from the linker object (after the link is done so that
-// bindings can be added to the list)
-//
-SH_IMPORT_EXPORT ShHandle ShGetBindings(const ShHandle linkerHandle);
-SH_IMPORT_EXPORT int ShAddLibraryCode(ShHandle library, const char* name, const ShHandle objectCodes[], const int numHandles);
-
-/*****************************************************************************
- This code is used by the new shared linker
- *****************************************************************************/
-//
-// Each programmable unit has a UnitExecutable. Targets may subclass
-// and append to this as desired.
-//
-typedef struct {
- int name; // name of unit to which executable is targeted
- int entry; // a target specific entry point
- int count; // size of executable
- const void* code; // read-only code
-} ShUnitExecutable;
-
-//
-// The "void*" returned from ShGetExecutable() will be an ShExecutable
-//
-typedef struct {
- int count; // count of unit executables
- ShUnitExecutable* executables;
-} ShExecutable;
-
-SH_IMPORT_EXPORT ShExecutable* ShGetExecutableExt(const ShHandle linkerHandle);
-
-typedef struct {
- int numThread;
- int stackSpacePerThread;
- int visBufferValidity; // essenatially a boolean
- int shaderFragTerminationStatus; // essentially a boolean
-} ShDeviceInfo;
-
#ifdef __cplusplus
}
#endif
|