mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-06 21:25:58 +00:00
Metal: Fix rendering to a layer of a depth/stencil texture
Bug: dawn:430 Change-Id: Ice053a44a0720055fe02b2589153a04ffaa87e65 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22302 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
This commit is contained in:
parent
bf3611ce73
commit
09987b88f1
@ -939,11 +939,9 @@ namespace dawn_native { namespace d3d12 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
D3D12_DEPTH_STENCIL_VIEW_DESC TextureView::GetDSVDescriptor() const {
|
D3D12_DEPTH_STENCIL_VIEW_DESC TextureView::GetDSVDescriptor() const {
|
||||||
// TODO(jiawei.shao@intel.com): support rendering into a layer of a texture.
|
|
||||||
ASSERT(GetLevelCount() == 1);
|
ASSERT(GetLevelCount() == 1);
|
||||||
uint32_t mipLevel = GetBaseMipLevel();
|
|
||||||
return ToBackend(GetTexture())
|
return ToBackend(GetTexture())
|
||||||
->GetDSVDescriptor(mipLevel, GetBaseArrayLayer(), GetLayerCount());
|
->GetDSVDescriptor(GetBaseMipLevel(), GetBaseArrayLayer(), GetLayerCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D12_UNORDERED_ACCESS_VIEW_DESC TextureView::GetUAVDescriptor() const {
|
D3D12_UNORDERED_ACCESS_VIEW_DESC TextureView::GetUAVDescriptor() const {
|
||||||
|
@ -102,13 +102,14 @@ namespace dawn_native { namespace metal {
|
|||||||
if (renderPass->attachmentState->HasDepthStencilAttachment()) {
|
if (renderPass->attachmentState->HasDepthStencilAttachment()) {
|
||||||
auto& attachmentInfo = renderPass->depthStencilAttachment;
|
auto& attachmentInfo = renderPass->depthStencilAttachment;
|
||||||
|
|
||||||
// TODO(jiawei.shao@intel.com): support rendering into a layer of a texture.
|
|
||||||
id<MTLTexture> texture =
|
id<MTLTexture> texture =
|
||||||
ToBackend(attachmentInfo.view->GetTexture())->GetMTLTexture();
|
ToBackend(attachmentInfo.view->GetTexture())->GetMTLTexture();
|
||||||
const Format& format = attachmentInfo.view->GetTexture()->GetFormat();
|
const Format& format = attachmentInfo.view->GetTexture()->GetFormat();
|
||||||
|
|
||||||
if (format.HasDepth()) {
|
if (format.HasDepth()) {
|
||||||
descriptor.depthAttachment.texture = texture;
|
descriptor.depthAttachment.texture = texture;
|
||||||
|
descriptor.depthAttachment.level = attachmentInfo.view->GetBaseMipLevel();
|
||||||
|
descriptor.depthAttachment.slice = attachmentInfo.view->GetBaseArrayLayer();
|
||||||
|
|
||||||
switch (attachmentInfo.depthStoreOp) {
|
switch (attachmentInfo.depthStoreOp) {
|
||||||
case wgpu::StoreOp::Store:
|
case wgpu::StoreOp::Store:
|
||||||
@ -142,6 +143,8 @@ namespace dawn_native { namespace metal {
|
|||||||
|
|
||||||
if (format.HasStencil()) {
|
if (format.HasStencil()) {
|
||||||
descriptor.stencilAttachment.texture = texture;
|
descriptor.stencilAttachment.texture = texture;
|
||||||
|
descriptor.stencilAttachment.level = attachmentInfo.view->GetBaseMipLevel();
|
||||||
|
descriptor.stencilAttachment.slice = attachmentInfo.view->GetBaseArrayLayer();
|
||||||
|
|
||||||
switch (attachmentInfo.stencilStoreOp) {
|
switch (attachmentInfo.stencilStoreOp) {
|
||||||
case wgpu::StoreOp::Store:
|
case wgpu::StoreOp::Store:
|
||||||
|
@ -155,8 +155,9 @@ TEST_P(SubresourceOutputAttachmentTest, DISABLED_StencilTexture) {
|
|||||||
DoTest(Type::Stencil);
|
DoTest(Type::Stencil);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(crbug.com/dawn/430): Implemented incorrectly on OpenGL and Metal.
|
// TODO(crbug.com/dawn/430): Not implemented on OpenGL
|
||||||
DAWN_INSTANTIATE_TEST(SubresourceOutputAttachmentTest,
|
DAWN_INSTANTIATE_TEST(SubresourceOutputAttachmentTest,
|
||||||
D3D12Backend(),
|
D3D12Backend(),
|
||||||
D3D12Backend({}, {"use_d3d12_render_pass"}),
|
D3D12Backend({}, {"use_d3d12_render_pass"}),
|
||||||
|
MetalBackend(),
|
||||||
VulkanBackend());
|
VulkanBackend());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user