yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a5e6ddd00
master
1#ifndef SLANG_DECODER_H 2#define SLANG_DECODER_H 3 4#include "../../core/slang-list.h" 5#include "../util/record-format.h" 6#include "decoder-consumer.h" 7 8#include <unordered_map> 9#include <vector> 10 11namespace SlangRecord 12{ 13class SlangDecoder 14{ 15public : 16struct ParameterBlock 17 { 18const uint8_t * parameterBuffer = nullptr; 19int64_t parameterBufferSize = 0 ; 20 21const uint8_t * outputBuffer = nullptr; 22int64_t outputBufferSize = 0 ; 23 }; 24 25struct OutputObject 26{ 27ObjectID recorddObjectId ; 28}; 29 30SlangDecoder (){}; 31~ SlangDecoder (){}; 32 33void addConsumer ( IDecoderConsumer * consumer) { m_consumers. add (consumer); } 34 35bool processMethodCall ( FunctionHeader const & header, ParameterBlock const & parameterBlock); 36bool processFunctionCall ( FunctionHeader const & header, ParameterBlock const & parameterBlock); 37 38bool processIGlobalSessionMethods ( 39ApiCallId callId, 40ObjectID objectId, 41ParameterBlock const & parameterBlock); 42bool processISessionMethods ( 43ApiCallId callId, 44ObjectID objectId, 45ParameterBlock const & parameterBlock); 46bool processIModuleMethods ( 47ApiCallId callId, 48ObjectID objectId, 49ParameterBlock const & parameterBlock); 50bool processIEntryPointMethods ( 51ApiCallId callId, 52ObjectID objectId, 53ParameterBlock const & parameterBlock); 54bool processICompositeComponentTypeMethods ( 55ApiCallId callId, 56ObjectID objectId, 57ParameterBlock const & parameterBlock); 58bool processITypeConformanceMethods ( 59ApiCallId callId, 60ObjectID objectId, 61ParameterBlock const & parameterBlock); 62 63bool CreateGlobalSession ( ParameterBlock const & parameterBlock); 64bool IGlobalSession_createSession ( ObjectID objectId, ParameterBlock const & parameterBlock); 65void IGlobalSession_findProfile ( ObjectID objectId, ParameterBlock const & parameterBlock); 66void IGlobalSession_setDownstreamCompilerPath ( 67ObjectID objectId, 68ParameterBlock const & parameterBlock); 69void IGlobalSession_setDownstreamCompilerPrelude ( 70ObjectID objectId, 71ParameterBlock const & parameterBlock); 72void IGlobalSession_getDownstreamCompilerPrelude ( 73ObjectID objectId, 74ParameterBlock const & parameterBlock); 75void IGlobalSession_getBuildTagString ( ObjectID objectId, ParameterBlock const & parameterBlock); 76void IGlobalSession_setDefaultDownstreamCompiler ( 77ObjectID objectId, 78ParameterBlock const & parameterBlock); 79void IGlobalSession_getDefaultDownstreamCompiler ( 80ObjectID objectId, 81ParameterBlock const & parameterBlock); 82void IGlobalSession_setLanguagePrelude ( ObjectID objectId, ParameterBlock const & parameterBlock); 83void IGlobalSession_getLanguagePrelude ( ObjectID objectId, ParameterBlock const & parameterBlock); 84void IGlobalSession_createCompileRequest ( 85ObjectID objectId, 86ParameterBlock const & parameterBlock); 87void IGlobalSession_addBuiltins ( ObjectID objectId, ParameterBlock const & parameterBlock); 88void IGlobalSession_setSharedLibraryLoader ( 89ObjectID objectId, 90ParameterBlock const & parameterBlock); 91void IGlobalSession_getSharedLibraryLoader ( 92ObjectID objectId, 93ParameterBlock const & parameterBlock); 94void IGlobalSession_checkCompileTargetSupport ( 95ObjectID objectId, 96ParameterBlock const & parameterBlock); 97void IGlobalSession_checkPassThroughSupport ( 98ObjectID objectId, 99ParameterBlock const & parameterBlock); 100void IGlobalSession_compileCoreModule ( ObjectID objectId, ParameterBlock const & parameterBlock); 101void IGlobalSession_loadCoreModule ( ObjectID objectId, ParameterBlock const & parameterBlock); 102void IGlobalSession_saveCoreModule ( ObjectID objectId, ParameterBlock const & parameterBlock); 103void IGlobalSession_findCapability ( ObjectID objectId, ParameterBlock const & parameterBlock); 104void IGlobalSession_setDownstreamCompilerForTransition ( 105ObjectID objectId, 106ParameterBlock const & parameterBlock); 107void IGlobalSession_getDownstreamCompilerForTransition ( 108ObjectID objectId, 109ParameterBlock const & parameterBlock); 110void IGlobalSession_getCompilerElapsedTime ( 111ObjectID objectId, 112ParameterBlock const & parameterBlock); 113void IGlobalSession_setSPIRVCoreGrammar ( 114ObjectID objectId, 115ParameterBlock const & parameterBlock); 116void IGlobalSession_parseCommandLineArguments ( 117ObjectID objectId, 118ParameterBlock const & parameterBlock); 119void IGlobalSession_getSessionDescDigest ( 120ObjectID objectId, 121ParameterBlock const & parameterBlock); 122 123void ISession_getGlobalSession ( ObjectID objectId, ParameterBlock const & parameterBlock); 124void ISession_loadModule ( ObjectID objectId, ParameterBlock const & parameterBlock); 125void ISession_loadModuleFromBlob ( ObjectID objectId, ParameterBlock const & parameterBlock); 126void ISession_loadModuleFromIRBlob ( ObjectID objectId, ParameterBlock const & parameterBlock); 127void ISession_loadModuleFromSource ( ObjectID objectId, ParameterBlock const & parameterBlock); 128void ISession_loadModuleFromSourceString ( 129ObjectID objectId, 130ParameterBlock const & parameterBlock); 131void ISession_createCompositeComponentType ( 132ObjectID objectId, 133ParameterBlock const & parameterBlock); 134void ISession_specializeType ( ObjectID objectId, ParameterBlock const & parameterBlock); 135void ISession_getTypeLayout ( ObjectID objectId, ParameterBlock const & parameterBlock); 136void ISession_getContainerType ( ObjectID objectId, ParameterBlock const & parameterBlock); 137void ISession_getDynamicType ( ObjectID objectId, ParameterBlock const & parameterBlock); 138void ISession_getTypeRTTIMangledName ( ObjectID objectId, ParameterBlock const & parameterBlock); 139void ISession_getTypeConformanceWitnessMangledName ( 140ObjectID objectId, 141ParameterBlock const & parameterBlock); 142void ISession_getTypeConformanceWitnessSequentialID ( 143ObjectID objectId, 144ParameterBlock const & parameterBlock); 145void ISession_createTypeConformanceComponentType ( 146ObjectID objectId, 147ParameterBlock const & parameterBlock); 148void ISession_createCompileRequest ( ObjectID objectId, ParameterBlock const & parameterBlock); 149void ISession_getLoadedModuleCount ( ObjectID objectId, ParameterBlock const & parameterBlock); 150void ISession_getLoadedModule ( ObjectID objectId, ParameterBlock const & parameterBlock); 151void ISession_isBinaryModuleUpToDate ( ObjectID objectId, ParameterBlock const & parameterBlock); 152 153void IModule_findEntryPointByName ( ObjectID objectId, ParameterBlock const & parameterBlock); 154void IModule_getDefinedEntryPointCount ( ObjectID objectId, ParameterBlock const & parameterBlock); 155void IModule_getDefinedEntryPoint ( ObjectID objectId, ParameterBlock const & parameterBlock); 156void IModule_serialize ( ObjectID objectId, ParameterBlock const & parameterBlock); 157void IModule_writeToFile ( ObjectID objectId, ParameterBlock const & parameterBlock); 158void IModule_getName ( ObjectID objectId, ParameterBlock const & parameterBlock); 159void IModule_getFilePath ( ObjectID objectId, ParameterBlock const & parameterBlock); 160void IModule_getUniqueIdentity ( ObjectID objectId, ParameterBlock const & parameterBlock); 161void IModule_findAndCheckEntryPoint ( ObjectID objectId, ParameterBlock const & parameterBlock); 162void IModule_getSession ( ObjectID objectId, ParameterBlock const & parameterBlock); 163void IModule_getLayout ( ObjectID objectId, ParameterBlock const & parameterBlock); 164void IModule_getSpecializationParamCount ( 165ObjectID objectId, 166ParameterBlock const & parameterBlock); 167void IModule_getEntryPointCode ( ObjectID objectId, ParameterBlock const & parameterBlock); 168void IModule_getTargetCode ( ObjectID objectId, ParameterBlock const & parameterBlock); 169void IModule_getResultAsFileSystem ( ObjectID objectId, ParameterBlock const & parameterBlock); 170void IModule_getEntryPointHash ( ObjectID objectId, ParameterBlock const & parameterBlock); 171void IModule_specialize ( ObjectID objectId, ParameterBlock const & parameterBlock); 172void IModule_link ( ObjectID objectId, ParameterBlock const & parameterBlock); 173void IModule_getEntryPointHostCallable ( ObjectID objectId, ParameterBlock const & parameterBlock); 174void IModule_renameEntryPoint ( ObjectID objectId, ParameterBlock const & parameterBlock); 175void IModule_linkWithOptions ( ObjectID objectId, ParameterBlock const & parameterBlock); 176 177void IEntryPoint_getSession ( ObjectID objectId, ParameterBlock const & parameterBlock); 178void IEntryPoint_getLayout ( ObjectID objectId, ParameterBlock const & parameterBlock); 179void IEntryPoint_getSpecializationParamCount ( 180ObjectID objectId, 181ParameterBlock const & parameterBlock); 182void IEntryPoint_getEntryPointCode ( ObjectID objectId, ParameterBlock const & parameterBlock); 183void IEntryPoint_getTargetCode ( ObjectID objectId, ParameterBlock const & parameterBlock); 184void IEntryPoint_getResultAsFileSystem ( ObjectID objectId, ParameterBlock const & parameterBlock); 185void IEntryPoint_getEntryPointHash ( ObjectID objectId, ParameterBlock const & parameterBlock); 186void IEntryPoint_specialize ( ObjectID objectId, ParameterBlock const & parameterBlock); 187void IEntryPoint_link ( ObjectID objectId, ParameterBlock const & parameterBlock); 188void IEntryPoint_getEntryPointHostCallable ( 189ObjectID objectId, 190ParameterBlock const & parameterBlock); 191void IEntryPoint_renameEntryPoint ( ObjectID objectId, ParameterBlock const & parameterBlock); 192void IEntryPoint_linkWithOptions ( ObjectID objectId, ParameterBlock const & parameterBlock); 193 194void ICompositeComponentType_getSession ( 195ObjectID objectId, 196ParameterBlock const & parameterBlock); 197void ICompositeComponentType_getLayout ( ObjectID objectId, ParameterBlock const & parameterBlock); 198void ICompositeComponentType_getSpecializationParamCount ( 199ObjectID objectId, 200ParameterBlock const & parameterBlock); 201void ICompositeComponentType_getEntryPointCode ( 202ObjectID objectId, 203ParameterBlock const & parameterBlock); 204void ICompositeComponentType_getTargetCode ( 205ObjectID objectId, 206ParameterBlock const & parameterBlock); 207void ICompositeComponentType_getResultAsFileSystem ( 208ObjectID objectId, 209ParameterBlock const & parameterBlock); 210void ICompositeComponentType_getEntryPointHash ( 211ObjectID objectId, 212ParameterBlock const & parameterBlock); 213void ICompositeComponentType_specialize ( 214ObjectID objectId, 215ParameterBlock const & parameterBlock); 216void ICompositeComponentType_link ( ObjectID objectId, ParameterBlock const & parameterBlock); 217void ICompositeComponentType_getEntryPointHostCallable ( 218ObjectID objectId, 219ParameterBlock const & parameterBlock); 220void ICompositeComponentType_renameEntryPoint ( 221ObjectID objectId, 222ParameterBlock const & parameterBlock); 223void ICompositeComponentType_linkWithOptions ( 224ObjectID objectId, 225ParameterBlock const & parameterBlock); 226void ICompositeComponentType_queryInterface ( 227ObjectID objectId, 228ParameterBlock const & parameterBlock); 229 230void ITypeConformance_getSession ( ObjectID objectId, ParameterBlock const & parameterBlock); 231void ITypeConformance_getLayout ( ObjectID objectId, ParameterBlock const & parameterBlock); 232void ITypeConformance_getSpecializationParamCount ( 233ObjectID objectId, 234ParameterBlock const & parameterBlock); 235void ITypeConformance_getEntryPointCode ( 236ObjectID objectId, 237ParameterBlock const & parameterBlock); 238void ITypeConformance_getTargetCode ( ObjectID objectId, ParameterBlock const & parameterBlock); 239void ITypeConformance_getResultAsFileSystem ( 240ObjectID objectId, 241ParameterBlock const & parameterBlock); 242void ITypeConformance_getEntryPointHash ( 243ObjectID objectId, 244ParameterBlock const & parameterBlock); 245void ITypeConformance_specialize ( ObjectID objectId, ParameterBlock const & parameterBlock); 246void ITypeConformance_link ( ObjectID objectId, ParameterBlock const & parameterBlock); 247void ITypeConformance_getEntryPointHostCallable ( 248ObjectID objectId, 249ParameterBlock const & parameterBlock); 250void ITypeConformance_renameEntryPoint ( ObjectID objectId, ParameterBlock const & parameterBlock); 251void ITypeConformance_linkWithOptions ( ObjectID objectId, ParameterBlock const & parameterBlock); 252 253// IComponentType2 methods. 254void IComponentType2_getTargetCompileResult ( 255ObjectID objectId, 256ParameterBlock const & parameterBlock); 257void IComponentType2_getEntryPointCompileResult ( 258ObjectID objectId, 259ParameterBlock const & parameterBlock); 260 261private : 262Slang ::List < IDecoderConsumer *> m_consumers; 263}; 264} // namespace SlangRecord 265#endif // SLANG_DECODER_H