You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
3.2 KiB
75 lines
3.2 KiB
//============ Copyright (c) Valve Corporation, All rights reserved. ============
|
|
//
|
|
// Functionality to handle collation of shader debugging metadata
|
|
// (i.e. shader PDBs) sent from shadercompile workers to the master.
|
|
//
|
|
//===============================================================================
|
|
|
|
#pragma once
|
|
|
|
#ifndef SHADERCOMPILE_PS3_HELPERS_H
|
|
#define SHADERCOMPILE_PS3_HELPERS_H
|
|
|
|
#include "vmpi.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// The ID of the VMPI packet sent from workers to the master for each
|
|
// small PS3 shader debug metadata file generated by the Sony/Cg compiler.
|
|
//-----------------------------------------------------------------------------
|
|
#define PS3_SHADER_DEBUG_INFO_PACKETID 6
|
|
#define PS3_SHADER_COMPILE_LOG_PACKETID 11
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Structure of the packet corresponding to PS3_SHADER_DEBUG_INFO_PACKETID
|
|
//-----------------------------------------------------------------------------
|
|
struct PS3ShaderDebugInfoPacket_t
|
|
{
|
|
char m_PacketID; // This should be PS3_SHADER_DEBUG_INFO_PACKETID
|
|
int m_nFileNameLength;
|
|
int m_nFileDataLength;
|
|
// Followed by m_nFileNameLength + m_nFileDataLength bytes of data
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Handler for VMPI packet: PS3_SHADER_DEBUG_INFO_PACKETID.
|
|
// Called on the master when such a packet is received.
|
|
//-----------------------------------------------------------------------------
|
|
bool PS3ShaderDebugInfoDispatch( MessageBuffer *pBuf, int nSource, int nPacketID );
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Initializes the TOC and Pack files used to store the large amount
|
|
// of shader metadata generated by the worker machines.
|
|
// Called on the master.
|
|
//-----------------------------------------------------------------------------
|
|
void InitializePS3ShaderDebugPackFiles();
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Expand PS3 debug information that has been accumulated into giant pack
|
|
// files on the master's machine.
|
|
// These giant files expand into hundreds of thousands of tiny files
|
|
// required for shader debugging.
|
|
// Called on the master.
|
|
//-----------------------------------------------------------------------------
|
|
void ExpandPS3DebugInfo();
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Sends all files and non-empty directories to the VMPI master, one packet
|
|
// per file (see PS3_SHADER_DEBUG_INFO_PACKETID). Called by workers.
|
|
//-----------------------------------------------------------------------------
|
|
void SendSubDirectoryToMaster( const char *pStartingPath );
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Shader compile statistics log file
|
|
//-----------------------------------------------------------------------------
|
|
struct PS3ShaderCompileLogPacket_t
|
|
{
|
|
char m_PacketID; // This should be PS3_SHADER_COMPILE_LOG_PACKETID
|
|
int m_nPacketSize;
|
|
// Followed by m_nPacketSize bytes of data
|
|
};
|
|
|
|
void PS3SendShaderCompileLogContentsToMaster();
|
|
|
|
bool PS3ShaderCompileLogDispatch( MessageBuffer *pBuf, int nSource, int nPacketID );
|
|
|
|
#endif // SHADERCOMPILE_PS3_HELPERS_H
|