mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-12 14:46:08 +00:00
Make SetSubData take size in uint8_t not uint32_t.
Also change data pointer to uint8_t*. Add a test for a non-aligned SetSubData(). Implemented on all backends.
This commit is contained in:
committed by
Corentin Wallez
parent
ee66f25c4f
commit
e5ae3274a3
@@ -84,8 +84,8 @@ namespace backend {
|
||||
}
|
||||
}
|
||||
|
||||
void BufferBase::SetSubData(uint32_t start, uint32_t count, const uint32_t* data) {
|
||||
if ((start + count) * sizeof(uint32_t) > GetSize()) {
|
||||
void BufferBase::SetSubData(uint32_t start, uint32_t count, const uint8_t* data) {
|
||||
if (start + count > GetSize()) {
|
||||
mDevice->HandleError("Buffer subdata out of range");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace backend {
|
||||
|
||||
// NXT API
|
||||
BufferViewBuilder* CreateBufferViewBuilder();
|
||||
void SetSubData(uint32_t start, uint32_t count, const uint32_t* data);
|
||||
void SetSubData(uint32_t start, uint32_t count, const uint8_t* data);
|
||||
void MapReadAsync(uint32_t start,
|
||||
uint32_t size,
|
||||
nxtBufferMapReadCallback callback,
|
||||
@@ -61,7 +61,7 @@ namespace backend {
|
||||
void CallMapWriteCallback(uint32_t serial, nxtBufferMapAsyncStatus status, void* pointer);
|
||||
|
||||
private:
|
||||
virtual void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) = 0;
|
||||
virtual void SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) = 0;
|
||||
virtual void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t size) = 0;
|
||||
virtual void MapWriteAsyncImpl(uint32_t serial, uint32_t start, uint32_t size) = 0;
|
||||
virtual void UnmapImpl() = 0;
|
||||
|
||||
@@ -152,9 +152,8 @@ namespace backend { namespace d3d12 {
|
||||
}
|
||||
}
|
||||
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) {
|
||||
mDevice->GetResourceUploader()->BufferSubData(mResource, start * sizeof(uint32_t),
|
||||
count * sizeof(uint32_t), data);
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) {
|
||||
mDevice->GetResourceUploader()->BufferSubData(mResource, start, count, data);
|
||||
}
|
||||
|
||||
void Buffer::MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) {
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace backend { namespace d3d12 {
|
||||
ComPtr<ID3D12Resource> mResource;
|
||||
|
||||
// NXT API
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) override;
|
||||
void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void MapWriteAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void UnmapImpl() override;
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace backend { namespace metal {
|
||||
void OnMapCommandSerialFinished(uint32_t mapSerial, uint32_t offset, bool isWrite);
|
||||
|
||||
private:
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) override;
|
||||
void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void MapWriteAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void UnmapImpl() override;
|
||||
|
||||
@@ -49,10 +49,9 @@ namespace backend { namespace metal {
|
||||
}
|
||||
}
|
||||
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) {
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) {
|
||||
auto* uploader = ToBackend(GetDevice())->GetResourceUploader();
|
||||
uploader->BufferSubData(mMtlBuffer, start * sizeof(uint32_t), count * sizeof(uint32_t),
|
||||
data);
|
||||
uploader->BufferSubData(mMtlBuffer, start, count, data);
|
||||
}
|
||||
|
||||
void Buffer::MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t) {
|
||||
|
||||
@@ -140,7 +140,7 @@ namespace backend { namespace null {
|
||||
}
|
||||
}
|
||||
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) {
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) {
|
||||
ASSERT(start + count <= GetSize());
|
||||
ASSERT(mBackingData);
|
||||
memcpy(mBackingData.get() + start, data, count);
|
||||
|
||||
@@ -135,7 +135,7 @@ namespace backend { namespace null {
|
||||
void MapReadOperationCompleted(uint32_t serial, void* ptr, bool isWrite);
|
||||
|
||||
private:
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) override;
|
||||
void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void MapWriteAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void UnmapImpl() override;
|
||||
|
||||
@@ -30,9 +30,9 @@ namespace backend { namespace opengl {
|
||||
return mBuffer;
|
||||
}
|
||||
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) {
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) {
|
||||
glBindBuffer(GL_ARRAY_BUFFER, mBuffer);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, start * sizeof(uint32_t), count * sizeof(uint32_t), data);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, start, count, data);
|
||||
}
|
||||
|
||||
void Buffer::MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) {
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace backend { namespace opengl {
|
||||
GLuint GetHandle() const;
|
||||
|
||||
private:
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) override;
|
||||
void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void MapWriteAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void UnmapImpl() override;
|
||||
|
||||
@@ -184,9 +184,9 @@ namespace backend { namespace vulkan {
|
||||
nullptr);
|
||||
}
|
||||
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) {
|
||||
void Buffer::SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) {
|
||||
BufferUploader* uploader = ToBackend(GetDevice())->GetBufferUploader();
|
||||
uploader->BufferSubData(mHandle, start * sizeof(uint32_t), count * sizeof(uint32_t), data);
|
||||
uploader->BufferSubData(mHandle, start, count, data);
|
||||
}
|
||||
|
||||
void Buffer::MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t /*count*/) {
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace backend { namespace vulkan {
|
||||
nxt::BufferUsageBit targetUsage) const;
|
||||
|
||||
private:
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint32_t* data) override;
|
||||
void SetSubDataImpl(uint32_t start, uint32_t count, const uint8_t* data) override;
|
||||
void MapReadAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void MapWriteAsyncImpl(uint32_t serial, uint32_t start, uint32_t count) override;
|
||||
void UnmapImpl() override;
|
||||
|
||||
Reference in New Issue
Block a user