mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-12 14:46:08 +00:00
Use Error in Sampler and autogenerated validation functions
This commit is contained in:
committed by
Corentin Wallez
parent
1fda980fa6
commit
50e0986e0e
@@ -21,6 +21,7 @@
|
||||
#include "backend/CommandBuffer.h"
|
||||
#include "backend/ComputePipeline.h"
|
||||
#include "backend/DepthStencilState.h"
|
||||
#include "backend/ErrorData.h"
|
||||
#include "backend/InputState.h"
|
||||
#include "backend/PipelineLayout.h"
|
||||
#include "backend/Queue.h"
|
||||
@@ -131,9 +132,13 @@ namespace backend {
|
||||
return new RenderPipelineBuilder(this);
|
||||
}
|
||||
SamplerBase* DeviceBase::CreateSampler(const nxt::SamplerDescriptor* descriptor) {
|
||||
if (!ValidateSamplerDescriptor(this, descriptor)) {
|
||||
MaybeError validation = ValidateSamplerDescriptor(this, descriptor);
|
||||
if (validation.IsError()) {
|
||||
// TODO(cwallez@chromium.org): Implement the WebGPU error handling mechanism.
|
||||
delete validation.AcquireError();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return CreateSamplerImpl(descriptor);
|
||||
}
|
||||
ShaderModuleBuilder* DeviceBase::CreateShaderModuleBuilder() {
|
||||
|
||||
@@ -19,13 +19,18 @@
|
||||
|
||||
namespace backend {
|
||||
|
||||
bool ValidateSamplerDescriptor(DeviceBase*, const nxt::SamplerDescriptor* descriptor) {
|
||||
return descriptor->nextInChain == nullptr && IsValidFilterMode(descriptor->magFilter) &&
|
||||
IsValidFilterMode(descriptor->minFilter) &&
|
||||
IsValidFilterMode(descriptor->mipmapFilter) &&
|
||||
IsValidAddressMode(descriptor->addressModeU) &&
|
||||
IsValidAddressMode(descriptor->addressModeV) &&
|
||||
IsValidAddressMode(descriptor->addressModeW);
|
||||
MaybeError ValidateSamplerDescriptor(DeviceBase*, const nxt::SamplerDescriptor* descriptor) {
|
||||
NXT_TRY(ValidateFilterMode(descriptor->minFilter));
|
||||
NXT_TRY(ValidateFilterMode(descriptor->magFilter));
|
||||
NXT_TRY(ValidateFilterMode(descriptor->mipmapFilter));
|
||||
NXT_TRY(ValidateAddressMode(descriptor->addressModeU));
|
||||
NXT_TRY(ValidateAddressMode(descriptor->addressModeV));
|
||||
NXT_TRY(ValidateAddressMode(descriptor->addressModeW));
|
||||
|
||||
if (descriptor->nextInChain != nullptr) {
|
||||
NXT_RETURN_ERROR("nextInChain must be nullptr");
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
// SamplerBase
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef BACKEND_SAMPLER_H_
|
||||
#define BACKEND_SAMPLER_H_
|
||||
|
||||
#include "backend/Error.h"
|
||||
#include "backend/RefCounted.h"
|
||||
|
||||
#include "nxt/nxtcpp.h"
|
||||
@@ -23,7 +24,8 @@ namespace backend {
|
||||
|
||||
class DeviceBase;
|
||||
|
||||
bool ValidateSamplerDescriptor(DeviceBase* device, const nxt::SamplerDescriptor* descriptor);
|
||||
MaybeError ValidateSamplerDescriptor(DeviceBase* device,
|
||||
const nxt::SamplerDescriptor* descriptor);
|
||||
|
||||
class SamplerBase : public RefCounted {
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user