summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-12-13 02:41:29 -0300
committerGravatar ReinUsesLisp2019-12-13 03:12:28 -0300
commit8db8631d81c4d7bac7694bef0ebf0e6f1e9f4749 (patch)
treeb0d013563ad425796a411553ea79459eddbfcbba /src
parentmaxwell_to_vk: Approach GL_CLAMP closer to the GL spec (diff)
downloadyuzu-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.cpp10
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.h3
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
224vk::PrimitiveTopology PrimitiveTopology(Maxwell::PrimitiveTopology topology) { 224vk::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
36vk::ShaderStageFlagBits ShaderStage(Tegra::Engines::ShaderType stage); 36vk::ShaderStageFlagBits ShaderStage(Tegra::Engines::ShaderType stage);
37 37
38vk::PrimitiveTopology PrimitiveTopology(Maxwell::PrimitiveTopology topology); 38vk::PrimitiveTopology PrimitiveTopology(const VKDevice& device,
39 Maxwell::PrimitiveTopology topology);
39 40
40vk::Format VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size); 41vk::Format VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size);
41 42