Skip to content

Metal backend的 BufferMTL有一个函数是不是实现的有问题? #20583

Open
@breakerrorchen

Description

@breakerrorchen

void BufferMTL::updateSubData(void* data, std::size_t offset, std::size_t size)
{
assert(offset + size <= _size);
updateIndex();
memcpy((uint8_t*)_mtlBuffer.contents + offset, data, size);
}

这个函数在GL的backend里面是更新局部数据,没有更新的部分保留上一次提交的数据,但是在Metal的backend里面如果 updataIndex成功后拿到一个新的buffer,但是只是修改了offset后面的一部分数据。这样如果使用,就会出现GL的Buffer和Metal的Buffer数据不一致的问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions