diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 400add1a9..11755a320 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -91,265 +91,526 @@ static const char *shaderNames[] = { }; // clang-format off +static const char *funcNames[] = { +"TempRegLoad", +"TempRegStore", +"MinPrecXRegLoad", +"MinPrecXRegStore", +"LoadInput", +"StoreOutput", +"FAbs", +"Saturate", +"IsNaN", +"IsInf", +"IsFinite", +"IsNormal", +"Cos", +"Sin", +"Tan", +"Acos", +"Asin", +"Atan", +"Hcos", +"Hsin", +"Htan", +"Exp", +"Frc", +"Log", +"Sqrt", +"Rsqrt", +"Round_ne", +"Round_ni", +"Round_pi", +"Round_z", +"Bfrev", +"Countbits", +"FirstbitLo", +"FirstbitHi", +"FirstbitSHi", +"FMax", +"FMin", +"IMax", +"IMin", +"UMax", +"UMin", +"IMul", +"UMul", +"UDiv", +"UAddc", +"USubb", +"FMad", +"Fma", +"IMad", +"UMad", +"Msad", +"Ibfe", +"Ubfe", +"Bfi", +"Dot2", +"Dot3", +"Dot4", +"CreateHandle", +"CBufferLoad", +"CBufferLoadLegacy", +"Sample", +"SampleBias", +"SampleLevel", +"SampleGrad", +"SampleCmp", +"SampleCmpLevelZero", +"TextureLoad", +"TextureStore", +"BufferLoad", +"BufferStore", +"BufferUpdateCounter", +"CheckAccessFullyMapped", +"GetDimensions", +"TextureGather", +"TextureGatherCmp", +"Texture2DMSGetSamplePosition", +"RenderTargetGetSamplePosition", +"RenderTargetGetSampleCount", +"AtomicBinOp", +"AtomicCompareExchange", +"Barrier", +"CalculateLOD", +"Discard", +"DerivCoarseX", +"DerivCoarseY", +"DerivFineX", +"DerivFineY", +"EvalSnapped", +"EvalSampleIndex", +"EvalCentroid", +"SampleIndex", +"Coverage", +"InnerCoverage", +"ThreadId", +"GroupId", +"ThreadIdInGroup", +"FlattenedThreadIdInGroup", +"EmitStream", +"CutStream", +"EmitThenCutStream", +"GSInstanceID", +"MakeDouble", +"SplitDouble", +"LoadOutputControlPoint", +"LoadPatchConstant", +"DomainLocation", +"StorePatchConstant", +"OutputControlPointID", +"PrimitiveID", +"CycleCounterLegacy", +"WaveIsFirstLane", +"WaveGetLaneIndex", +"WaveGetLaneCount", +"WaveAnyTrue", +"WaveAllTrue", +"WaveActiveAllEqual", +"WaveActiveBallot", +"WaveReadLaneAt", +"WaveReadLaneFirst", +"WaveActiveOp", +"WaveActiveBit", +"WavePrefixOp", +"QuadReadLaneAt", +"QuadOp", +"BitcastI16toF16", +"BitcastF16toI16", +"BitcastI32toF32", +"BitcastF32toI32", +"BitcastI64toF64", +"BitcastF64toI64", +"LegacyF32ToF16", +"LegacyF16ToF32", +"LegacyDoubleToFloat", +"LegacyDoubleToSInt32", +"LegacyDoubleToUInt32", +"WaveAllBitCount", +"WavePrefixBitCount", +"AttributeAtVertex", +"ViewID", +"RawBufferLoad", +"RawBufferStore", +"InstanceID", +"InstanceIndex", +"HitKind", +"RayFlags", +"DispatchRaysIndex", +"DispatchRaysDimensions", +"WorldRayOrigin", +"WorldRayDirection", +"ObjectRayOrigin", +"ObjectRayDirection", +"ObjectToWorld", +"WorldToObject", +"RayTMin", +"RayTCurrent", +"IgnoreHit", +"AcceptHitAndEndSearch", +"TraceRay", +"ReportHit", +"CallShader", +"CreateHandleForLib", +"PrimitiveIndex", +"Dot2AddHalf", +"Dot4AddI8Packed", +"Dot4AddU8Packed", +"WaveMatch", +"WaveMultiPrefixOp", +"WaveMultiPrefixBitCount", +"SetMeshOutputCounts", +"EmitIndices", +"GetMeshPayload", +"StoreVertexOutput", +"StorePrimitiveOutput", +"DispatchMesh", +"WriteSamplerFeedback", +"WriteSamplerFeedbackBias", +"WriteSamplerFeedbackLevel", +"WriteSamplerFeedbackGrad", +"AllocateRayQuery", +"RayQuery_TraceRayInline", +"RayQuery_Proceed", +"RayQuery_Abort", +"RayQuery_CommitNonOpaqueTriangleHit", +"RayQuery_CommitProceduralPrimitiveHit", +"RayQuery_CommittedStatus", +"RayQuery_CandidateType", +"RayQuery_CandidateObjectToWorld3x4", +"RayQuery_CandidateWorldToObject3x4", +"RayQuery_CommittedObjectToWorld3x4", +"RayQuery_CommittedWorldToObject3x4", +"RayQuery_CandidateProceduralPrimitiveNonOpaque", +"RayQuery_CandidateTriangleFrontFace", +"RayQuery_CommittedTriangleFrontFace", +"RayQuery_CandidateTriangleBarycentrics", +"RayQuery_CommittedTriangleBarycentrics", +"RayQuery_RayFlags", +"RayQuery_WorldRayOrigin", +"RayQuery_WorldRayDirection", +"RayQuery_RayTMin", +"RayQuery_CandidateTriangleRayT", +"RayQuery_CommittedRayT", +"RayQuery_CandidateInstanceIndex", +"RayQuery_CandidateInstanceID", +"RayQuery_CandidateGeometryIndex", +"RayQuery_CandidatePrimitiveIndex", +"RayQuery_CandidateObjectRayOrigin", +"RayQuery_CandidateObjectRayDirection", +"RayQuery_CommittedInstanceIndex", +"RayQuery_CommittedInstanceID", +"RayQuery_CommittedGeometryIndex", +"RayQuery_CommittedPrimitiveIndex", +"RayQuery_CommittedObjectRayOrigin", +"RayQuery_CommittedObjectRayDirection", +"GeometryIndex", +"RayQuery_CandidateInstanceContributionToHitGroupIndex", +"RayQuery_CommittedInstanceContributionToHitGroupIndex", +"AnnotateHandle", +"CreateHandleFromBinding", +"CreateHandleFromHeap", +"Unpack4x8", +"Pack4x8", +"IsHelperLane", +"QuadVote", +"TextureGatherRaw", +"SampleCmpLevel", +"TextureStoreSample", +"WaveMatrix_Annotate", +"WaveMatrix_Depth", +"WaveMatrix_Fill", +"WaveMatrix_LoadRawBuf", +"WaveMatrix_LoadGroupShared", +"WaveMatrix_StoreRawBuf", +"WaveMatrix_StoreGroupShared", +"WaveMatrix_Multiply", +"WaveMatrix_MultiplyAccumulate", +"WaveMatrix_ScalarOp", +"WaveMatrix_SumAccumulate", +"WaveMatrix_Add", +"AllocateNodeOutputRecords", +"GetNodeRecordPtr", +"IncrementOutputCount", +"OutputComplete", +"GetInputRecordCount", +"FinishedCrossGroupSharing", +"BarrierByMemoryType", +"BarrierByMemoryHandle", +"BarrierByNodeRecordHandle", +"CreateNodeOutputHandle", +"IndexNodeHandle", +"AnnotateNodeHandle", +"CreateNodeInputRecordHandle", +"AnnotateNodeRecordHandle", +"NodeOutputIsValid", +"GetRemainingRecursionLevels", +"SampleCmpGrad", +"SampleCmpBias", +"StartVertexLocation", +"StartInstanceLocation", +}; + static const char *funcSigs[] = { - "TempRegLoad(index)", - "TempRegStore(index,value)", - "MinPrecXRegLoad(regIndex,index,component)", - "MinPrecXRegStore(regIndex,index,component,value)", - "LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)", - "StoreOutput(outputSigId,rowIndex,colIndex,value)", - "FAbs(value)", - "Saturate(value)", - "IsNaN(value)", - "IsInf(value)", - "IsFinite(value)", - "IsNormal(value)", - "Cos(value)", - "Sin(value)", - "Tan(value)", - "Acos(value)", - "Asin(value)", - "Atan(value)", - "Hcos(value)", - "Hsin(value)", - "Htan(value)", - "Exp(value)", - "Frc(value)", - "Log(value)", - "Sqrt(value)", - "Rsqrt(value)", - "Round_ne(value)", - "Round_ni(value)", - "Round_pi(value)", - "Round_z(value)", - "Bfrev(value)", - "Countbits(value)", - "FirstbitLo(value)", - "FirstbitHi(value)", - "FirstbitSHi(value)", - "FMax(a,b)", - "FMin(a,b)", - "IMax(a,b)", - "IMin(a,b)", - "UMax(a,b)", - "UMin(a,b)", - "IMul(a,b)", - "UMul(a,b)", - "UDiv(a,b)", - "UAddc(a,b)", - "USubb(a,b)", - "FMad(a,b,c)", - "Fma(a,b,c)", - "IMad(a,b,c)", - "UMad(a,b,c)", - "Msad(a,b,c)", - "Ibfe(a,b,c)", - "Ubfe(a,b,c)", - "Bfi(width,offset,value,replacedValue)", - "Dot2(ax,ay,bx,by)", - "Dot3(ax,ay,az,bx,by,bz)", - "Dot4(ax,ay,az,aw,bx,by,bz,bw)", - "CreateHandle(resourceClass,rangeId,index,nonUniformIndex)", - "CBufferLoad(handle,byteOffset,alignment)", - "CBufferLoadLegacy(handle,regIndex)", - "Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)", - "SampleBias(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,bias,clamp)", - "SampleLevel(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,LOD)", - "SampleGrad(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,ddx0,ddx1,ddx2,ddy0,ddy1,ddy2,clamp)", - "SampleCmp(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,clamp)", - "SampleCmpLevelZero(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue)", - "TextureLoad(srv,mipLevelOrSampleCount,coord0,coord1,coord2,offset0,offset1,offset2)", - "TextureStore(srv,coord0,coord1,coord2,value0,value1,value2,value3,mask)", - "BufferLoad(srv,index,wot)", - "BufferStore(uav,coord0,coord1,value0,value1,value2,value3,mask)", - "BufferUpdateCounter(uav,inc)", - "CheckAccessFullyMapped(status)", - "GetDimensions(handle,mipLevel)", - "TextureGather(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,channel)", - "TextureGatherCmp(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,channel,compareValue)", - "Texture2DMSGetSamplePosition(srv,index)", - "RenderTargetGetSamplePosition(index)", - "RenderTargetGetSampleCount()", - "AtomicBinOp(handle,atomicOp,offset0,offset1,offset2,newValue)", - "AtomicCompareExchange(handle,offset0,offset1,offset2,compareValue,newValue)", - "Barrier(barrierMode)", - "CalculateLOD(handle,sampler,coord0,coord1,coord2,clamped)", - "Discard(condition)", - "DerivCoarseX(value)", - "DerivCoarseY(value)", - "DerivFineX(value)", - "DerivFineY(value)", - "EvalSnapped(inputSigId,inputRowIndex,inputColIndex,offsetX,offsetY)", - "EvalSampleIndex(inputSigId,inputRowIndex,inputColIndex,sampleIndex)", - "EvalCentroid(inputSigId,inputRowIndex,inputColIndex)", - "SampleIndex()", - "Coverage()", - "InnerCoverage()", - "ThreadId(component)", - "GroupId(component)", - "ThreadIdInGroup(component)", - "FlattenedThreadIdInGroup()", - "EmitStream(streamId)", - "CutStream(streamId)", - "EmitThenCutStream(streamId)", - "GSInstanceID()", - "MakeDouble(lo,hi)", - "SplitDouble(value)", - "LoadOutputControlPoint(inputSigId,row,col,index)", - "LoadPatchConstant(inputSigId,row,col)", - "DomainLocation(component)", - "StorePatchConstant(outputSigID,row,col,value)", - "OutputControlPointID()", - "PrimitiveID()", - "CycleCounterLegacy()", - "WaveIsFirstLane()", - "WaveGetLaneIndex()", - "WaveGetLaneCount()", - "WaveAnyTrue(cond)", - "WaveAllTrue(cond)", - "WaveActiveAllEqual(value)", - "WaveActiveBallot(cond)", - "WaveReadLaneAt(value,lane)", - "WaveReadLaneFirst(value)", - "WaveActiveOp(value,op,sop)", - "WaveActiveBit(value,op)", - "WavePrefixOp(value,op,sop)", - "QuadReadLaneAt(value,quadLane)", - "QuadOp(value,op)", - "BitcastI16toF16(value)", - "BitcastF16toI16(value)", - "BitcastI32toF32(value)", - "BitcastF32toI32(value)", - "BitcastI64toF64(value)", - "BitcastF64toI64(value)", - "LegacyF32ToF16(value)", - "LegacyF16ToF32(value)", - "LegacyDoubleToFloat(value)", - "LegacyDoubleToSInt32(value)", - "LegacyDoubleToUInt32(value)", - "WaveAllBitCount(value)", - "WavePrefixBitCount(value)", - "AttributeAtVertex(inputSigId,inputRowIndex,inputColIndex,VertexID)", - "ViewID()", - "RawBufferLoad(srv,index,elementOffset,mask,alignment)", - "RawBufferStore(uav,index,elementOffset,value0,value1,value2,value3,mask,alignment)", - "InstanceID()", - "InstanceIndex()", - "HitKind()", - "RayFlags()", - "DispatchRaysIndex(col)", - "DispatchRaysDimensions(col)", - "WorldRayOrigin(col)", - "WorldRayDirection(col)", - "ObjectRayOrigin(col)", - "ObjectRayDirection(col)", - "ObjectToWorld(row,col)", - "WorldToObject(row,col)", - "RayTMin()", - "RayTCurrent()", - "IgnoreHit()", - "AcceptHitAndEndSearch()", - "TraceRay(AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload)", - "ReportHit(THit,HitKind,Attributes)", - "CallShader(ShaderIndex,Parameter)", - "CreateHandleForLib(Resource)", - "PrimitiveIndex()", - "Dot2AddHalf(acc,ax,ay,bx,by)", - "Dot4AddI8Packed(acc,a,b)", - "Dot4AddU8Packed(acc,a,b)", - "WaveMatch(value)", - "WaveMultiPrefixOp(value,mask0,mask1,mask2,mask3,op,sop)", - "WaveMultiPrefixBitCount(value,mask0,mask1,mask2,mask3)", - "SetMeshOutputCounts(numVertices,numPrimitives)", - "EmitIndices(PrimitiveIndex,VertexIndex0,VertexIndex1,VertexIndex2)", - "GetMeshPayload()", - "StoreVertexOutput(outputSigId,rowIndex,colIndex,value,vertexIndex)", - "StorePrimitiveOutput(outputSigId,rowIndex,colIndex,value,primitiveIndex)", - "DispatchMesh(threadGroupCountX,threadGroupCountY,threadGroupCountZ,payload)", - "WriteSamplerFeedback(feedbackTex,sampledTex,sampler,c0,c1,c2,c3,clamp)", - "WriteSamplerFeedbackBias(feedbackTex,sampledTex,sampler,c0,c1,c2,c3,bias,clamp)", - "WriteSamplerFeedbackLevel(feedbackTex,sampledTex,sampler,c0,c1,c2,c3,lod)", - "WriteSamplerFeedbackGrad(feedbackTex,sampledTex,sampler,c0,c1,c2,c3,ddx0,ddx1,ddx2,ddy0,ddy1,ddy2,clamp)", - "AllocateRayQuery(constRayFlags)", - "RayQuery_TraceRayInline(rayQueryHandle,accelerationStructure,rayFlags,instanceInclusionMask,origin_X,origin_Y,origin_Z,tMin,direction_X,direction_Y,direction_Z,tMax)", - "RayQuery_Proceed(rayQueryHandle)", - "RayQuery_Abort(rayQueryHandle)", - "RayQuery_CommitNonOpaqueTriangleHit(rayQueryHandle)", - "RayQuery_CommitProceduralPrimitiveHit(rayQueryHandle,t)", - "RayQuery_CommittedStatus(rayQueryHandle)", - "RayQuery_CandidateType(rayQueryHandle)", - "RayQuery_CandidateObjectToWorld3x4(rayQueryHandle,row,col)", - "RayQuery_CandidateWorldToObject3x4(rayQueryHandle,row,col)", - "RayQuery_CommittedObjectToWorld3x4(rayQueryHandle,row,col)", - "RayQuery_CommittedWorldToObject3x4(rayQueryHandle,row,col)", - "RayQuery_CandidateProceduralPrimitiveNonOpaque(rayQueryHandle)", - "RayQuery_CandidateTriangleFrontFace(rayQueryHandle)", - "RayQuery_CommittedTriangleFrontFace(rayQueryHandle)", - "RayQuery_CandidateTriangleBarycentrics(rayQueryHandle,component)", - "RayQuery_CommittedTriangleBarycentrics(rayQueryHandle,component)", - "RayQuery_RayFlags(rayQueryHandle)", - "RayQuery_WorldRayOrigin(rayQueryHandle,component)", - "RayQuery_WorldRayDirection(rayQueryHandle,component)", - "RayQuery_RayTMin(rayQueryHandle)", - "RayQuery_CandidateTriangleRayT(rayQueryHandle)", - "RayQuery_CommittedRayT(rayQueryHandle)", - "RayQuery_CandidateInstanceIndex(rayQueryHandle)", - "RayQuery_CandidateInstanceID(rayQueryHandle)", - "RayQuery_CandidateGeometryIndex(rayQueryHandle)", - "RayQuery_CandidatePrimitiveIndex(rayQueryHandle)", - "RayQuery_CandidateObjectRayOrigin(rayQueryHandle,component)", - "RayQuery_CandidateObjectRayDirection(rayQueryHandle,component)", - "RayQuery_CommittedInstanceIndex(rayQueryHandle)", - "RayQuery_CommittedInstanceID(rayQueryHandle)", - "RayQuery_CommittedGeometryIndex(rayQueryHandle)", - "RayQuery_CommittedPrimitiveIndex(rayQueryHandle)", - "RayQuery_CommittedObjectRayOrigin(rayQueryHandle,component)", - "RayQuery_CommittedObjectRayDirection(rayQueryHandle,component)", - "GeometryIndex()", - "RayQuery_CandidateInstanceContributionToHitGroupIndex(rayQueryHandle)", - "RayQuery_CommittedInstanceContributionToHitGroupIndex(rayQueryHandle)", - "AnnotateHandle(res,props)", - "CreateHandleFromBinding(bind,index,nonUniformIndex)", - "CreateHandleFromHeap(index,samplerHeap,nonUniformIndex)", - "Unpack4x8(unpackMode,pk)", - "Pack4x8(packMode,x,y,z,w)", - "IsHelperLane()", - "QuadVote(cond,op)", - "TextureGatherRaw(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1)", - "SampleCmpLevel(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,lod)", - "TextureStoreSample(srv,coord0,coord1,coord2,value0,value1,value2,value3,mask,sampleIdx)", - "WaveMatrix_Annotate(waveMatrixPtr,waveMatProps)", - "WaveMatrix_Depth(waveMatProps)", - "WaveMatrix_Fill(waveMatrixPtr,value)", - "WaveMatrix_LoadRawBuf(waveMatrixPtr,rawBuf,offsetInBytes,strideInBytes,alignmentInBytes,colMajor)", - "WaveMatrix_LoadGroupShared(waveMatrixPtr,groupsharedPtr,startArrayIndex,strideInElements,colMajor)", - "WaveMatrix_StoreRawBuf(waveMatrixPtr,rawBuf,offsetInBytes,strideInBytes,alignmentInBytes,colMajor)", - "WaveMatrix_StoreGroupShared(waveMatrixPtr,groupsharedPtr,startArrayIndex,strideInElements,colMajor)", - "WaveMatrix_Multiply(waveMatrixAccumulator,waveMatrixLeft,waveMatrixRight)", - "WaveMatrix_MultiplyAccumulate(waveMatrixAccumulator,waveMatrixLeft,waveMatrixRight)", - "WaveMatrix_ScalarOp(waveMatrixPtr,op,value)", - "WaveMatrix_SumAccumulate(waveMatrixFragment,waveMatrixInput)", - "WaveMatrix_Add(waveMatrixAccumulator,waveMatrixAccumulatorOrFragment)", - "AllocateNodeOutputRecords(output,numRecords,perThread)", - "GetNodeRecordPtr(recordhandle,arrayIndex)", - "IncrementOutputCount(output,count,perThread)", - "OutputComplete(output)", - "GetInputRecordCount(input)", - "FinishedCrossGroupSharing(input)", - "BarrierByMemoryType(MemoryTypeFlags,SemanticFlags)", - "BarrierByMemoryHandle(object,SemanticFlags)", - "BarrierByNodeRecordHandle(object,SemanticFlags)", - "CreateNodeOutputHandle(MetadataIdx)", - "IndexNodeHandle(NodeOutputHandle,ArrayIndex)", - "AnnotateNodeHandle(node,props)", - "CreateNodeInputRecordHandle(MetadataIdx)", - "AnnotateNodeRecordHandle(noderecord,props)", - "NodeOutputIsValid(output)", - "GetRemainingRecursionLevels()", - "SampleCmpGrad(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,ddx0,ddx1,ddx2,ddy0,ddy1,ddy2,clamp)", - "SampleCmpBias(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,bias,clamp)", - "StartVertexLocation()", - "StartInstanceLocation()", +"index", +"index,value", +"regIndex,index,component", +"regIndex,index,component,value", +"inputSigId,rowIndex,colIndex,gsVertexAxis", +"outputSigId,rowIndex,colIndex,value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b", +"a,b,c", +"a,b,c", +"a,b,c", +"a,b,c", +"a,b,c", +"a,b,c", +"a,b,c", +"width,offset,value,replacedValue", +"ax,ay,bx,by", +"ax,ay,az,bx,by,bz", +"ax,ay,az,aw,bx,by,bz,bw", +"resourceClass,rangeId,index,nonUniformIndex", +"handle,byteOffset,alignment", +"handle,regIndex", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,bias,clamp", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,LOD", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,ddx0,ddx1,ddx2,ddy0,ddy1,ddy2,clamp", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,clamp", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue", +"srv,mipLevelOrSampleCount,coord0,coord1,coord2,offset0,offset1,offset2", +"srv,coord0,coord1,coord2,value0,value1,value2,value3,mask", +"srv,index,wot", +"uav,coord0,coord1,value0,value1,value2,value3,mask", +"uav,inc", +"status", +"handle,mipLevel", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,channel", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,channel,compareValue", +"srv,index", +"index", +"", +"handle,atomicOp,offset0,offset1,offset2,newValue", +"handle,offset0,offset1,offset2,compareValue,newValue", +"barrierMode", +"handle,sampler,coord0,coord1,coord2,clamped", +"condition", +"value", +"value", +"value", +"value", +"inputSigId,inputRowIndex,inputColIndex,offsetX,offsetY", +"inputSigId,inputRowIndex,inputColIndex,sampleIndex", +"inputSigId,inputRowIndex,inputColIndex", +"", +"", +"", +"component", +"component", +"component", +"", +"streamId", +"streamId", +"streamId", +"", +"lo,hi", +"value", +"inputSigId,row,col,index", +"inputSigId,row,col", +"component", +"outputSigID,row,col,value", +"", +"", +"", +"", +"", +"", +"cond", +"cond", +"value", +"cond", +"value,lane", +"value", +"value,op,sop", +"value,op", +"value,op,sop", +"value,quadLane", +"value,op", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"value", +"inputSigId,inputRowIndex,inputColIndex,VertexID", +"", +"srv,index,elementOffset,mask,alignment", +"uav,index,elementOffset,value0,value1,value2,value3,mask,alignment", +"", +"", +"", +"", +"col", +"col", +"col", +"col", +"col", +"col", +"row,col", +"row,col", +"", +"", +"", +"", +"AccelerationStructure,RayFlags,InstanceInclusionMask,RayContributionToHitGroupIndex,MultiplierForGeometryContributionToShaderIndex,MissShaderIndex,Origin_X,Origin_Y,Origin_Z,TMin,Direction_X,Direction_Y,Direction_Z,TMax,payload", +"THit,HitKind,Attributes", +"ShaderIndex,Parameter", +"Resource", +"", +"acc,ax,ay,bx,by", +"acc,a,b", +"acc,a,b", +"value", +"value,mask0,mask1,mask2,mask3,op,sop", +"value,mask0,mask1,mask2,mask3", +"numVertices,numPrimitives", +"PrimitiveIndex,VertexIndex0,VertexIndex1,VertexIndex2", +"", +"outputSigId,rowIndex,colIndex,value,vertexIndex", +"outputSigId,rowIndex,colIndex,value,primitiveIndex", +"threadGroupCountX,threadGroupCountY,threadGroupCountZ,payload", +"feedbackTex,sampledTex,sampler,c0,c1,c2,c3,clamp", +"feedbackTex,sampledTex,sampler,c0,c1,c2,c3,bias,clamp", +"feedbackTex,sampledTex,sampler,c0,c1,c2,c3,lod", +"feedbackTex,sampledTex,sampler,c0,c1,c2,c3,ddx0,ddx1,ddx2,ddy0,ddy1,ddy2,clamp", +"constRayFlags", +"rayQueryHandle,accelerationStructure,rayFlags,instanceInclusionMask,origin_X,origin_Y,origin_Z,tMin,direction_X,direction_Y,direction_Z,tMax", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle,t", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle,row,col", +"rayQueryHandle,row,col", +"rayQueryHandle,row,col", +"rayQueryHandle,row,col", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle,component", +"rayQueryHandle,component", +"rayQueryHandle", +"rayQueryHandle,component", +"rayQueryHandle,component", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle,component", +"rayQueryHandle,component", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle", +"rayQueryHandle,component", +"rayQueryHandle,component", +"", +"rayQueryHandle", +"rayQueryHandle", +"res,props", +"bind,index,nonUniformIndex", +"index,samplerHeap,nonUniformIndex", +"unpackMode,pk", +"packMode,x,y,z,w", +"", +"cond,op", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,lod", +"srv,coord0,coord1,coord2,value0,value1,value2,value3,mask,sampleIdx", +"waveMatrixPtr,waveMatProps", +"waveMatProps", +"waveMatrixPtr,value", +"waveMatrixPtr,rawBuf,offsetInBytes,strideInBytes,alignmentInBytes,colMajor", +"waveMatrixPtr,groupsharedPtr,startArrayIndex,strideInElements,colMajor", +"waveMatrixPtr,rawBuf,offsetInBytes,strideInBytes,alignmentInBytes,colMajor", +"waveMatrixPtr,groupsharedPtr,startArrayIndex,strideInElements,colMajor", +"waveMatrixAccumulator,waveMatrixLeft,waveMatrixRight", +"waveMatrixAccumulator,waveMatrixLeft,waveMatrixRight", +"waveMatrixPtr,op,value", +"waveMatrixFragment,waveMatrixInput", +"waveMatrixAccumulator,waveMatrixAccumulatorOrFragment", +"output,numRecords,perThread", +"recordhandle,arrayIndex", +"output,count,perThread", +"output", +"input", +"input", +"MemoryTypeFlags,SemanticFlags", +"object,SemanticFlags", +"object,SemanticFlags", +"MetadataIdx", +"NodeOutputHandle,ArrayIndex", +"node,props", +"MetadataIdx", +"noderecord,props", +"output", +"", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,ddx0,ddx1,ddx2,ddy0,ddy1,ddy2,clamp", +"srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,compareValue,bias,clamp", +"", +"", }; // clang-format on @@ -1600,10 +1861,13 @@ void Program::MakeDXCDisassemblyString() if(Constant *op = cast(inst.args[0])) { uint32_t opcode = op->getU32(); - if(opcode < ARRAY_COUNT(funcSigs)) + if(opcode < ARRAY_COUNT(funcNames)) { m_Disassembly += " ; "; + m_Disassembly += funcNames[opcode]; + m_Disassembly += "("; m_Disassembly += funcSigs[opcode]; + m_Disassembly += ")"; } } } @@ -1967,7 +2231,7 @@ void Program::MakeRDDisassemblyString() m_Disassembly += StringFormat::Fmt("%c%u = ", DXIL::dxilIdentifier, inst.slot); bool debugCall = false; - bool showDxFuncSig = true; + bool showDxFuncName = false; switch(inst.op) { @@ -1975,9 +2239,10 @@ void Program::MakeRDDisassemblyString() case Operation::Call: { rdcstr funcCallName = inst.getFuncCall()->name; + showDxFuncName = funcCallName.beginsWith("dx.op"); if(funcCallName.beginsWith("dx.op.loadInput")) { - showDxFuncSig = false; + showDxFuncName = false; uint32_t dxopCode = getival(inst.args[0]); RDCASSERTEQUAL(dxopCode, 4); uint32_t inputIdx = getival(inst.args[1]); @@ -1989,7 +2254,7 @@ void Program::MakeRDDisassemblyString() } else if(funcCallName.beginsWith("dx.op.storeOutput")) { - showDxFuncSig = false; + showDxFuncName = false; uint32_t dxopCode = getival(inst.args[0]); RDCASSERTEQUAL(dxopCode, 5); uint32_t outputIdx = getival(inst.args[1]); @@ -2002,8 +2267,22 @@ void Program::MakeRDDisassemblyString() } else { - m_Disassembly += "call " + inst.type->toString(); - m_Disassembly += " @" + escapeStringIfNeeded(funcCallName); + if(!showDxFuncName) + { + m_Disassembly += "call " + inst.type->toString(); + m_Disassembly += " @" + escapeStringIfNeeded(funcCallName); + } + else + { + if(Constant *op = cast(inst.args[0])) + { + uint32_t opcode = op->getU32(); + if(opcode < ARRAY_COUNT(funcNames)) + m_Disassembly += funcNames[opcode]; + else + m_Disassembly += escapeStringIfNeeded(funcCallName); + } + } m_Disassembly += "("; bool first = true; @@ -2014,7 +2293,6 @@ void Program::MakeRDDisassemblyString() { if(!first) m_Disassembly += ", "; - first = false; // see if we have param attrs for this param rdcstr attrString; @@ -2024,7 +2302,11 @@ void Program::MakeRDDisassemblyString() attrString = paramAttrs->groupSlots[argIdx]->toString(true) + " "; } - m_Disassembly += ArgToString(s, false, attrString); + if(!showDxFuncName || argIdx > 1) + { + m_Disassembly += ArgToString(s, false, attrString); + first = false; + } argIdx++; } @@ -2595,21 +2877,8 @@ void Program::MakeRDDisassemblyString() } } - if(showDxFuncSig) + if(showDxFuncName) { - if(inst.getFuncCall() && inst.getFuncCall()->name.beginsWith("dx.op.")) - { - if(Constant *op = cast(inst.args[0])) - { - uint32_t opcode = op->getU32(); - if(opcode < ARRAY_COUNT(funcSigs)) - { - m_Disassembly += " ; "; - m_Disassembly += funcSigs[opcode]; - } - } - } - if(inst.getFuncCall() && inst.getFuncCall()->name.beginsWith("dx.op.annotateHandle")) { if(const Constant *props = cast(inst.args[2]))