summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2017-05-22 10:23:16 +0200
committerMarc Mutz <marc.mutz@kdab.com>2017-05-22 08:50:05 +0000
commitd3f1076d0a3b8b0f44250399ea325020bbe9a0fd (patch)
tree362585a9e1428ddb39eb839f2c01832551fc1c7d
parent6ec3a972971a6a83b74f5ccbb24c7bb088a863d3 (diff)
QVulkanWindow: use QVector, not QSet, for small int set
Apart from being more efficient to construct and test, for the expected very small number of entries, the example code itself shows that a sorted vector is much more useful than an unordered set. Change-Id: Ic5e38df0176ac4be08eac6a89c2e1cabab2a9020 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
-rw-r--r--examples/vulkan/hellovulkancubes/renderer.cpp2
-rw-r--r--examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp3
-rw-r--r--examples/vulkan/shared/trianglerenderer.cpp2
-rw-r--r--src/gui/vulkan/qvulkanwindow.cpp9
-rw-r--r--src/gui/vulkan/qvulkanwindow.h2
5 files changed, 9 insertions, 9 deletions
diff --git a/examples/vulkan/hellovulkancubes/renderer.cpp b/examples/vulkan/hellovulkancubes/renderer.cpp
index 96ae6020a7..3b837d85d4 100644
--- a/examples/vulkan/hellovulkancubes/renderer.cpp
+++ b/examples/vulkan/hellovulkancubes/renderer.cpp
@@ -97,7 +97,7 @@ Renderer::Renderer(VulkanWindow *w, int initialCount)
void Renderer::preInitResources()
{
- QSet<int> sampleCounts = m_window->supportedSampleCounts();
+ const QVector<int> sampleCounts = m_window->supportedSampleCounts();
if (DBG)
qDebug() << "Supported sample counts:" << sampleCounts;
if (sampleCounts.contains(4)) {
diff --git a/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp b/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp
index 78de338f1f..81daa9bb96 100644
--- a/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp
+++ b/examples/vulkan/hellovulkanwidget/hellovulkanwidget.cpp
@@ -170,8 +170,7 @@ void VulkanRenderer::initResources()
m_window->colorFormat(), m_window->depthStencilFormat());
info += QStringLiteral("Supported sample counts:");
- QList<int> sampleCounts = m_window->supportedSampleCounts().toList();
- std::sort(sampleCounts.begin(), sampleCounts.end());
+ const QVector<int> sampleCounts = m_window->supportedSampleCounts();
for (int count : sampleCounts)
info += QLatin1Char(' ') + QString::number(count);
info += QLatin1Char('\n');
diff --git a/examples/vulkan/shared/trianglerenderer.cpp b/examples/vulkan/shared/trianglerenderer.cpp
index a0800080a0..7327c5a706 100644
--- a/examples/vulkan/shared/trianglerenderer.cpp
+++ b/examples/vulkan/shared/trianglerenderer.cpp
@@ -73,7 +73,7 @@ TriangleRenderer::TriangleRenderer(QVulkanWindow *w, bool msaa)
: m_window(w)
{
if (msaa) {
- QSet<int> counts = w->supportedSampleCounts();
+ const QVector<int> counts = w->supportedSampleCounts();
qDebug() << "Supported sample counts:" << counts;
for (int s = 16; s >= 4; s /= 2) {
if (counts.contains(s)) {
diff --git a/src/gui/vulkan/qvulkanwindow.cpp b/src/gui/vulkan/qvulkanwindow.cpp
index 82c157147c..a9f5bb41df 100644
--- a/src/gui/vulkan/qvulkanwindow.cpp
+++ b/src/gui/vulkan/qvulkanwindow.cpp
@@ -512,6 +512,7 @@ static struct {
VkSampleCountFlagBits mask;
int count;
} qvk_sampleCounts[] = {
+ // keep this sorted by 'count'
{ VK_SAMPLE_COUNT_1_BIT, 1 },
{ VK_SAMPLE_COUNT_2_BIT, 2 },
{ VK_SAMPLE_COUNT_4_BIT, 4 },
@@ -523,7 +524,7 @@ static struct {
/*!
Returns the set of supported sample counts when using the physical device
- selected by setPhysicalDeviceIndex().
+ selected by setPhysicalDeviceIndex(), as a sorted vector.
By default QVulkanWindow uses a sample count of 1. By calling setSampleCount()
with a different value (2, 4, 8, ...) from the set returned by this
@@ -533,10 +534,10 @@ static struct {
\sa setSampleCount()
*/
-QSet<int> QVulkanWindow::supportedSampleCounts()
+QVector<int> QVulkanWindow::supportedSampleCounts()
{
Q_D(const QVulkanWindow);
- QSet<int> result;
+ QVector<int> result;
availablePhysicalDevices();
@@ -555,7 +556,7 @@ QSet<int> QVulkanWindow::supportedSampleCounts()
&& (depth & qvk_sampleCounts[i].mask)
&& (stencil & qvk_sampleCounts[i].mask))
{
- result.insert(qvk_sampleCounts[i].count);
+ result.append(qvk_sampleCounts[i].count);
}
}
diff --git a/src/gui/vulkan/qvulkanwindow.h b/src/gui/vulkan/qvulkanwindow.h
index c32c40d459..bbeba15603 100644
--- a/src/gui/vulkan/qvulkanwindow.h
+++ b/src/gui/vulkan/qvulkanwindow.h
@@ -96,7 +96,7 @@ public:
void setPreferredColorFormats(const QVector<VkFormat> &formats);
- QSet<int> supportedSampleCounts();
+ QVector<int> supportedSampleCounts();
void setSampleCount(int sampleCount);
bool isValid() const;