summaryrefslogtreecommitdiff
path: root/chromium/third_party/dawn/src/dawn_native/Device.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-16 09:59:13 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-20 10:28:53 +0000
commit6c11fb357ec39bf087b8b632e2b1e375aef1b38b (patch)
treec8315530db18a8ee566521c39ab8a6af4f72bc03 /chromium/third_party/dawn/src/dawn_native/Device.cpp
parent3ffaed019d0772e59d6cdb2d0d32fe4834c31f72 (diff)
downloadqtwebengine-chromium-6c11fb357ec39bf087b8b632e2b1e375aef1b38b.tar.gz
BASELINE: Update Chromium to 74.0.3729.159
Change-Id: I8d2497da544c275415aedd94dd25328d555de811 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/dawn/src/dawn_native/Device.cpp')
-rw-r--r--chromium/third_party/dawn/src/dawn_native/Device.cpp97
1 files changed, 58 insertions, 39 deletions
diff --git a/chromium/third_party/dawn/src/dawn_native/Device.cpp b/chromium/third_party/dawn/src/dawn_native/Device.cpp
index c5f69932994..0448464ab87 100644
--- a/chromium/third_party/dawn/src/dawn_native/Device.cpp
+++ b/chromium/third_party/dawn/src/dawn_native/Device.cpp
@@ -19,14 +19,15 @@
#include "dawn_native/BindGroupLayout.h"
#include "dawn_native/Buffer.h"
#include "dawn_native/CommandBuffer.h"
+#include "dawn_native/CommandEncoder.h"
#include "dawn_native/ComputePipeline.h"
+#include "dawn_native/DynamicUploader.h"
#include "dawn_native/ErrorData.h"
#include "dawn_native/Fence.h"
#include "dawn_native/FenceSignalTracker.h"
#include "dawn_native/InputState.h"
#include "dawn_native/PipelineLayout.h"
#include "dawn_native/Queue.h"
-#include "dawn_native/RenderPassDescriptor.h"
#include "dawn_native/RenderPipeline.h"
#include "dawn_native/Sampler.h"
#include "dawn_native/ShaderModule.h"
@@ -53,9 +54,12 @@ namespace dawn_native {
DeviceBase::DeviceBase(AdapterBase* adapter) : mAdapter(adapter) {
mCaches = std::make_unique<DeviceBase::Caches>();
mFenceSignalTracker = std::make_unique<FenceSignalTracker>(this);
+ mDynamicUploader = std::make_unique<DynamicUploader>(this);
}
DeviceBase::~DeviceBase() {
+ // Devices must explicitly free the uploader
+ ASSERT(mDynamicUploader == nullptr);
}
void DeviceBase::HandleError(const char* message) {
@@ -70,6 +74,20 @@ namespace dawn_native {
mErrorUserdata = userdata;
}
+ MaybeError DeviceBase::ValidateObject(const ObjectBase* object) const {
+ if (DAWN_UNLIKELY(object->GetDevice() != this)) {
+ return DAWN_VALIDATION_ERROR("Object from a different device.");
+ }
+ if (DAWN_UNLIKELY(object->IsError())) {
+ return DAWN_VALIDATION_ERROR("Object is an error.");
+ }
+ return {};
+ }
+
+ AdapterBase* DeviceBase::GetAdapter() const {
+ return mAdapter;
+ }
+
DeviceBase* DeviceBase::GetDevice() {
return this;
}
@@ -98,18 +116,13 @@ namespace dawn_native {
mCaches->bindGroupLayouts.erase(obj);
}
- const PCIInfo& DeviceBase::GetPCIInfo() const {
- ASSERT(mAdapter != nullptr);
- return mAdapter->GetPCIInfo();
- }
-
// Object creation API methods
BindGroupBase* DeviceBase::CreateBindGroup(const BindGroupDescriptor* descriptor) {
BindGroupBase* result = nullptr;
if (ConsumedError(CreateBindGroupInternal(&result, descriptor))) {
- return nullptr;
+ return BindGroupBase::MakeError(this);
}
return result;
@@ -119,7 +132,7 @@ namespace dawn_native {
BindGroupLayoutBase* result = nullptr;
if (ConsumedError(CreateBindGroupLayoutInternal(&result, descriptor))) {
- return nullptr;
+ return BindGroupLayoutBase::MakeError(this);
}
return result;
@@ -128,29 +141,20 @@ namespace dawn_native {
BufferBase* result = nullptr;
if (ConsumedError(CreateBufferInternal(&result, descriptor))) {
- return nullptr;
+ return BufferBase::MakeError(this);
}
return result;
}
- CommandBufferBuilder* DeviceBase::CreateCommandBufferBuilder() {
- return new CommandBufferBuilder(this);
+ CommandEncoderBase* DeviceBase::CreateCommandEncoder() {
+ return new CommandEncoderBase(this);
}
ComputePipelineBase* DeviceBase::CreateComputePipeline(
const ComputePipelineDescriptor* descriptor) {
ComputePipelineBase* result = nullptr;
if (ConsumedError(CreateComputePipelineInternal(&result, descriptor))) {
- return nullptr;
- }
-
- return result;
- }
- FenceBase* DeviceBase::CreateFence(const FenceDescriptor* descriptor) {
- FenceBase* result = nullptr;
-
- if (ConsumedError(CreateFenceInternal(&result, descriptor))) {
- return nullptr;
+ return ComputePipelineBase::MakeError(this);
}
return result;
@@ -163,7 +167,7 @@ namespace dawn_native {
PipelineLayoutBase* result = nullptr;
if (ConsumedError(CreatePipelineLayoutInternal(&result, descriptor))) {
- return nullptr;
+ return PipelineLayoutBase::MakeError(this);
}
return result;
@@ -172,19 +176,19 @@ namespace dawn_native {
QueueBase* result = nullptr;
if (ConsumedError(CreateQueueInternal(&result))) {
+ // If queue creation failure ever becomes possible, we should implement MakeError and
+ // friends for them.
+ UNREACHABLE();
return nullptr;
}
return result;
}
- RenderPassDescriptorBuilder* DeviceBase::CreateRenderPassDescriptorBuilder() {
- return new RenderPassDescriptorBuilder(this);
- }
SamplerBase* DeviceBase::CreateSampler(const SamplerDescriptor* descriptor) {
SamplerBase* result = nullptr;
if (ConsumedError(CreateSamplerInternal(&result, descriptor))) {
- return nullptr;
+ return SamplerBase::MakeError(this);
}
return result;
@@ -194,7 +198,7 @@ namespace dawn_native {
RenderPipelineBase* result = nullptr;
if (ConsumedError(CreateRenderPipelineInternal(&result, descriptor))) {
- return nullptr;
+ return RenderPipelineBase::MakeError(this);
}
return result;
@@ -203,20 +207,27 @@ namespace dawn_native {
ShaderModuleBase* result = nullptr;
if (ConsumedError(CreateShaderModuleInternal(&result, descriptor))) {
- return nullptr;
+ return ShaderModuleBase::MakeError(this);
}
return result;
}
- SwapChainBuilder* DeviceBase::CreateSwapChainBuilder() {
- return new SwapChainBuilder(this);
+ SwapChainBase* DeviceBase::CreateSwapChain(const SwapChainDescriptor* descriptor) {
+ SwapChainBase* result = nullptr;
+
+ if (ConsumedError(CreateSwapChainInternal(&result, descriptor))) {
+ return SwapChainBase::MakeError(this);
+ }
+
+ return result;
}
TextureBase* DeviceBase::CreateTexture(const TextureDescriptor* descriptor) {
TextureBase* result = nullptr;
if (ConsumedError(CreateTextureInternal(&result, descriptor))) {
- return nullptr;
+ return TextureBase::MakeError(this);
}
+
return result;
}
TextureViewBase* DeviceBase::CreateTextureView(TextureBase* texture,
@@ -224,8 +235,9 @@ namespace dawn_native {
TextureViewBase* result = nullptr;
if (ConsumedError(CreateTextureViewInternal(&result, texture, descriptor))) {
- return nullptr;
+ return TextureViewBase::MakeError(this);
}
+
return result;
}
@@ -281,13 +293,6 @@ namespace dawn_native {
return {};
}
- MaybeError DeviceBase::CreateFenceInternal(FenceBase** result,
- const FenceDescriptor* descriptor) {
- DAWN_TRY(ValidateFenceDescriptor(this, descriptor));
- *result = new FenceBase(this, descriptor);
- return {};
- }
-
MaybeError DeviceBase::CreatePipelineLayoutInternal(
PipelineLayoutBase** result,
const PipelineLayoutDescriptor* descriptor) {
@@ -323,6 +328,13 @@ namespace dawn_native {
return {};
}
+ MaybeError DeviceBase::CreateSwapChainInternal(SwapChainBase** result,
+ const SwapChainDescriptor* descriptor) {
+ DAWN_TRY(ValidateSwapChainDescriptor(this, descriptor));
+ DAWN_TRY_ASSIGN(*result, CreateSwapChainImpl(descriptor));
+ return {};
+ }
+
MaybeError DeviceBase::CreateTextureInternal(TextureBase** result,
const TextureDescriptor* descriptor) {
DAWN_TRY(ValidateTextureDescriptor(this, descriptor));
@@ -346,4 +358,11 @@ namespace dawn_native {
delete error;
}
+ ResultOrError<DynamicUploader*> DeviceBase::GetDynamicUploader() const {
+ if (mDynamicUploader->IsEmpty()) {
+ DAWN_TRY(mDynamicUploader->CreateAndAppendBuffer());
+ }
+ return mDynamicUploader.get();
+ }
+
} // namespace dawn_native