mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-17 17:05:31 +00:00
Rephrase Format::aspect enum as an enum class mask
Format::aspect should be a mask so that it is easier to iterate over and test if an aspect is present. This CL also re-exports wgpu's EnumClassBitMask helpers in dawn_native. It also adds an EnumMaskIterator which wraps BitSetIterator to allow iterating over the enums in an enum mask. Bug: dawn:439 Change-Id: I08180a45b27c6031e2f80b0fa1801716677fd813 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/24682 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
38ba51ce7a
commit
b8a56af176
@@ -630,22 +630,16 @@ namespace dawn_native { namespace opengl {
|
||||
gl.BindFramebuffer(GL_READ_FRAMEBUFFER, readFBO);
|
||||
|
||||
GLenum glAttachment = 0;
|
||||
switch (format.aspect) {
|
||||
case Format::Aspect::Color:
|
||||
glAttachment = GL_COLOR_ATTACHMENT0;
|
||||
break;
|
||||
case Format::Aspect::Depth:
|
||||
glAttachment = GL_DEPTH_ATTACHMENT;
|
||||
break;
|
||||
case Format::Aspect::Stencil:
|
||||
glAttachment = GL_STENCIL_ATTACHMENT;
|
||||
break;
|
||||
case Format::Aspect::DepthStencil:
|
||||
glAttachment = GL_DEPTH_STENCIL_ATTACHMENT;
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
break;
|
||||
if (format.aspects == (Aspect::Depth | Aspect::Stencil)) {
|
||||
glAttachment = GL_DEPTH_STENCIL_ATTACHMENT;
|
||||
} else if (format.aspects == Aspect::Depth) {
|
||||
glAttachment = GL_DEPTH_ATTACHMENT;
|
||||
} else if (format.aspects == Aspect::Stencil) {
|
||||
glAttachment = GL_STENCIL_ATTACHMENT;
|
||||
} else if (format.aspects == Aspect::Color) {
|
||||
glAttachment = GL_COLOR_ATTACHMENT0;
|
||||
} else {
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
gl.BindBuffer(GL_PIXEL_PACK_BUFFER, buffer->GetHandle());
|
||||
@@ -880,19 +874,14 @@ namespace dawn_native { namespace opengl {
|
||||
GLenum glAttachment = 0;
|
||||
// TODO(kainino@chromium.org): it may be valid to just always use
|
||||
// GL_DEPTH_STENCIL_ATTACHMENT here.
|
||||
switch (format.aspect) {
|
||||
case Format::Aspect::Depth:
|
||||
glAttachment = GL_DEPTH_ATTACHMENT;
|
||||
break;
|
||||
case Format::Aspect::Stencil:
|
||||
glAttachment = GL_STENCIL_ATTACHMENT;
|
||||
break;
|
||||
case Format::Aspect::DepthStencil:
|
||||
glAttachment = GL_DEPTH_STENCIL_ATTACHMENT;
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
break;
|
||||
if (format.aspects == (Aspect::Depth | Aspect::Stencil)) {
|
||||
glAttachment = GL_DEPTH_STENCIL_ATTACHMENT;
|
||||
} else if (format.aspects == Aspect::Depth) {
|
||||
glAttachment = GL_DEPTH_ATTACHMENT;
|
||||
} else if (format.aspects == Aspect::Stencil) {
|
||||
glAttachment = GL_STENCIL_ATTACHMENT;
|
||||
} else {
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
if (textureView->GetTexture()->GetArrayLayers() == 1) {
|
||||
|
||||
Reference in New Issue
Block a user