Make binding expose the preferred format

This commit is contained in:
Corentin Wallez 2017-09-21 12:54:53 -04:00 committed by Corentin Wallez
parent 405dcd636a
commit 2e31e8f0bf
21 changed files with 51 additions and 14 deletions

View File

@ -49,7 +49,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
nxt::ShaderModule vsModule = utils::CreateShaderModule(device, nxt::ShaderStage::Vertex, R"( nxt::ShaderModule vsModule = utils::CreateShaderModule(device, nxt::ShaderStage::Vertex, R"(
#version 450 #version 450

View File

@ -39,7 +39,8 @@ void init() {
swapchain = nxtSwapChainBuilderGetResult(builder); swapchain = nxtSwapChainBuilderGetResult(builder);
nxtSwapChainBuilderRelease(builder); nxtSwapChainBuilderRelease(builder);
} }
nxtSwapChainConfigure(swapchain, NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM, NXT_TEXTURE_USAGE_BIT_OUTPUT_ATTACHMENT, 640, 480); nxtSwapChainConfigure(swapchain, static_cast<nxtTextureFormat>(GetPreferredSwapChainTextureFormat()),
NXT_TEXTURE_USAGE_BIT_OUTPUT_ATTACHMENT, 640, 480);
const char* vs = const char* vs =
"#version 450\n" "#version 450\n"

View File

@ -291,7 +291,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();
initRender(); initRender();

View File

@ -35,7 +35,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
struct {uint32_t a; float b;} s; struct {uint32_t a; float b;} s;
memset(&s, 0, sizeof(s)); memset(&s, 0, sizeof(s));

View File

@ -116,7 +116,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();

View File

@ -49,7 +49,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();

View File

@ -52,7 +52,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();

View File

@ -83,7 +83,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();
initTextures(); initTextures();

View File

@ -33,7 +33,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
nxt::ShaderModule vsModule = utils::CreateShaderModule(device, nxt::ShaderStage::Vertex, R"( nxt::ShaderModule vsModule = utils::CreateShaderModule(device, nxt::ShaderStage::Vertex, R"(
#version 450 #version 450

View File

@ -43,7 +43,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();

View File

@ -167,7 +167,8 @@ void init() {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
initBuffers(); initBuffers();
initTextures(); initTextures();

View File

@ -116,6 +116,10 @@ uint64_t GetSwapChainImplementation() {
return binding->GetSwapChainImplementation(); return binding->GetSwapChainImplementation();
} }
nxt::TextureFormat GetPreferredSwapChainTextureFormat() {
return static_cast<nxt::TextureFormat>(binding->GetPreferredSwapChainTextureFormat());
}
nxt::SwapChain GetSwapChain(const nxt::Device &device) { nxt::SwapChain GetSwapChain(const nxt::Device &device) {
return device.CreateSwapChainBuilder() return device.CreateSwapChainBuilder()
.SetImplementation(GetSwapChainImplementation()) .SetImplementation(GetSwapChainImplementation())
@ -125,7 +129,7 @@ nxt::SwapChain GetSwapChain(const nxt::Device &device) {
nxt::RenderPass CreateDefaultRenderPass(const nxt::Device& device) { nxt::RenderPass CreateDefaultRenderPass(const nxt::Device& device) {
return device.CreateRenderPassBuilder() return device.CreateRenderPassBuilder()
.SetAttachmentCount(2) .SetAttachmentCount(2)
.AttachmentSetFormat(0, nxt::TextureFormat::R8G8B8A8Unorm) .AttachmentSetFormat(0, GetPreferredSwapChainTextureFormat())
.AttachmentSetColorLoadOp(0, nxt::LoadOp::Clear) .AttachmentSetColorLoadOp(0, nxt::LoadOp::Clear)
.AttachmentSetFormat(1, nxt::TextureFormat::D32FloatS8Uint) .AttachmentSetFormat(1, nxt::TextureFormat::D32FloatS8Uint)
.AttachmentSetDepthStencilLoadOps(1, nxt::LoadOp::Clear, nxt::LoadOp::Clear) .AttachmentSetDepthStencilLoadOps(1, nxt::LoadOp::Clear, nxt::LoadOp::Clear)

View File

@ -24,6 +24,7 @@ struct GLFWwindow* GetGLFWWindow();
nxt::Device CreateCppNXTDevice(); nxt::Device CreateCppNXTDevice();
uint64_t GetSwapChainImplementation(); uint64_t GetSwapChainImplementation();
nxt::TextureFormat GetPreferredSwapChainTextureFormat();
nxt::SwapChain GetSwapChain(const nxt::Device& device); nxt::SwapChain GetSwapChain(const nxt::Device& device);
nxt::RenderPass CreateDefaultRenderPass(const nxt::Device& device); nxt::RenderPass CreateDefaultRenderPass(const nxt::Device& device);
nxt::TextureView CreateDefaultDepthStencilView(const nxt::Device& device); nxt::TextureView CreateDefaultDepthStencilView(const nxt::Device& device);

View File

@ -465,7 +465,8 @@ namespace {
queue = device.CreateQueueBuilder().GetResult(); queue = device.CreateQueueBuilder().GetResult();
swapchain = GetSwapChain(device); swapchain = GetSwapChain(device);
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 640, 480); swapchain.Configure(GetPreferredSwapChainTextureFormat(),
nxt::TextureUsageBit::OutputAttachment, 640, 480);
renderpass = CreateDefaultRenderPass(device); renderpass = CreateDefaultRenderPass(device);
depthStencilView = CreateDefaultDepthStencilView(device); depthStencilView = CreateDefaultDepthStencilView(device);

View File

@ -142,7 +142,8 @@ void NXTTest::SetUp() {
swapchain = device.CreateSwapChainBuilder() swapchain = device.CreateSwapChainBuilder()
.SetImplementation(binding->GetSwapChainImplementation()) .SetImplementation(binding->GetSwapChainImplementation())
.GetResult(); .GetResult();
swapchain.Configure(nxt::TextureFormat::R8G8B8A8Unorm, nxt::TextureUsageBit::OutputAttachment, 400, 400); swapchain.Configure(static_cast<nxt::TextureFormat>(binding->GetPreferredSwapChainTextureFormat()),
nxt::TextureUsageBit::OutputAttachment, 400, 400);
device.SetErrorCallback(DeviceErrorCauseTestFailure, 0); device.SetErrorCallback(DeviceErrorCauseTestFailure, 0);
} }

View File

@ -38,6 +38,7 @@ namespace utils {
virtual void SetupGLFWWindowHints() = 0; virtual void SetupGLFWWindowHints() = 0;
virtual void GetProcAndDevice(nxtProcTable* procs, nxtDevice* device) = 0; virtual void GetProcAndDevice(nxtProcTable* procs, nxtDevice* device) = 0;
virtual uint64_t GetSwapChainImplementation() = 0; virtual uint64_t GetSwapChainImplementation() = 0;
virtual nxtTextureFormat GetPreferredSwapChainTextureFormat() = 0;
void SetWindow(GLFWwindow* window); void SetWindow(GLFWwindow* window);

View File

@ -275,6 +275,10 @@ namespace utils {
return reinterpret_cast<uint64_t>(&swapchainImpl); return reinterpret_cast<uint64_t>(&swapchainImpl);
} }
nxtTextureFormat GetPreferredSwapChainTextureFormat() override {
return NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM;
}
private: private:
nxtDevice backendDevice = nullptr; nxtDevice backendDevice = nullptr;
nxtSwapChainImplementation swapchainImpl = {}; nxtSwapChainImplementation swapchainImpl = {};

View File

@ -136,6 +136,10 @@ namespace utils {
return reinterpret_cast<uint64_t>(&swapchainImpl); return reinterpret_cast<uint64_t>(&swapchainImpl);
} }
nxtTextureFormat GetPreferredSwapChainTextureFormat() override {
return NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM;
}
private: private:
id<MTLDevice> metalDevice = nil; id<MTLDevice> metalDevice = nil;
nxtDevice backendDevice = nullptr; nxtDevice backendDevice = nullptr;

View File

@ -32,6 +32,9 @@ namespace utils {
uint64_t GetSwapChainImplementation() override { uint64_t GetSwapChainImplementation() override {
return 0; return 0;
} }
nxtTextureFormat GetPreferredSwapChainTextureFormat() override {
return NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM;
}
}; };

View File

@ -132,6 +132,10 @@ namespace utils {
return reinterpret_cast<uint64_t>(&swapchainImpl); return reinterpret_cast<uint64_t>(&swapchainImpl);
} }
nxtTextureFormat GetPreferredSwapChainTextureFormat() override {
return NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM;
}
private: private:
nxtDevice backendDevice = nullptr; nxtDevice backendDevice = nullptr;
nxtSwapChainImplementation swapchainImpl = {}; nxtSwapChainImplementation swapchainImpl = {};

View File

@ -32,6 +32,9 @@ namespace utils {
uint64_t GetSwapChainImplementation() override { uint64_t GetSwapChainImplementation() override {
return 0; return 0;
} }
nxtTextureFormat GetPreferredSwapChainTextureFormat() override {
return NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM;
}
}; };