mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 08:27:05 +00:00
D3D12 Render Targets (#72)
Implements BeginRenderSubpass on the D3D12 backend. Descriptors for render target and depth stencil views are recorded in a descriptor heap for each framebuffer. For now, we still have the hack where no attachment renders to the backbuffer, so the CommandBuffer records those when necessary when it is submitted. This PR also enables input states for D3D12 which are mostly working. One failure seems to be happening because our texture copies are not yet correct.
This commit is contained in:
@@ -101,6 +101,10 @@ NXTTest::~NXTTest() {
|
||||
nxtSetProcs(nullptr);
|
||||
}
|
||||
|
||||
bool NXTTest::IsD3D12() const {
|
||||
return GetParam() == D3D12Backend;
|
||||
}
|
||||
|
||||
void NXTTest::SetUp() {
|
||||
binding = utils::CreateBinding(ParamToBackendType(GetParam()));
|
||||
NXT_ASSERT(binding != nullptr);
|
||||
|
||||
@@ -62,6 +62,7 @@ class NXTTest : public ::testing::TestWithParam<BackendType> {
|
||||
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
bool IsD3D12() const;
|
||||
|
||||
protected:
|
||||
nxt::Device device;
|
||||
|
||||
@@ -188,6 +188,7 @@ class InputStateTest : public NXTTest {
|
||||
|
||||
nxt::CommandBufferBuilder builder = device.CreateCommandBufferBuilder();
|
||||
|
||||
renderTarget.TransitionUsage(nxt::TextureUsageBit::OutputAttachment);
|
||||
builder.BeginRenderPass(renderpass, framebuffer)
|
||||
.BeginRenderSubpass()
|
||||
.SetPipeline(pipeline);
|
||||
@@ -383,6 +384,11 @@ TEST_P(InputStateTest, TwoAttributesAtAnOffsetInstance) {
|
||||
|
||||
// Test a pure-instance input state
|
||||
TEST_P(InputStateTest, PureInstance) {
|
||||
if (IsD3D12()) {
|
||||
printf("TODO(enga@google.com): SKIPPED. Incorrect texture copies cause this test to fail\n");
|
||||
return;
|
||||
}
|
||||
|
||||
nxt::InputState inputState = MakeInputState({
|
||||
{0, 4 * sizeof(float), InputStepMode::Instance}
|
||||
}, {
|
||||
@@ -437,7 +443,7 @@ TEST_P(InputStateTest, MixedEverything) {
|
||||
DoTestDraw(pipeline, 1, 1, {{0, &buffer0}, {1, &buffer1}});
|
||||
}
|
||||
|
||||
NXT_INSTANTIATE_TEST(InputStateTest, MetalBackend)
|
||||
NXT_INSTANTIATE_TEST(InputStateTest, MetalBackend, D3D12Backend)
|
||||
|
||||
// TODO for the input state:
|
||||
// - Add more vertex formats
|
||||
|
||||
Reference in New Issue
Block a user