summaryrefslogtreecommitdiff
path: root/include/user/shacccg
diff options
context:
space:
mode:
authorSonicMastr2020-10-16 19:22:50 -0500
committerReiko Asakura2020-10-16 19:22:50 -0500
commit83bbd3ee5326300f317e9b345fddb0067e7bdd10 (patch)
tree37d023553a80d732cacb9769ceb7d0e64db95ab4 /include/user/shacccg
parentAdd psp2/audiocodec.h (diff)
downloadvds-libraries-83bbd3ee5326300f317e9b345fddb0067e7bdd10.tar.gz
Added ShaccCg Headers
https://github.com/DolceSDK/headers/pull/12
Diffstat (limited to 'include/user/shacccg')
-rw-r--r--include/user/shacccg/paramquery.h527
-rw-r--r--include/user/shacccg/types.h448
2 files changed, 975 insertions, 0 deletions
diff --git a/include/user/shacccg/paramquery.h b/include/user/shacccg/paramquery.h
new file mode 100644
index 0000000..3969330
--- /dev/null
+++ b/include/user/shacccg/paramquery.h
@@ -0,0 +1,527 @@
+#ifndef _DOLCESDK_PSP2_SHACCCG_PARAMQUERY_H_
+#define _DOLCESDK_PSP2_SHACCCG_PARAMQUERY_H_
+
+#include "psp2common/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif // def __cplusplus
+
+///////////////////////////////////////////////////////////////////////////////
+// Forward declarations
+///////////////////////////////////////////////////////////////////////////////
+typedef void const * SceShaccCgParameter;
+typedef struct SceShaccCgCompileOutput SceShaccCgCompileOutput;
+
+///////////////////////////////////////////////////////////////////////////////
+// Constants
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief Classifies shader parameter class
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgParameterClass {
+ SCE_SHACCCG_PARAMETERCLASS_INVALID = 0x00, ///< An invalid parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_SCALAR = 0x01, ///< Scalar parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_VECTOR = 0x02, ///< Vector parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_MATRIX = 0x03, ///< Matrix parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_STRUCT = 0x04, ///< Struct parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_ARRAY = 0x05, ///< Array parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_SAMPLER = 0x06, ///< Sampler parameter class.
+ SCE_SHACCCG_PARAMETERCLASS_UNIFORMBLOCK = 0x07 ///< Uniform Block parameter class.
+} SceShaccCgParameterClass;
+
+/** @brief Classifies shader parameter data format
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgParameterBaseType {
+ SCE_SHACCCG_BASETYPE_INVALID = 0x00, ///< An invalid format.
+ SCE_SHACCCG_BASETYPE_FLOAT = 0x01, ///< Full precision 32-bit floating point.
+ SCE_SHACCCG_BASETYPE_HALF = 0x02, ///< Half precision 16-bit floating point.
+ SCE_SHACCCG_BASETYPE_FIXED = 0x03, ///< 2.8 fixed point precision.
+ SCE_SHACCCG_BASETYPE_BOOL = 0x04, ///< Boolean value.
+ SCE_SHACCCG_BASETYPE_CHAR = 0x05, ///< Signed char (8-bit) value.
+ SCE_SHACCCG_BASETYPE_UCHAR = 0x06, ///< Unsigned char (8-bit) value.
+ SCE_SHACCCG_BASETYPE_SHORT = 0x07, ///< Signed short (16-bit) value.
+ SCE_SHACCCG_BASETYPE_USHORT = 0x08, ///< Unsigned short (16-bit) value.
+ SCE_SHACCCG_BASETYPE_INT = 0x09, ///< Signed int (32-bit) value.
+ SCE_SHACCCG_BASETYPE_UINT = 0x0a, ///< Unsigned int (32-bit) value.
+ SCE_SHACCCG_BASETYPE_SAMPLER1D = 0x0b, ///< 1D sampler
+ SCE_SHACCCG_BASETYPE_ISAMPLER1D = 0x0c, ///< 1D signed integer sampler
+ SCE_SHACCCG_BASETYPE_USAMPLER1D = 0x0d, ///< 1D unsigned integer sampler
+ SCE_SHACCCG_BASETYPE_SAMPLER2D = 0x0e, ///< 2D sampler
+ SCE_SHACCCG_BASETYPE_ISAMPLER2D = 0x0f, ///< 2D signed integer sampler
+ SCE_SHACCCG_BASETYPE_USAMPLER2D = 0x10, ///< 2D unsigned integer sampler
+ SCE_SHACCCG_BASETYPE_SAMPLERCUBE = 0x11, ///< Cube sampler
+ SCE_SHACCCG_BASETYPE_ISAMPLERCUBE = 0x12, ///< Cube signed integer sampler
+ SCE_SHACCCG_BASETYPE_USAMPLERCUBE = 0x13, ///< Cube unsigned integer sampler
+ SCE_SHACCCG_BASETYPE_ARRAY = 0x17, ///< An array
+ SCE_SHACCCG_BASETYPE_STRUCT = 0x18, ///< A structure
+ SCE_SHACCCG_BASETYPE_UNIFORMBLOCK = 0x19 ///< A uniform block
+} SceShaccCgParameterBaseType;
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Structs
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief Classifies matrix memory layout
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgParameterMemoryLayout
+{
+ SCE_SHACCCG_MEMORYLAYOUT_INVALID, ///< Invalid memory layout
+ SCE_SHACCCG_MEMORYLAYOUT_COLUMN_MAJOR, ///< Column major memory layout
+ SCE_SHACCCG_MEMORYLAYOUT_ROW_MAJOR ///< Row major memory layout
+} SceShaccCgParameterMemoryLayout;
+
+/** @brief Classifies shader parameter variability
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgParameterVariability
+{
+ SCE_SHACCCG_VARIABILITY_INVALID, ///< Invalid variability
+ SCE_SHACCCG_VARIABILITY_VARYING, ///< Parameter is varying
+ SCE_SHACCCG_VARIABILITY_UNIFORM ///< Parameter is uniform
+} SceShaccCgParameterVariability;
+
+/** @brief Classifies shader parameter direction
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgParameterDirection
+{
+ SCE_SHACCCG_DIRECTION_INVALID, ///< Invalid direction
+ SCE_SHACCCG_DIRECTION_IN, ///< Parameter is input
+ SCE_SHACCCG_DIRECTION_OUT ///< Parameter is output
+} SceShaccCgParameterDirection;
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Functions
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief Start parameter enumeration.
+
+ Start parameter enumeration.
+
+ @param[in] prog
+ The output of a successful shader compilation.
+
+ @return
+ A SceShaccCgParameter object representing the first parameter in the shader.
+ If 0 is returned, the input argument was malformed or the shader has no public
+ symbols.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetFirstParameter(
+ SceShaccCgCompileOutput const* prog);
+
+/** @brief Access the next parameter in the global list of shader parameter.
+
+ Access the next parameter in the global list of shader parameter.
+
+ @param[in] param
+ The current parameter object.
+
+ @return
+ A SceShaccCgParameter object representing the next parameter, or NULL if there are
+ no more parameters.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetNextParameter(
+ SceShaccCgParameter param);
+
+/** @brief Find a parameter by its name.
+
+ Find a parameter by its name.
+
+ @param[in] prog
+ The output of a successful shader compilation.
+
+ @param[in] name
+ The name of the parameter.
+
+ @return
+ A SceShaccCgParameter object representing the parameter or NULL if the
+ parameter was not found.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetParameterByName(
+ SceShaccCgCompileOutput const* prog,
+ SceChar8 const *name);
+
+/** @brief Returns the name of a parameter.
+
+ Returns the name of a parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ A NULL terminated string containing the name of the parameter
+
+ @ingroup shacccg
+*/
+const SceChar8 *sceShaccCgGetParameterName(
+ SceShaccCgParameter param);
+
+/** @brief Returns the semantic of a parameter.
+
+ Returns the semantic of a parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ A NULL terminated string containing the semantic of the parameter or NULL
+ if no semantic was declared
+
+ @ingroup shacccg
+*/
+const SceChar8 *sceShaccCgGetParameterSemantic(
+ SceShaccCgParameter param);
+
+/** @brief Returns the user declared type of a parameter.
+
+ Returns the user declared type of a parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ A NULL terminated string containing the user declared type of the parameter or NULL
+ if no user declared type was used
+
+ @ingroup shacccg
+*/
+const SceChar8 *sceShaccCgGetParameterUserType(
+ SceShaccCgParameter param);
+
+/** @brief Returns the parameter class.
+
+ Returns the parameter class.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The SceShaccCgParameterClass value this parameter is part of.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameterClass sceShaccCgGetParameterClass(
+ SceShaccCgParameter param);
+
+/** @brief Returns the parameter variability.
+
+ Returns the parameter variability.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The SceShaccCgParameterVariability value for the parameter.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameterVariability sceShaccCgGetParameterVariability(
+ SceShaccCgParameter param);
+
+/** @brief Returns the parameter direction.
+
+ Returns the parameter direction.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The SceShaccCgParameterDirection value for the parameter.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameterDirection sceShaccCgGetParameterDirection(
+ SceShaccCgParameter param);
+
+/** @brief Returns the parameter base type.
+
+ Returns the parameter base type.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The SceShaccCgParameterBaseType value for the parameter.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameterBaseType sceShaccCgGetParameterBaseType(
+ SceShaccCgParameter param);
+
+/** @brief Returns true if the parameter is referenced.
+
+ Returns true if the parameter is referenced.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ 1 if the value is referenced, otherwise return 0 if the parameter is dead.
+
+ @ingroup shacccg
+*/
+SceInt32 sceShaccCgIsParameterReferenced(
+ SceShaccCgParameter param);
+
+/** @brief Returns the hw resource index of the parameter.
+
+ Returns the hw resource index of the parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The resource index or a value of -1 if no resource is assigned to this parameter.
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetParameterResourceIndex(
+ SceShaccCgParameter param);
+
+/** @brief Returns the buffer index of the parameter.
+
+ Returns the buffer index of the parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The buffer index or a value of -1 if no buffer is assigned to this parameter.
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetParameterBufferIndex(
+ SceShaccCgParameter param);
+
+/** @brief Returns true if the parameter is __regformat.
+
+ Returns true if the parameter is __regformat.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ 1 if the value is __regformat, otherwise return 0.
+
+ @ingroup shacccg
+*/
+SceInt32 sceShaccCgIsParameterRegFormat(
+ SceShaccCgParameter param);
+
+/** @brief Returns the first member for a struct parameter.
+
+ Returns the first member for a struct parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The parameter object for the first member of a struct or NULL if the parameter was
+ malformed.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetFirstStructParameter(
+ SceShaccCgParameter param);
+
+/** @brief Returns the first member for a uniform block parameter.
+
+ Returns the first member for a uniform block parameter.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The parameter object for the first member of a uniform block or NULL if the parameter was
+ malformed.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetFirstUniformBlockParameter(
+ SceShaccCgParameter param);
+
+/** @brief Returns the size of an array.
+
+ Returns the size of an array.
+
+ @param[in] param
+ The parameter object.
+
+ @return
+ The size of an array parameter in terms of the number of elements.
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetArraySize(
+ SceShaccCgParameter param);
+
+/** @brief Returns the parameter for an array element.
+
+ Returns the parameter for an array element.
+
+ @param[in] aparam
+ The array parameter object.
+
+ @param[in] index
+ The array index.
+
+ @return
+ The parameter object for the element associated with the array index.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetArrayParameter(
+ SceShaccCgParameter aparam,
+ uint32_t index);
+
+/** @brief Returns the vector width for a vector parameter.
+
+ Returns the vector width for a vector parameter.
+
+ @param[in] param
+ The vector parameter object.
+
+ @return
+ The width of the vector parameter.
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetParameterVectorWidth(
+ SceShaccCgParameter param);
+
+/** @brief Returns the number of columns for a matrix parameter.
+
+ Returns the number of columns for a matrix parameter.
+
+ @param[in] param
+ The matrix parameter object.
+
+ @return
+ The number of columns for a matrix parameter
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetParameterColumns(
+ SceShaccCgParameter param);
+
+/** @brief Returns the number of rows for a matrix parameter.
+
+ Returns the number of rows for a matrix parameter.
+
+ @param[in] param
+ The matrix parameter object.
+
+ @return
+ The number of rows for a matrix parameter
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetParameterRows(
+ SceShaccCgParameter param);
+
+/** @brief Returns the memory layout for a matrix parameter.
+
+ Returns the memory layout for a matrix parameter.
+
+ @param[in] param
+ The matrix parameter object.
+
+ @return
+ The SceShaccCgParameterMemoryLayout for the matrix parameter.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameterMemoryLayout sceShaccCgGetParameterMemoryLayout(
+ SceShaccCgParameter param);
+
+/** @brief Returns the parameter for a row of a matrix parameter.
+
+ Returns the parameter for a row of a matrix parameter.
+
+ @param[in] param
+ The matrix parameter object.
+
+ @param[in] index
+ The row index.
+
+ @return
+ The parameter object for the row paramater.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameter sceShaccCgGetRowParameter(
+ SceShaccCgParameter param,
+ uint32_t index);
+
+/** @brief Returns the query format component count for a sampler parameter.
+
+ Returns the query format component count for a sampler parameter.
+
+ @param[in] param
+ The sampler parameter object.
+
+ @return
+ The query format component count.
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetSamplerQueryFormatWidth(
+ SceShaccCgParameter param);
+
+/** @brief Returns the number of different precisions used to as query format for sampler parameter.
+
+ Returns the number of different precisions used to as query format for sampler parameter.
+
+ @param[in] param
+ The sampler parameter object.
+
+ @return
+ count of different precisions used to as query format.
+
+ @ingroup shacccg
+*/
+SceUInt32 sceShaccCgGetSamplerQueryFormatPrecisionCount(
+ SceShaccCgParameter param);
+
+/** @brief Returns query precision format for a sampler parameter.
+
+ Returns query precision format for a sampler parameter.
+
+ @param[in] param
+ The sampler parameter object.
+
+ @param[in] index
+ The index of the precision format.
+
+ @return
+ query precision format.
+
+ @ingroup shacccg
+*/
+SceShaccCgParameterBaseType sceShaccCgGetSamplerQueryFormatPrecision(
+ SceShaccCgParameter param,
+ SceUInt32 index);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _DOLCESDK_PSP2_SHACCCG_PARAMQUERY_H_ */
diff --git a/include/user/shacccg/types.h b/include/user/shacccg/types.h
new file mode 100644
index 0000000..81465d3
--- /dev/null
+++ b/include/user/shacccg/types.h
@@ -0,0 +1,448 @@
+#ifndef _DOLCESDK_PSP2_SHACCCG_TYPES_H_
+#define _DOLCESDK_PSP2_SHACCCG_TYPES_H_
+
+#include "psp2common/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif // def __cplusplus
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Forward declarations
+///////////////////////////////////////////////////////////////////////////////
+
+typedef struct SceShaccCgCompileOptions SceShaccCgCompileOptions;
+typedef struct SceShaccCgSourceFile SceShaccCgSourceFile;
+typedef struct SceShaccCgSourceLocation SceShaccCgSourceLocation;
+
+///////////////////////////////////////////////////////////////////////////////
+// Typedefs
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief A callback used when the compiler needs to open a file.
+
+ The includedFrom location will either be 0, if a primary file is being
+ opened, or it will point to the location of the #include directive.
+ If the file could not be opened, 0 is returned and errorString will be
+ updated to point to a representative message, explaining why the file
+ could not be opened.
+ On success, a non-zero pointer is returned. The caller takes ownership,
+ calling SceShaccCgCallbackReleaseFile when the returned SceShaccCgSourceFile
+ is no longer required.
+
+ @param[in] fileName
+ The absolute path of the file to be opened.
+
+ @param[in] includedFrom
+ The include location. Set to 0 for a primary file.
+
+ @param[in] compileOptions
+ The original options pointer used to invoke this compile.
+
+ @param[in] userData
+ Opaque pointer to user data.
+
+ @param[out] errorString
+ If 0 is returned and this pointer is non-zero, this output param should
+ be updated to contain a diagnostic message.
+
+ @return
+ A SceShaccCgSourceFile object to be destroyed later with
+ SceShaccCgCallbackReleaseFile.
+
+ @ingroup shacccg
+*/
+typedef SceShaccCgSourceFile* (*SceShaccCgCallbackOpenFile)(
+ const SceChar8 *fileName,
+ const SceShaccCgSourceLocation *includedFrom,
+ const SceShaccCgCompileOptions *compileOptions,
+ ScePVoid userData,
+ const SceChar8 **errorString);
+
+/** @brief A callback used when the compiler needs to release file data.
+
+ This function is used to release memory that was previously allocated as
+ part of a call to SceShaccCgCallbackOpenFile. This will be called once per
+ "fileName" associated with that SceShaccCgSourceFile object when the
+ resources for the compile session are released.
+
+ @param[in] file
+ The SceShaccCgSourceFile object to be destroyed.
+
+ @param[in] compileOptions
+ The original options pointer used to invoke this compile.
+
+ @param[in] userData
+ Opaque pointer to user data.
+
+ @ingroup shacccg
+*/
+typedef void (*SceShaccCgCallbackReleaseFile)(
+ const SceShaccCgSourceFile *file,
+ const SceShaccCgCompileOptions *compileOptions,
+ ScePVoid userData);
+
+/** @brief A callback used to search for a named file.
+
+ This function will search in all provided paths for the named file. If the
+ file could not be located, 0 is returned and errorString will have been
+ updated to a representative message, explaining why the file could not be
+ located.
+ On success, a non-zero string is returned. The caller takes ownership and
+ will release the allocation via the SceShaccCgCallbackReleaseFileName
+ callback.
+
+ @param[in] fileName
+ The name of the file to be located.
+
+ @param[in] includedFrom
+ The location of the include directive. Set to 0 for primary files.
+
+ @param[in] searchPathCount
+ The number of search paths provided via 'searchPaths'.
+
+ @param[in] searchPaths
+ The array of search paths. The size is provided via 'searchPathCount'.
+
+ @param[in] compileOptions
+ The original options pointer used to invoke this compile.
+
+ @param[in] userData
+ Opaque pointer to user data.
+
+ @param[out] errorString
+ If 0 is returned and if this pointer is non-zero, it should be updated
+ to contain a diagnostic message.
+
+ @return
+ A relative or absolute path to the file or 0 if the file could not be
+ located.
+
+ @ingroup shacccg
+*/
+typedef const char* (*SceShaccCgCallbackLocateFile)(
+ const SceChar8 *fileName,
+ const SceShaccCgSourceLocation *includedFrom,
+ SceUInt32 searchPathCount,
+ const SceChar8 *const*searchPaths,
+ const SceShaccCgCompileOptions *compileOptions,
+ ScePVoid userData,
+ const SceChar8 **errorString);
+
+/** @brief A callback used to retrieve the absolute path name for a given file.
+
+ Files are uniquely identified by absolute paths. If two include files lead
+ to the same absolute path, the previously found file is used and no call
+ to SceShaccCgCallbackOpenFile will be made. This function allows for a
+ translation from a relative path scheme to an absolute path scheme.
+
+ If there is no valid absolute path for the given file, 0 should be returned.
+ If a non-zero string is returned, the caller takes ownership and will release
+ the allocation via the SceShaccCgCallbackReleaseFileName callback.
+ This string will be the name passed to SceShaccCgCallbackOpenFile.
+
+ @param[in] fileName
+ The (possibly relative) file path for an include file, as provided
+ by SceShaccCgCallbackLocateFile.
+
+ @param[in] includedFrom
+ The location of the include directive.
+
+ @param[in] compileOptions
+ The original options pointer used to invoke this compile.
+
+ @param[in] userData
+ Opaque pointer to user data.
+
+ @return
+ The absolute file path or 0 if the file could not be located.
+
+ @ingroup shacccg
+*/
+typedef const char* (*SceShaccCgCallbackAbsolutePath)(
+ const SceChar8 *fileName,
+ const SceShaccCgSourceLocation *includedFrom,
+ const SceShaccCgCompileOptions *compileOptions,
+ ScePVoid userData);
+
+/** @brief A callback for the compiler to release a file name.
+
+ This function is used to release memory that was previously allocated as
+ part of a call to SceShaccCgCallbackLocateFile or
+ SceShaccCgCallbackAbsolutePath.
+
+ @param[in] fileName
+ The file name string to be destroyed.
+
+ @param[in] compileOptions
+ The original options pointer used to invoke this compile.
+
+ @param[in] userData
+ Opaque pointer to user data.
+
+ @ingroup shacccg
+*/
+typedef void (*SceShaccCgCallbackReleaseFileName)(
+ const SceChar8 *fileName,
+ const SceShaccCgCompileOptions *compileOptions,
+ ScePVoid userData);
+
+/** @brief Provides date information for the named file.
+
+ If the date attributes could not be read, 0 is returned and the results
+ will be considered invalid.
+ On success, timeLastStatusChange and timeLastModified will have been
+ updated and a non-zero value is returned.
+ The time values are encoded as time_t.
+
+ @param[in] file
+ A file object returned from SceShaccCgCallbackOpenFile.
+
+ @param[in] includedFrom
+ The location of the include directive.
+
+ @param[in] compileOptions
+ The original options pointer used to invoke this compile.
+
+ @param[in] userData
+ Opaque pointer to user data.
+
+ @param[out] timeLastStatusChange
+ A pointer to the time of last status change (i.e. creationTime).
+
+ @param[out] timeLastModified
+ A pointer to the time of last modification.
+
+ @return
+ Non-zero for success, 0 on failure.
+
+ @ingroup shacccg
+*/
+typedef SceInt32 (*SceShaccCgCallbackFileDate)(
+ const SceShaccCgSourceFile *file,
+ const SceShaccCgSourceLocation *includedFrom,
+ const SceShaccCgCompileOptions *compileOptions,
+ ScePVoid userData,
+ SceInt64 *timeLastStatusChange, ///< using time_t
+ SceInt64 *timeLastModified); ///< using time_t
+
+/** @brief A callback used when the compiler needs to allocate memory.
+
+ This function is used to allocate memory. Memory must be 8 bytes aligned.
+
+ @param[in] memSize
+ Memory size.
+
+ @ingroup shacccg
+*/
+typedef ScePVoid (*SceShaccCgMemAllocator)(
+ SceSize memSize);
+
+/** @brief A callback used when the compiler needs to free memory.
+
+ This function is used to free memory.
+
+ @param[in] memPtr
+ Pointer to a memory block previously allocated with SceShaccCgMemAllocator
+
+ @ingroup shacccg
+*/
+typedef SceVoid (*SceShaccCgMemFree)(
+ ScePVoid ptr);
+
+///////////////////////////////////////////////////////////////////////////////
+// Constants
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief Classifies the severity of a diagnostic
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgDiagnosticLevel {
+ SCE_SHACCCG_DIAGNOSTIC_LEVEL_INFO, ///< Informational message
+ SCE_SHACCCG_DIAGNOSTIC_LEVEL_WARNING, ///< Warning
+ SCE_SHACCCG_DIAGNOSTIC_LEVEL_ERROR ///< Error
+} SceShaccCgDiagnosticLevel;
+
+/** @brief Classifies the target profiles
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgTargetProfile {
+ SCE_SHACCCG_PROFILE_VP, ///< vertex program
+ SCE_SHACCCG_PROFILE_FP ///< fragment program
+} SceShaccCgTargetProfile;
+
+/** @brief Classifies default callbacks
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgCallbackDefaults {
+ SCE_SHACCCG_SYSTEM_FILES, ///< Default callback functions for using system files and paths.
+ SCE_SHACCCG_TRIVIAL ///< Default callback functions for using only the "openFile" callback.
+} SceShaccCgCallbackDefaults;
+
+/** @brief Classifies language
+
+ @ingroup shacccg
+*/
+typedef enum SceShaccCgLocale {
+ SCE_SHACCCG_ENGLISH, ///< English language setting.
+ SCE_SHACCCG_JAPANESE ///< Japanese language setting.
+} SceShaccCgLocale;
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Structs
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief Describes a source file
+
+ @note If the source file is referenced only through a #line directive,
+ the compiler will generate a SceShaccCgSourceFile object with a
+ NULL 'text' field and a 'size' field of 0.
+ @ingroup shacccg
+*/
+typedef struct SceShaccCgSourceFile {
+ const SceChar8 *fileName; ///< The relative or absolute name of the file.
+ const SceChar8 *text; ///< The contents of the source file.
+ SceUInt32 size; ///< The size of the 'text' array in bytes.
+} SceShaccCgSourceFile;
+
+
+/** @brief Describes a location in the source code.
+
+ @ingroup shacccg
+*/
+typedef struct SceShaccCgSourceLocation {
+ const SceShaccCgSourceFile *file; ///< The file containing the location.
+ SceUInt32 lineNumber; ///< The line number of the location.
+ SceUInt32 columnNumber; ///< The column number of the location.
+} SceShaccCgSourceLocation;
+
+/** @brief Describes the input data for a compilation job.
+
+ @ingroup shacccg
+*/
+typedef struct SceShaccCgCompileOptions {
+ const SceChar8 *mainSourceFile; ///< The main Cg source file to compile. 0
+ SceShaccCgTargetProfile targetProfile; ///< The target profile. 4
+ const SceChar8 *entryFunctionName; ///< The name of the entry function. Usually "main". 8
+ SceUInt32 searchPathCount; ///< The number of search paths for include files. c
+ const SceChar8* const *searchPaths; ///< The search paths for include files. 10
+ SceUInt32 macroDefinitionCount; ///< The number of macro definitions provided. 14
+ const SceChar8* const *macroDefinitions; ///< The macro definitions in the form: MACRONAME or MACRONAME=VALUE 18
+ SceUInt32 includeFileCount; ///< The number of files to force include. 1c
+ const SceChar8* const *includeFiles; ///< The files to include before the main source file. 20
+ SceUInt32 suppressedWarningsCount; ///< The number of warnings to suppressed. 24
+ const SceUInt32 *suppressedWarnings; ///< The id numbers of the warnings to be suppressed. 28
+
+ SceShaccCgLocale locale; ///< The language to use in diagnostics. 2c
+
+ SceInt32 useFx; ///< Equivalent to -fx if non-zero, -nofx otherwise. 30
+ SceInt32 noStdlib; ///< Equivalent to -nostdlib if non-zero. 34
+
+ SceInt32 optimizationLevel; ///< Equivalent to -O?. Valid range is 0-4. 38
+ SceInt32 useFastmath; ///< Equivalent to -fastmath if non-zero. 3c
+ SceInt32 useFastprecision; ///< Equivalent to -fastprecision if non-zero. 40
+ SceInt32 useFastint; ///< Equivalent to -fastint if non-zero. 44
+ SceInt32 positionInvariant; ///< Equivalent to -invpos if non-zero. 48
+
+ SceInt32 warningsAsErrors; ///< Equivalent to -Werror if non-zero. 4c
+ SceInt32 performanceWarnings; ///< Equivalent to -Wperf if non-zero. 50
+ SceInt32 warningLevel; ///< Equivalent to -W?. Valid range is 0-4. 54
+ SceInt32 pedantic; ///< Equivalent to -pedantic if non-zero. 58
+ SceInt32 pedanticError; ///< Equivalent to -pedantic-error if non-zero. 5c
+ SceInt32 xmlCache; ///< Equivalent to -xmlcache if non-zero. 60
+ SceInt32 stripSymbols; ///< When set to non zero compilation will produce a stripped gxp file 64
+} SceCgcCompileOptions;
+
+/** @brief Lists the user defined callbacks for compiler operations.
+
+ The SceShaccCgCallbackList structure is used in each of
+ sceShaccCgCompileProgram, SceShaccCgPreprocessProgram and
+ sceShaccCgGenerateDependencies in the same fashion.
+ In order to initialize instances of this structure, please always use
+ sceShaccCgInitializeCallbackList.
+
+ For details regarding the individual callbacks, please refer to their
+ respective documentations.
+
+ @ingroup shacccg
+*/
+typedef struct SceShaccCgCallbackList {
+ SceShaccCgCallbackOpenFile openFile; ///< The callback used to open a file.
+ SceShaccCgCallbackReleaseFile releaseFile; ///< The callback used to release an opened file (optional).
+ SceShaccCgCallbackLocateFile locateFile; ///< The callback used to indicate a file exists (optional).
+ SceShaccCgCallbackAbsolutePath absolutePath; ///< The callback used to indicate the absolute path of a file (optional).
+ SceShaccCgCallbackReleaseFileName releaseFileName; ///< The callback used to release an absolute path string (optional).
+ SceShaccCgCallbackFileDate fileDate; ///< The callback used to indicate file modification date (optional).
+} SceShaccCgCallbackList;
+
+/** @brief Describes a single compiler diagnostic.
+
+ @ingroup shacccg
+*/
+typedef struct SceShaccCgDiagnosticMessage {
+ SceShaccCgDiagnosticLevel level; ///< The severity of the diagnostic.
+ SceUInt32 code; ///< A unique code for each kind of diagnostic.
+ const SceShaccCgSourceLocation *location; ///< The location for which the diagnostic is reported (optional).
+ const SceChar8 *message; ///< The diagnostic message.
+} SceShaccCgDiagnosticMessage;
+
+
+///////////////////////////////////////////////////////////////////////////////
+// Functions for initializing common types
+///////////////////////////////////////////////////////////////////////////////
+
+/** @brief Initializes the compile options with the default values.
+
+ The following fields must be initialized by the user:
+ - mainSourceFile
+ - targetProfile
+
+ All other fields may be left in the state set by this function.
+
+ @param[out] options
+ The option structure that should be initialized.
+
+ @ingroup shacccg
+*/
+SceVoid sceShaccCgInitializeCompileOptions(
+ SceShaccCgCompileOptions *options);
+
+/** @brief Initializes the callback list with the default values.
+
+ There are two kinds of defaults available:
+ - SCE_SHACCCG_SYSTEM_FILES uses the native file system of the operating
+ system in the same manner as the command-line version of shacccg.
+ This is the default behavior if no callback structure is provided for
+ a compilation/pre-processing/dependency job.
+ - SCE_SHACCCG_TRIVIAL provides placeholder implementations of all callbacks
+ but 'openFile'. The latter must always be provided by the user.
+
+ In the trivial case, the following defaults will be used:
+ - releaseFile: Does nothing.
+ - locateFile: Returns the same path it was called with.
+ - absolutePath: Returns the same path it was called with.
+ - releaseFileName: Does nothing.
+ - fileDate: Returns the current time.
+
+ @param[in] callbacks
+ The callbacks structure to be initialized.
+
+ @param[in] defaults
+ Indicates which set of default callbacks to initialize from.
+
+ @ingroup shacccg
+*/
+SceVoid sceShaccCgInitializeCallbackList(
+ SceShaccCgCallbackList *callbacks,
+ SceShaccCgCallbackDefaults defaults);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _DOLCESDK_PSP2_SHACCCG_TYPES_H_ */