From 247e2d7d0b6822c7b3da19549bde0aece201805e Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Mon, 14 Mar 2022 17:36:21 +0000 Subject: [PATCH] Use bytebuf to serialise default library data --- renderdoc/driver/metal/metal_device.cpp | 13 +++---------- renderdoc/driver/metal/metal_helpers_bridge.h | 2 +- renderdoc/driver/metal/metal_helpers_bridge.mm | 7 +++---- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/renderdoc/driver/metal/metal_device.cpp b/renderdoc/driver/metal/metal_device.cpp index 41a44cb46..4b7fcb485 100644 --- a/renderdoc/driver/metal/metal_device.cpp +++ b/renderdoc/driver/metal/metal_device.cpp @@ -50,21 +50,14 @@ WrappedMTLDevice *WrappedMTLDevice::MTLCreateSystemDefaultDevice(MTL::Device *re template bool WrappedMTLDevice::Serialise_newDefaultLibrary(SerialiserType &ser, WrappedMTLLibrary *library) { - void *pData; - uint32_t bytesCount; + bytebuf buffer; if(ser.IsWriting()) { - ObjC::Get_defaultLibraryData(pData, bytesCount); + ObjC::Get_defaultLibraryData(buffer); } SERIALISE_ELEMENT_LOCAL(Library, GetResID(library)).TypedAs("MTLLibrary"_lit); - SERIALISE_ELEMENT(bytesCount); - SERIALISE_ELEMENT_ARRAY(pData, bytesCount); - - if(ser.IsWriting()) - { - free(pData); - } + SERIALISE_ELEMENT(buffer); SERIALISE_CHECK_READ_ERRORS(); diff --git a/renderdoc/driver/metal/metal_helpers_bridge.h b/renderdoc/driver/metal/metal_helpers_bridge.h index 3d8c5bea1..2c73859c0 100644 --- a/renderdoc/driver/metal/metal_helpers_bridge.h +++ b/renderdoc/driver/metal/metal_helpers_bridge.h @@ -28,5 +28,5 @@ namespace ObjC { -void Get_defaultLibraryData(void *&pData, uint32_t &bytesCount); +void Get_defaultLibraryData(bytebuf &buffer); }; diff --git a/renderdoc/driver/metal/metal_helpers_bridge.mm b/renderdoc/driver/metal/metal_helpers_bridge.mm index d364d6650..2c46e6550 100644 --- a/renderdoc/driver/metal/metal_helpers_bridge.mm +++ b/renderdoc/driver/metal/metal_helpers_bridge.mm @@ -26,7 +26,7 @@ #import #import -void ObjC::Get_defaultLibraryData(void *&pData, uint32_t &bytesCount) +void ObjC::Get_defaultLibraryData(bytebuf &buffer) { NSBundle *mainAppBundle = [NSBundle mainBundle]; NSString *defaultLibaryPath = [mainAppBundle pathForResource:@"default" ofType:@"metallib"]; @@ -34,8 +34,7 @@ void ObjC::Get_defaultLibraryData(void *&pData, uint32_t &bytesCount) dispatch_data_t data = dispatch_data_create( myData.bytes, myData.length, dispatch_get_main_queue(), DISPATCH_DATA_DESTRUCTOR_DEFAULT); NSData *nsData = (NSData *)data; - pData = malloc(nsData.length); - memcpy(pData, nsData.bytes, nsData.length); - bytesCount = (uint32_t)nsData.length; + buffer.resize(nsData.length); + memcpy(buffer.data(), nsData.bytes, buffer.size()); dispatch_release(data); }