Fix display drawing

Disable depth-testing, the display vertex-shader, and the
viewport/scissor positioning of the bottom screen.

We have visual!
This commit is contained in:
Wunkolo 2023-08-24 11:29:35 -07:00
parent e4195d4d4d
commit 57ee0a3db9
2 changed files with 6 additions and 22 deletions

View file

@ -140,8 +140,8 @@ std::tuple<vk::UniquePipeline, vk::UniquePipelineLayout> createGraphicsPipeline(
vk::PipelineDepthStencilStateCreateInfo depthStencilState = {};
depthStencilState.depthTestEnable = true;
depthStencilState.depthWriteEnable = true;
depthStencilState.depthTestEnable = false;
depthStencilState.depthWriteEnable = false;
depthStencilState.depthCompareOp = vk::CompareOp::eLessOrEqual;
depthStencilState.depthBoundsTestEnable = false;
depthStencilState.stencilTestEnable = false;
@ -715,8 +715,8 @@ void RendererVK::display() {
vk::PipelineBindPoint::eGraphics, displayPipelineLayout.get(), 0, {bottomDisplayPipelineDescriptorSet[frameBufferingIndex]}, {}
);
getCurrentCommandBuffer().bindPipeline(vk::PipelineBindPoint::eGraphics, displayPipeline.get());
getCurrentCommandBuffer().setViewport(0, vk::Viewport(40, 0, 320, 240));
getCurrentCommandBuffer().setScissor(0, vk::Rect2D({40, 0}, {320, 240}));
getCurrentCommandBuffer().setViewport(0, vk::Viewport(40, 240, 320, 240));
getCurrentCommandBuffer().setScissor(0, vk::Rect2D({40, 240}, {320, 240}));
getCurrentCommandBuffer().draw(3, 1, 0, 0);
}

View file

@ -2,22 +2,6 @@
layout(location = 0) out vec2 UV;
void main() {
const vec4 positions[4] = vec4[](
vec4(-1.0, 1.0, 1.0, 1.0), // Top-left
vec4(1.0, 1.0, 1.0, 1.0), // Top-right
vec4(-1.0, -1.0, 1.0, 1.0), // Bottom-left
vec4(1.0, -1.0, 1.0, 1.0) // Bottom-right
);
// The 3DS displays both screens' framebuffer rotated 90 deg counter clockwise
// So we adjust our texcoords accordingly
const vec2 texcoords[4] = vec2[](
vec2(1.0, 1.0), // Top-right
vec2(1.0, 0.0), // Bottom-right
vec2(0.0, 1.0), // Top-left
vec2(0.0, 0.0) // Bottom-left
);
gl_Position = positions[gl_VertexIndex];
UV = texcoords[gl_VertexIndex];
UV = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
gl_Position = vec4(UV * 2.0f + -1.0f, 0.0f, 1.0f);
}