mirror of https://github.com/red-prig/fpPS4.git
Fix buffer align
This commit is contained in:
parent
2bf7df0116
commit
07d736c7bc
|
@ -715,9 +715,19 @@ begin
|
|||
srcb:=FetchHostBuffer(Self,src,byteCount,ord(VK_BUFFER_USAGE_TRANSFER_SRC_BIT));
|
||||
Assert(srcb<>nil);
|
||||
|
||||
if (srcb.Foffset+byteCount>srcb.FSize) then
|
||||
begin
|
||||
Assert(False,'FetchHostBuffer:Insufficient buffer size!');
|
||||
end;
|
||||
|
||||
dstb:=FetchHostBuffer(Self,dst,byteCount,ord(VK_BUFFER_USAGE_TRANSFER_DST_BIT));
|
||||
Assert(dstb<>nil);
|
||||
|
||||
if (dstb.Foffset+byteCount>dstb.FSize) then
|
||||
begin
|
||||
Assert(False,'FetchHostBuffer:Insufficient buffer size!');
|
||||
end;
|
||||
|
||||
Inc(cmd_count);
|
||||
|
||||
vkBufferMemoryBarrier(cmdbuf,
|
||||
|
|
|
@ -102,14 +102,12 @@ end;
|
|||
function _fix_buf_size(sparce:Boolean;var Addr:Pointer;var Size:TVkDeviceSize;usage:TVkFlags):TVkDeviceSize;
|
||||
var
|
||||
mr:TVkMemoryRequirements;
|
||||
pAlign:Pointer;
|
||||
begin
|
||||
mr:=GetRequirements(sparce,Size,usage,@buf_ext);
|
||||
|
||||
pAlign:=AlignDw(Addr,mr.alignment);
|
||||
Result:=(Addr-pAlign);
|
||||
Result:=(ptruint(Addr) mod mr.alignment);
|
||||
|
||||
Addr:=pAlign;
|
||||
Addr:=Pointer(ptruint(Addr)-Result);
|
||||
Size:=Size+Result;
|
||||
end;
|
||||
|
||||
|
@ -234,11 +232,11 @@ begin
|
|||
|
||||
FHostBufferSet.Lock_wr;
|
||||
|
||||
t:=_Find(Addr);
|
||||
t:=_Find(Addr); //find by key
|
||||
|
||||
if (t<>nil) then
|
||||
begin
|
||||
if (t.FSize<Size) or
|
||||
if (t.FSize<(t.Foffset+Size)) or
|
||||
((t.FUsage and usage)<>usage) then
|
||||
begin
|
||||
usage:=usage or t.FUsage;
|
||||
|
@ -268,7 +266,7 @@ begin
|
|||
Assert(false,'_is_sparce');
|
||||
end;
|
||||
|
||||
t.FAddr:=addr;
|
||||
t.FAddr:=addr; //save key
|
||||
|
||||
FHostBufferSet.Insert(@t.FAddr);
|
||||
t.Acquire(nil);
|
||||
|
|
Loading…
Reference in New Issue