diff options
| author | 2019-12-13 02:41:29 -0300 | |
|---|---|---|
| committer | 2019-12-13 03:12:28 -0300 | |
| commit | 8db8631d81c4d7bac7694bef0ebf0e6f1e9f4749 (patch) | |
| tree | b0d013563ad425796a411553ea79459eddbfcbba /src | |
| parent | maxwell_to_vk: Approach GL_CLAMP closer to the GL spec (diff) | |
| download | yuzu-8db8631d81c4d7bac7694bef0ebf0e6f1e9f4749.tar.gz yuzu-8db8631d81c4d7bac7694bef0ebf0e6f1e9f4749.tar.xz yuzu-8db8631d81c4d7bac7694bef0ebf0e6f1e9f4749.zip | |
maxwell_to_vk: Implement more primitive topologies
Add an extra argument to query device capabilities in the future. The
intention behind this is to use native quads, quad strips, line loops
and polygons if these are released for Vulkan.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.h | 3 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index a1dc8dfd8..65b9a8cf7 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp | |||
| @@ -221,7 +221,8 @@ vk::ShaderStageFlagBits ShaderStage(Tegra::Engines::ShaderType stage) { | |||
| 221 | return {}; | 221 | return {}; |
| 222 | } | 222 | } |
| 223 | 223 | ||
| 224 | vk::PrimitiveTopology PrimitiveTopology(Maxwell::PrimitiveTopology topology) { | 224 | vk::PrimitiveTopology PrimitiveTopology([[maybe_unused]] const VKDevice& device, |
| 225 | Maxwell::PrimitiveTopology topology) { | ||
| 225 | switch (topology) { | 226 | switch (topology) { |
| 226 | case Maxwell::PrimitiveTopology::Points: | 227 | case Maxwell::PrimitiveTopology::Points: |
| 227 | return vk::PrimitiveTopology::ePointList; | 228 | return vk::PrimitiveTopology::ePointList; |
| @@ -233,6 +234,13 @@ vk::PrimitiveTopology PrimitiveTopology(Maxwell::PrimitiveTopology topology) { | |||
| 233 | return vk::PrimitiveTopology::eTriangleList; | 234 | return vk::PrimitiveTopology::eTriangleList; |
| 234 | case Maxwell::PrimitiveTopology::TriangleStrip: | 235 | case Maxwell::PrimitiveTopology::TriangleStrip: |
| 235 | return vk::PrimitiveTopology::eTriangleStrip; | 236 | return vk::PrimitiveTopology::eTriangleStrip; |
| 237 | case Maxwell::PrimitiveTopology::TriangleFan: | ||
| 238 | return vk::PrimitiveTopology::eTriangleFan; | ||
| 239 | case Maxwell::PrimitiveTopology::Quads: | ||
| 240 | // TODO(Rodrigo): Use VK_PRIMITIVE_TOPOLOGY_QUAD_LIST_EXT whenever it releases | ||
| 241 | return vk::PrimitiveTopology::eTriangleList; | ||
| 242 | case Maxwell::PrimitiveTopology::Patches: | ||
| 243 | return vk::PrimitiveTopology::ePatchList; | ||
| 236 | default: | 244 | default: |
| 237 | UNIMPLEMENTED_MSG("Unimplemented topology={}", static_cast<u32>(topology)); | 245 | UNIMPLEMENTED_MSG("Unimplemented topology={}", static_cast<u32>(topology)); |
| 238 | return {}; | 246 | return {}; |
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.h b/src/video_core/renderer_vulkan/maxwell_to_vk.h index dd9de1d24..8b5e3415c 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.h +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.h | |||
| @@ -35,7 +35,8 @@ std::pair<vk::Format, bool> SurfaceFormat(const VKDevice& device, FormatType for | |||
| 35 | 35 | ||
| 36 | vk::ShaderStageFlagBits ShaderStage(Tegra::Engines::ShaderType stage); | 36 | vk::ShaderStageFlagBits ShaderStage(Tegra::Engines::ShaderType stage); |
| 37 | 37 | ||
| 38 | vk::PrimitiveTopology PrimitiveTopology(Maxwell::PrimitiveTopology topology); | 38 | vk::PrimitiveTopology PrimitiveTopology(const VKDevice& device, |
| 39 | Maxwell::PrimitiveTopology topology); | ||
| 39 | 40 | ||
| 40 | vk::Format VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size); | 41 | vk::Format VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size); |
| 41 | 42 | ||