mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-21 21:26:12 +00:00
Store resource record length field as uint64_t instead of int32_t
This commit is contained in:
@@ -70,7 +70,7 @@ void ResourceRecord::Delete(ResourceRecordHandler *mgr)
|
||||
(*it)->Delete(mgr);
|
||||
|
||||
Parents.clear();
|
||||
Length = -1;
|
||||
Length = 0;
|
||||
DataPtr = NULL;
|
||||
|
||||
for(auto it=m_FrameRefs.begin(); it != m_FrameRefs.end(); ++it)
|
||||
|
||||
@@ -89,7 +89,7 @@ struct ResourceRecord
|
||||
ResourceRecord(ResourceId id, bool lock)
|
||||
: RefCount(1), ResID(id), UpdateCount(0),
|
||||
DataInSerialiser(false), DataPtr(NULL), DataOffset(0),
|
||||
Length(-1), DataWritten(false), SpecialResource(false)
|
||||
Length(0), DataWritten(false), SpecialResource(false)
|
||||
{
|
||||
m_ChunkLock = NULL;
|
||||
|
||||
@@ -259,7 +259,7 @@ struct ResourceRecord
|
||||
ids.insert(it->first);
|
||||
}
|
||||
|
||||
int32_t Length;
|
||||
uint64_t Length;
|
||||
|
||||
int UpdateCount;
|
||||
bool DataInSerialiser;
|
||||
|
||||
@@ -169,7 +169,8 @@ bool WrappedID3D11DeviceContext::Serialise_UpdateSubresource1(ID3D11Resource *pD
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, ResourceBufLen, record->Length);
|
||||
// fine to truncate the length, D3D11 resource sizes are uint32s
|
||||
SERIALISE_ELEMENT(uint32_t, ResourceBufLen, (uint32_t)record->Length);
|
||||
|
||||
byte *padding = m_State >= WRITING ? new byte[ResourceBufLen] : NULL;
|
||||
|
||||
|
||||
@@ -4928,7 +4928,7 @@ void WrappedID3D11DeviceContext::CopySubresourceRegion( ID3D11Resource *pDstReso
|
||||
|
||||
to += DstX;
|
||||
|
||||
size_t length = srcRecord->Length;
|
||||
size_t length = (size_t)srcRecord->Length;
|
||||
|
||||
if(pSrcBox)
|
||||
{
|
||||
@@ -5056,7 +5056,7 @@ void WrappedID3D11DeviceContext::CopyResource(ID3D11Resource *pDstResource, ID3D
|
||||
byte *from = srcRecord->GetDataPtr();
|
||||
byte *to = record->GetDataPtr();
|
||||
|
||||
memcpy(to, from, record->Length);
|
||||
memcpy(to, from, (size_t)record->Length);
|
||||
}
|
||||
else if(
|
||||
(WrappedID3D11Texture1D::IsAlloc(pDstResource) && WrappedID3D11Texture1D::IsAlloc(pSrcResource)) ||
|
||||
@@ -5108,7 +5108,7 @@ void WrappedID3D11DeviceContext::CopyResource(ID3D11Resource *pDstResource, ID3D
|
||||
byte *from = srcRecord->SubResources[i]->GetDataPtr();
|
||||
byte *to = record->SubResources[i]->GetDataPtr();
|
||||
|
||||
memcpy(to, from, record->SubResources[i]->Length);
|
||||
memcpy(to, from, (size_t)record->SubResources[i]->Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5158,7 +5158,7 @@ void WrappedID3D11DeviceContext::UpdateSubresource(ID3D11Resource *pDstResource,
|
||||
RDCASSERT(record->NumSubResources == 0);
|
||||
|
||||
size_t offs = 0;
|
||||
size_t length = record->Length;
|
||||
size_t length = (size_t)record->Length;
|
||||
if(pDstBox)
|
||||
{
|
||||
offs += pDstBox->left;
|
||||
@@ -5293,7 +5293,7 @@ void WrappedID3D11DeviceContext::UpdateSubresource(ID3D11Resource *pDstResource,
|
||||
)
|
||||
)
|
||||
{
|
||||
memcpy(ptr, pSrcData, record->SubResources[DstSubresource]->Length);
|
||||
memcpy(ptr, pSrcData, (size_t)record->SubResources[DstSubresource]->Length);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -6590,7 +6590,7 @@ bool WrappedID3D11DeviceContext::Serialise_Map(ID3D11Resource *pResource, UINT S
|
||||
|
||||
MapIntercept intercept;
|
||||
|
||||
size_t mapLength = record->Length;
|
||||
size_t mapLength = (size_t)record->Length;
|
||||
|
||||
if(m_State == WRITING_CAPFRAME || (record && !record->DataInSerialiser))
|
||||
{
|
||||
@@ -6696,7 +6696,7 @@ bool WrappedID3D11DeviceContext::Serialise_Map(ID3D11Resource *pResource, UINT S
|
||||
{
|
||||
RDCASSERT(record->DataInSerialiser);
|
||||
|
||||
mapLength = record->Length;
|
||||
mapLength = (size_t)record->Length;
|
||||
|
||||
intercept = MapIntercept();
|
||||
intercept.verifyWrite = (RenderDoc::Inst().GetCaptureOptions().VerifyMapWrites != 0);
|
||||
@@ -6922,7 +6922,7 @@ bool WrappedID3D11DeviceContext::Serialise_Unmap(ID3D11Resource *pResource, UINT
|
||||
|
||||
if(m_State < WRITING || m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
size_t len = record ? record->Length : 0;
|
||||
size_t len = record ? (size_t)record->Length : 0;
|
||||
|
||||
byte *appWritePtr = NULL;
|
||||
|
||||
@@ -7049,7 +7049,7 @@ bool WrappedID3D11DeviceContext::Serialise_Unmap(ID3D11Resource *pResource, UINT
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
size_t len = record->Length;
|
||||
size_t len = (size_t)record->Length;
|
||||
|
||||
intercept.CopyToD3D();
|
||||
|
||||
|
||||
@@ -1157,7 +1157,7 @@ bool WrappedID3D11Device::Prepare_InitialState(ID3D11DeviceChild *res)
|
||||
|
||||
D3D11_BUFFER_DESC desc;
|
||||
desc.BindFlags = 0;
|
||||
desc.ByteWidth = record->Length;
|
||||
desc.ByteWidth = (UINT)record->Length;
|
||||
desc.MiscFlags = 0;
|
||||
desc.StructureByteStride = 0;
|
||||
desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
|
||||
@@ -1429,7 +1429,7 @@ bool WrappedID3D11Device::Serialise_InitialState(ID3D11DeviceChild *res)
|
||||
|
||||
D3D11_BUFFER_DESC desc;
|
||||
desc.BindFlags = 0;
|
||||
desc.ByteWidth = record->Length;
|
||||
desc.ByteWidth = (UINT)record->Length;
|
||||
desc.MiscFlags = 0;
|
||||
desc.StructureByteStride = 0;
|
||||
|
||||
|
||||
@@ -475,7 +475,7 @@ void WrappedOpenGL::glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const v
|
||||
RDCASSERT(record);
|
||||
|
||||
// detect buffer orphaning and just update backing store
|
||||
if(m_State == WRITING_IDLE && record->HasDataPtr() && size == record->Length && usage == record->usage)
|
||||
if(m_State == WRITING_IDLE && record->HasDataPtr() && size == (GLsizeiptr)record->Length && usage == record->usage)
|
||||
{
|
||||
if(data)
|
||||
memcpy(record->GetDataPtr(), data, (size_t)size);
|
||||
@@ -492,7 +492,7 @@ void WrappedOpenGL::glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const v
|
||||
// data, but we don't support (if it's even possible) querying out size etc.
|
||||
// we need to add only the chunks required - glGenBuffers, glBindBuffer to current target,
|
||||
// and this buffer storage. All other chunks have no effect
|
||||
if(m_State == WRITING_IDLE && (record->HasDataPtr() || (record->Length > 0 && size != record->Length)))
|
||||
if(m_State == WRITING_IDLE && (record->HasDataPtr() || (record->Length > 0 && size != (GLsizeiptr)record->Length)))
|
||||
{
|
||||
// we need to maintain chunk ordering, so fetch the first two chunk IDs.
|
||||
// We should have at least two by this point - glGenBuffers and whatever gave the record
|
||||
@@ -601,7 +601,7 @@ void WrappedOpenGL::glBufferData(GLenum target, GLsizeiptr size, const void *dat
|
||||
RDCASSERT(record);
|
||||
|
||||
// detect buffer orphaning and just update backing store
|
||||
if(m_State == WRITING_IDLE && record->HasDataPtr() && size == record->Length && usage == record->usage)
|
||||
if(m_State == WRITING_IDLE && record->HasDataPtr() && size == (GLsizeiptr)record->Length && usage == record->usage)
|
||||
{
|
||||
if(data)
|
||||
memcpy(record->GetDataPtr(), data, (size_t)size);
|
||||
@@ -620,7 +620,7 @@ void WrappedOpenGL::glBufferData(GLenum target, GLsizeiptr size, const void *dat
|
||||
// data, but we don't support (if it's even possible) querying out size etc.
|
||||
// we need to add only the chunks required - glGenBuffers, glBindBuffer to current target,
|
||||
// and this buffer storage. All other chunks have no effect
|
||||
if(m_State == WRITING_IDLE && (record->HasDataPtr() || (record->Length > 0 && size != record->Length)))
|
||||
if(m_State == WRITING_IDLE && (record->HasDataPtr() || (record->Length > 0 && size != (GLsizeiptr)record->Length)))
|
||||
{
|
||||
// we need to maintain chunk ordering, so fetch the first two chunk IDs.
|
||||
// We should have at least two by this point - glGenBuffers and whatever gave the record
|
||||
@@ -689,7 +689,7 @@ void WrappedOpenGL::glBufferData(GLenum target, GLsizeiptr size, const void *dat
|
||||
{
|
||||
record->AddChunk(chunk);
|
||||
record->SetDataPtr(chunk->GetData());
|
||||
record->Length = (int32_t)size;
|
||||
record->Length = size;
|
||||
record->usage = usage;
|
||||
record->DataInSerialiser = true;
|
||||
}
|
||||
@@ -1845,7 +1845,7 @@ void *WrappedOpenGL::glMapNamedBufferEXT(GLuint buffer, GLenum access)
|
||||
if(access == eGL_READ_ONLY) accessBits = eGL_MAP_READ_BIT;
|
||||
else if(access == eGL_WRITE_ONLY) accessBits = eGL_MAP_WRITE_BIT;
|
||||
else if(access == eGL_READ_WRITE) accessBits = eGL_MAP_READ_BIT|eGL_MAP_WRITE_BIT;
|
||||
return glMapNamedBufferRangeEXT(record->Resource.name, 0, record->Length, accessBits);
|
||||
return glMapNamedBufferRangeEXT(record->Resource.name, 0, (GLsizeiptr)record->Length, accessBits);
|
||||
}
|
||||
|
||||
RDCERR("glMapNamedBufferEXT: Couldn't get resource record for buffer %x!", buffer);
|
||||
@@ -1870,7 +1870,7 @@ void *WrappedOpenGL::glMapBuffer(GLenum target, GLenum access)
|
||||
if(access == eGL_READ_ONLY) accessBits = eGL_MAP_READ_BIT;
|
||||
else if(access == eGL_WRITE_ONLY) accessBits = eGL_MAP_WRITE_BIT;
|
||||
else if(access == eGL_READ_WRITE) accessBits = eGL_MAP_READ_BIT|eGL_MAP_WRITE_BIT;
|
||||
return glMapNamedBufferRangeEXT(record->Resource.name, 0, record->Length, accessBits);
|
||||
return glMapNamedBufferRangeEXT(record->Resource.name, 0, (GLsizeiptr)record->Length, accessBits);
|
||||
}
|
||||
|
||||
RDCERR("glMapBuffer: Couldn't get resource record for target %x - no buffer bound?", target);
|
||||
@@ -1903,7 +1903,7 @@ bool WrappedOpenGL::Serialise_glUnmapNamedBufferEXT(GLuint buffer)
|
||||
// if the map has a sub-range specified, trust the user to have specified
|
||||
// a minimal range, similar to glFlushMappedBufferRange, so don't find diff
|
||||
// range.
|
||||
record->Map.offset == 0 && record->Map.length == record->Length &&
|
||||
record->Map.offset == 0 && record->Map.length == (GLsizeiptr)record->Length &&
|
||||
// similarly for invalidate maps, we want to update the whole buffer
|
||||
!record->Map.invalidate)
|
||||
{
|
||||
|
||||
@@ -137,7 +137,7 @@ bool WrappedVulkan::Prepare_SparseInitialState(WrappedVkBuffer *buf)
|
||||
memDataOffs[i].memOffs = bufInfo.size;
|
||||
|
||||
// increase size
|
||||
bufInfo.size += (VkDeviceSize)GetRecord(it->first)->Length;
|
||||
bufInfo.size += GetRecord(it->first)->Length;
|
||||
}
|
||||
|
||||
info->totalSize = bufInfo.size;
|
||||
@@ -185,7 +185,7 @@ bool WrappedVulkan::Prepare_SparseInitialState(WrappedVkBuffer *buf)
|
||||
{
|
||||
VkBuffer srcBuf;
|
||||
|
||||
bufInfo.size = (VkDeviceSize)GetRecord(it->first)->Length;
|
||||
bufInfo.size = GetRecord(it->first)->Length;
|
||||
vkr = ObjDisp(d)->CreateBuffer(Unwrap(d), &bufInfo, &srcBuf);
|
||||
RDCASSERT(vkr == VK_SUCCESS);
|
||||
|
||||
@@ -308,7 +308,7 @@ bool WrappedVulkan::Prepare_SparseInitialState(WrappedVkImage *im)
|
||||
memDataOffs[i].memOffs = bufInfo.size;
|
||||
|
||||
// increase size
|
||||
bufInfo.size += (VkDeviceSize)GetRecord(it->first)->Length;
|
||||
bufInfo.size += GetRecord(it->first)->Length;
|
||||
}
|
||||
|
||||
state->totalSize = bufInfo.size;
|
||||
@@ -356,7 +356,7 @@ bool WrappedVulkan::Prepare_SparseInitialState(WrappedVkImage *im)
|
||||
{
|
||||
VkBuffer srcBuf;
|
||||
|
||||
bufInfo.size = (VkDeviceSize)GetRecord(it->first)->Length;
|
||||
bufInfo.size = GetRecord(it->first)->Length;
|
||||
vkr = ObjDisp(d)->CreateBuffer(Unwrap(d), &bufInfo, &srcBuf);
|
||||
RDCASSERT(vkr == VK_SUCCESS);
|
||||
|
||||
@@ -1068,12 +1068,12 @@ bool WrappedVulkan::Prepare_InitialState(WrappedVkRes *res)
|
||||
VkResourceRecord *record = GetResourceManager()->GetResourceRecord(id);
|
||||
VkDeviceSize dataoffs = 0;
|
||||
VkDeviceMemory datamem = ToHandle<VkDeviceMemory>(res);
|
||||
VkDeviceSize datasize = (VkDeviceSize)record->Length;
|
||||
VkDeviceSize datasize = record->Length;
|
||||
|
||||
RDCASSERT(datamem);
|
||||
|
||||
RDCASSERT(record->Length > 0);
|
||||
VkDeviceSize memsize = (VkDeviceSize)record->Length;
|
||||
VkDeviceSize memsize = record->Length;
|
||||
|
||||
VkDeviceMemory readbackmem = VK_NULL_HANDLE;
|
||||
|
||||
|
||||
@@ -233,9 +233,7 @@ VkResult WrappedVulkan::vkAllocMemory(
|
||||
|
||||
record->AddChunk(chunk);
|
||||
|
||||
// VKTODOLOW Change record->Length to at least int64_t (maybe uint64_t)
|
||||
record->Length = (int32_t)pAllocInfo->allocationSize;
|
||||
RDCASSERT(pAllocInfo->allocationSize < 0x7FFFFFFF);
|
||||
record->Length = pAllocInfo->allocationSize;
|
||||
|
||||
uint32_t memProps = m_PhysicalDeviceData.fakeMemProps->memoryTypes[pAllocInfo->memoryTypeIndex].propertyFlags;
|
||||
|
||||
@@ -319,7 +317,7 @@ VkResult WrappedVulkan::vkMapMemory(
|
||||
MemMapState &state = *memrecord->memMapState;
|
||||
|
||||
// ensure size is valid
|
||||
RDCASSERT(size == 0 || size <= (VkDeviceSize)memrecord->Length);
|
||||
RDCASSERT(size == 0 || size <= memrecord->Length);
|
||||
|
||||
state.mappedPtr = (byte *)realData;
|
||||
state.refData = NULL;
|
||||
|
||||
Reference in New Issue
Block a user