@@ -45,6 +45,10 @@ Maryland 20850 USA.
4545#include " client/client.h" // For bot debug draw
4646#endif
4747
48+ #if USE_VULKAN
49+ #include " ../renderer-vulkan/DispatchRawData.h"
50+ #endif
51+
4852// Suppress warnings for unused [this] lambda captures.
4953#ifdef __clang__
5054#pragma clang diagnostic ignored "-Wunused-lambda-capture"
@@ -323,6 +327,31 @@ void SV_InitGameProgs()
323327 SV_InitGameVM ();
324328}
325329
330+ static void DispatchRawData ( const std::string& data ) {
331+ #if USE_VULKAN
332+ DispatchRawData ( data.data () );
333+ #else
334+ Q_UNUSED ( data );
335+ #endif
336+ }
337+
338+ static std::string DispatchRawDataSync ( const std::string& data ) {
339+ #if USE_VULKAN
340+ void * outMem;
341+ int size;
342+
343+ DispatchRawDataSync ( data.data (), &outMem, &size );
344+
345+ out.resize ( size );
346+ std::string out { ( const char * ) outMem, size };
347+
348+ return out;
349+ #else
350+ Q_UNUSED ( data );
351+ return " " ;
352+ #endif
353+ }
354+
326355GameVM::GameVM (): VM::VMBase(" sgame" , Cvar::NONE), services(nullptr ) {
327356}
328357
@@ -594,6 +623,18 @@ void GameVM::QVMSyscall(int syscallNum, Util::Reader& reader, IPC::Channel& chan
594623 });
595624 break ;
596625
626+ case DISPATCH_RAWDATA:
627+ IPC::HandleMsg<DispatchRawDataMsg>( channel, std::move ( reader ), [this ] ( const std::string& data ) {
628+ DispatchRawData ( data );
629+ } );
630+ break ;
631+
632+ case DISPATCH_RAWDATASYNC:
633+ IPC::HandleMsg<DispatchRawDataSyncMsg>( channel, std::move ( reader ), [this ]( const std::string& data, std::string& out ) {
634+ out = DispatchRawDataSync ( data );
635+ } );
636+ break ;
637+
597638 default :
598639 Sys::Drop (" Bad game system trap: %d" , syscallNum);
599640 }
0 commit comments