mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 08:27:05 +00:00
Impl 3DTexture copy splitter for empty first row on D3D12 - 2
If the copy region generated from 2D texture copy splitter has an
empty first row due to alignment adjustment and we simply extend
it to all copied depth slices, the copy region will be incorrect
for 3D texture copy.
If there is an empty first row and the copy height is odd, we can
split the copy region into two:
- copy0: copy the first depth slice
- copy1: copy the rest depth slices because there is no empty
row after alignment adjustment
This method resolves the remaining problem when copy height is 1.
It also is an optimization for other odd copy height cases, say
copy height is 3, 5, 7, etc.
This change implements the special situation when the copy region
generated from 2D texture copy splitter has an empty first row and
its copy height is odd.
Bug: dawn:547
Change-Id: Idf4f4a9b87f783c5328463e0f4182429a7e809f1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53885
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
This commit is contained in:
@@ -1075,8 +1075,6 @@ TEST_P(CopyTests_T2B, Texture3DNoSplitRowDataWithEmptyFirstRow) {
|
||||
}
|
||||
|
||||
TEST_P(CopyTests_T2B, Texture3DSplitRowDataWithoutEmptyFirstRow) {
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsD3D12()); // TODO(crbug.com/dawn/547): Implement on D3D12.
|
||||
|
||||
constexpr uint32_t kWidth = 259;
|
||||
constexpr uint32_t kHeight = 127;
|
||||
constexpr uint32_t kDepth = 3;
|
||||
@@ -1114,8 +1112,6 @@ TEST_P(CopyTests_T2B, Texture3DSplitRowDataWithEmptyFirstRow) {
|
||||
}
|
||||
|
||||
TEST_P(CopyTests_T2B, Texture3DCopyHeightIsOneCopyWidthIsTiny) {
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsD3D12()); // TODO(crbug.com/dawn/547): Implement on D3D12.
|
||||
|
||||
constexpr uint32_t kWidth = 2;
|
||||
constexpr uint32_t kHeight = 1;
|
||||
constexpr uint32_t kDepth = 3;
|
||||
@@ -1137,8 +1133,6 @@ TEST_P(CopyTests_T2B, Texture3DCopyHeightIsOneCopyWidthIsTiny) {
|
||||
}
|
||||
|
||||
TEST_P(CopyTests_T2B, Texture3DCopyHeightIsOneCopyWidthIsSmall) {
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsD3D12()); // TODO(crbug.com/dawn/547): Implement on D3D12.
|
||||
|
||||
constexpr uint32_t kWidth = 39;
|
||||
constexpr uint32_t kHeight = 1;
|
||||
constexpr uint32_t kDepth = 3;
|
||||
@@ -1692,8 +1686,6 @@ TEST_P(CopyTests_B2T, Texture3DNoSplitRowDataWithEmptyFirstRow) {
|
||||
}
|
||||
|
||||
TEST_P(CopyTests_B2T, Texture3DSplitRowDataWithoutEmptyFirstRow) {
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsD3D12()); // TODO(crbug.com/dawn/547): Implement on D3D12.
|
||||
|
||||
constexpr uint32_t kWidth = 259;
|
||||
constexpr uint32_t kHeight = 127;
|
||||
constexpr uint32_t kDepth = 3;
|
||||
@@ -1731,8 +1723,6 @@ TEST_P(CopyTests_B2T, Texture3DSplitRowDataWithEmptyFirstRow) {
|
||||
}
|
||||
|
||||
TEST_P(CopyTests_B2T, Texture3DCopyHeightIsOneCopyWidthIsTiny) {
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsD3D12()); // TODO(crbug.com/dawn/547): Implement on D3D12.
|
||||
|
||||
constexpr uint32_t kWidth = 2;
|
||||
constexpr uint32_t kHeight = 1;
|
||||
constexpr uint32_t kDepth = 3;
|
||||
@@ -1754,8 +1744,6 @@ TEST_P(CopyTests_B2T, Texture3DCopyHeightIsOneCopyWidthIsTiny) {
|
||||
}
|
||||
|
||||
TEST_P(CopyTests_B2T, Texture3DCopyHeightIsOneCopyWidthIsSmall) {
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsD3D12()); // TODO(crbug.com/dawn/547): Implement on D3D12.
|
||||
|
||||
constexpr uint32_t kWidth = 39;
|
||||
constexpr uint32_t kHeight = 1;
|
||||
constexpr uint32_t kDepth = 3;
|
||||
|
||||
Reference in New Issue
Block a user