Browse Source

Vk: this DeviceCreateInfo constructor is garbage.

It only adds confusion and can be replaced by only a moderately longer
but infinitely more descriptive oneliner. Delete.
pull/234/head
Vladimír Vondruš 6 years ago
parent
commit
c6f377b45f
  1. 3
      doc/snippets/MagnumVk.cpp
  2. 2
      src/Magnum/Vk/Device.cpp
  3. 8
      src/Magnum/Vk/Device.h
  4. 31
      src/Magnum/Vk/Test/DeviceVkTest.cpp

3
doc/snippets/MagnumVk.cpp

@ -50,7 +50,6 @@ if(device.isExtensionEnabled<Vk::Extensions::EXT::index_type_uint8>()) {
} }
{ {
Vk::Instance instance;
/* Header included again inside a function, but it's fine as the guards will /* Header included again inside a function, but it's fine as the guards will
make it empty */ make it empty */
/* [Device-global-function-pointers] */ /* [Device-global-function-pointers] */
@ -58,7 +57,7 @@ Vk::Instance instance;
// … // …
Vk::Device device{DOXYGEN_IGNORE(instance, Vk::DeviceCreateInfo{instance})}; Vk::Device device{DOXYGEN_IGNORE(NoCreate)};
device.populateGlobalFunctionPointers(); device.populateGlobalFunctionPointers();
VkCommandPool commandPool; VkCommandPool commandPool;

2
src/Magnum/Vk/Device.cpp

@ -115,8 +115,6 @@ DeviceCreateInfo::DeviceCreateInfo(DeviceProperties& deviceProperties, const Ext
} }
} }
DeviceCreateInfo::DeviceCreateInfo(Instance& instance, const Flags flags): DeviceCreateInfo{pickDevice(instance), flags} {}
DeviceCreateInfo::DeviceCreateInfo(NoInitT) noexcept {} DeviceCreateInfo::DeviceCreateInfo(NoInitT) noexcept {}
DeviceCreateInfo::DeviceCreateInfo(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo& info): _physicalDevice{physicalDevice}, DeviceCreateInfo::DeviceCreateInfo(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo& info): _physicalDevice{physicalDevice},

8
src/Magnum/Vk/Device.h

@ -116,14 +116,6 @@ class MAGNUM_VK_EXPORT DeviceCreateInfo {
/** @overload */ /** @overload */
explicit DeviceCreateInfo(DeviceProperties&& deviceProperties, Flags flags = {}): DeviceCreateInfo{std::move(deviceProperties), nullptr, flags} {} explicit DeviceCreateInfo(DeviceProperties&& deviceProperties, Flags flags = {}): DeviceCreateInfo{std::move(deviceProperties), nullptr, flags} {}
/**
* @brief Construct for an implicitly picked device
*
* Calls @ref DeviceCreateInfo(DeviceProperties&, const ExtensionProperties*, Flags)
* with a device picked from @p instance using @ref pickDevice().
*/
explicit DeviceCreateInfo(Instance& instance, Flags flags = {});
/** /**
* @brief Construct without initializing the contents * @brief Construct without initializing the contents
* *

31
src/Magnum/Vk/Test/DeviceVkTest.cpp

@ -49,7 +49,6 @@ struct DeviceVkTest: VulkanTester {
explicit DeviceVkTest(); explicit DeviceVkTest();
void createInfoConstruct(); void createInfoConstruct();
void createInfoConstructImplicitDevice();
void createInfoConstructNoImplicitExtensions(); void createInfoConstructNoImplicitExtensions();
void createInfoExtensions(); void createInfoExtensions();
void createInfoCopiedStrings(); void createInfoCopiedStrings();
@ -122,7 +121,6 @@ struct {
DeviceVkTest::DeviceVkTest(): VulkanTester{NoCreate} { DeviceVkTest::DeviceVkTest(): VulkanTester{NoCreate} {
addTests({&DeviceVkTest::createInfoConstruct, addTests({&DeviceVkTest::createInfoConstruct,
&DeviceVkTest::createInfoConstructImplicitDevice,
&DeviceVkTest::createInfoConstructNoImplicitExtensions, &DeviceVkTest::createInfoConstructNoImplicitExtensions,
&DeviceVkTest::createInfoExtensions, &DeviceVkTest::createInfoExtensions,
&DeviceVkTest::createInfoCopiedStrings, &DeviceVkTest::createInfoCopiedStrings,
@ -156,15 +154,8 @@ void DeviceVkTest::createInfoConstruct() {
/* Extensions might or might not be enabled */ /* Extensions might or might not be enabled */
} }
void DeviceVkTest::createInfoConstructImplicitDevice() {
DeviceCreateInfo info{instance()};
CORRADE_VERIFY(info->sType);
CORRADE_VERIFY(!info->pNext);
/* Extensions might or might not be enabled */
}
void DeviceVkTest::createInfoConstructNoImplicitExtensions() { void DeviceVkTest::createInfoConstructNoImplicitExtensions() {
DeviceCreateInfo info{instance(), DeviceCreateInfo::Flag::NoImplicitExtensions}; DeviceCreateInfo info{pickDevice(instance()), DeviceCreateInfo::Flag::NoImplicitExtensions};
CORRADE_VERIFY(info->sType); CORRADE_VERIFY(info->sType);
CORRADE_VERIFY(!info->pNext); CORRADE_VERIFY(!info->pNext);
/* No extensions enabled as we explicitly disabled that */ /* No extensions enabled as we explicitly disabled that */
@ -176,7 +167,7 @@ void DeviceVkTest::createInfoExtensions() {
if(std::getenv("MAGNUM_DISABLE_EXTENSIONS")) if(std::getenv("MAGNUM_DISABLE_EXTENSIONS"))
CORRADE_SKIP("Can't test with the MAGNUM_DISABLE_EXTENSIONS environment variable set"); CORRADE_SKIP("Can't test with the MAGNUM_DISABLE_EXTENSIONS environment variable set");
DeviceCreateInfo info{instance(), DeviceCreateInfo::Flag::NoImplicitExtensions}; DeviceCreateInfo info{pickDevice(instance()), DeviceCreateInfo::Flag::NoImplicitExtensions};
CORRADE_VERIFY(!info->ppEnabledExtensionNames); CORRADE_VERIFY(!info->ppEnabledExtensionNames);
CORRADE_COMPARE(info->enabledExtensionCount, 0); CORRADE_COMPARE(info->enabledExtensionCount, 0);
@ -205,7 +196,7 @@ void DeviceVkTest::createInfoCopiedStrings() {
Containers::StringView globalButNotNullTerminated = "VK_KHR_maintenance25"_s.except(1); Containers::StringView globalButNotNullTerminated = "VK_KHR_maintenance25"_s.except(1);
Containers::String localButNullTerminated = Extensions::KHR::draw_indirect_count::string(); Containers::String localButNullTerminated = Extensions::KHR::draw_indirect_count::string();
DeviceCreateInfo info{instance(), DeviceCreateInfo::Flag::NoImplicitExtensions}; DeviceCreateInfo info{pickDevice(instance()), DeviceCreateInfo::Flag::NoImplicitExtensions};
info.addEnabledExtensions({ info.addEnabledExtensions({
globalButNotNullTerminated, globalButNotNullTerminated,
localButNullTerminated localButNullTerminated
@ -226,7 +217,7 @@ void DeviceVkTest::createInfoNoQueuePriorities() {
std::ostringstream out; std::ostringstream out;
Error redirectError{&out}; Error redirectError{&out};
DeviceCreateInfo{instance()}.addQueues(0, {}, {}); DeviceCreateInfo{pickDevice(instance())}.addQueues(0, {}, {});
CORRADE_COMPARE(out.str(), "Vk::DeviceCreateInfo::addQueues(): at least one queue priority has to be specified\n"); CORRADE_COMPARE(out.str(), "Vk::DeviceCreateInfo::addQueues(): at least one queue priority has to be specified\n");
} }
@ -238,7 +229,7 @@ void DeviceVkTest::createInfoWrongQueueOutputCount() {
std::ostringstream out; std::ostringstream out;
Error redirectError{&out}; Error redirectError{&out};
Queue a{NoCreate}, b{NoCreate}; Queue a{NoCreate}, b{NoCreate};
DeviceCreateInfo{instance()}.addQueues(0, {0.0f, 1.0f, 0.3f}, {a, b}); DeviceCreateInfo{pickDevice(instance())}.addQueues(0, {0.0f, 1.0f, 0.3f}, {a, b});
CORRADE_COMPARE(out.str(), "Vk::DeviceCreateInfo::addQueues(): expected 3 outuput queue references but got 2\n"); CORRADE_COMPARE(out.str(), "Vk::DeviceCreateInfo::addQueues(): expected 3 outuput queue references but got 2\n");
} }
@ -400,7 +391,7 @@ void DeviceVkTest::constructExtensionsCommandLineEnable() {
std::ostringstream out; std::ostringstream out;
Debug redirectOutput{&out}; Debug redirectOutput{&out};
Queue queue{NoCreate}; Queue queue{NoCreate};
Device device{instance2, DeviceCreateInfo{instance2, DeviceCreateInfo::Flag::NoImplicitExtensions} Device device{instance2, DeviceCreateInfo{pickDevice(instance2), DeviceCreateInfo::Flag::NoImplicitExtensions}
.addQueues(0, {0.0f}, {queue}) .addQueues(0, {0.0f}, {queue})
/* Nothing enabled by the application */ /* Nothing enabled by the application */
}; };
@ -495,7 +486,7 @@ void DeviceVkTest::constructRawQueue() {
rawQueueInfo.pQueuePriorities = &zero; rawQueueInfo.pQueuePriorities = &zero;
rawQueueInfo.queueFamilyIndex = 0; rawQueueInfo.queueFamilyIndex = 0;
rawQueueInfo.queueCount = 1; rawQueueInfo.queueCount = 1;
Device device{instance(), DeviceCreateInfo{instance()} Device device{instance(), DeviceCreateInfo{pickDevice(instance())}
.addQueues(rawQueueInfo)}; .addQueues(rawQueueInfo)};
/* Fetch the raw queue */ /* Fetch the raw queue */
@ -553,7 +544,7 @@ void DeviceVkTest::constructUnknownExtension() {
std::ostringstream out; std::ostringstream out;
Error redirectError{&out}; Error redirectError{&out};
Queue queue{NoCreate}; Queue queue{NoCreate};
Device device{instance(), DeviceCreateInfo{instance()} Device device{instance(), DeviceCreateInfo{pickDevice(instance())}
.addQueues(0, {0.0f}, {queue}) .addQueues(0, {0.0f}, {queue})
.addEnabledExtensions({"VK_this_doesnt_exist"_s})}; .addEnabledExtensions({"VK_this_doesnt_exist"_s})};
CORRADE_COMPARE(out.str(), "TODO"); CORRADE_COMPARE(out.str(), "TODO");
@ -566,7 +557,7 @@ void DeviceVkTest::constructNoQueue() {
std::ostringstream out; std::ostringstream out;
Error redirectError{&out}; Error redirectError{&out};
Device device{instance(), DeviceCreateInfo{instance()}}; Device device{instance(), DeviceCreateInfo{pickDevice(instance())}};
CORRADE_COMPARE(out.str(), "Vk::Device: needs to be created with at least one queue\n"); CORRADE_COMPARE(out.str(), "Vk::Device: needs to be created with at least one queue\n");
} }
@ -598,7 +589,7 @@ void DeviceVkTest::wrap() {
VkDevice device; VkDevice device;
Queue queue{NoCreate}; Queue queue{NoCreate};
CORRADE_COMPARE(Result(instance2->CreateDevice(deviceProperties, CORRADE_COMPARE(Result(instance2->CreateDevice(deviceProperties,
DeviceCreateInfo{instance2} DeviceCreateInfo{pickDevice(instance2)}
.addQueues(0, {0.0f}, {queue}) .addQueues(0, {0.0f}, {queue})
.addEnabledExtensions< .addEnabledExtensions<
Extensions::EXT::debug_marker, Extensions::EXT::debug_marker,
@ -646,7 +637,7 @@ void DeviceVkTest::populateGlobalFunctionPointers() {
vkDestroyDevice = nullptr; vkDestroyDevice = nullptr;
Queue queue{NoCreate}; Queue queue{NoCreate};
Device device{instance(), DeviceCreateInfo{instance()} Device device{instance(), DeviceCreateInfo{pickDevice(instance())}
.addQueues(0, {0.0f}, {queue}) .addQueues(0, {0.0f}, {queue})
}; };
CORRADE_VERIFY(!vkDestroyDevice); CORRADE_VERIFY(!vkDestroyDevice);

Loading…
Cancel
Save