Counter Strike : Global Offensive Source Code
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

//============ 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