Browse Source

Some merge conflicts resolved WIP

I hope this concludes this git dilemma :P

Signed-off-by: Squareys <squareys@googlemail.com>
pull/202/head
Squareys 10 years ago committed by Squareys
parent
commit
c25faa3f1d
  1. 34
      src/Magnum/Vk/Context.cpp
  2. 23
      src/Magnum/Vk/Context.h
  3. 7
      src/Magnum/Vk/Test/AbstractVulkanTester.h
  4. 1
      src/Magnum/Vk/Test/CMakeLists.txt

34
src/Magnum/Vk/Context.cpp

@ -30,8 +30,13 @@
#include <Corrade/Utility/String.h>
#include "vulkan.h"
namespace Magnum { namespace Vk {
PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
unsigned int layerCount = 2;
const char *validationLayerNames[] =
{
@ -51,10 +56,8 @@ Context& Context::current() {
return *_current;
}
Context::Context(NoCreateT, Int argc, char** argv, void functionLoader()): _functionLoader{functionLoader}, _version{Version::None} {
Utility::Arguments args{"magnum"};
args.parse(argc, argv);
}
Context::Context(): Context{Flags{}} {}
Context::Context(Flags flags): _functionLoader{nullptr}, _version{Version::None}, _flags(flags) {
create();
@ -75,7 +78,7 @@ Context::~Context() {
}
if (_flags >= Flag::EnableValidation) {
//DestroyDebugReportCallback(_instance, msgCallback, nullptr);
vkDestroyDebugReportCallbackEXT(_instance, _callback, nullptr);
}
vkDestroyInstance(_instance, nullptr);
}
@ -95,7 +98,16 @@ VKAPI_ATTR VkBool32 VKAPI_CALL MyDebugReportCallback(
const char* pMessage,
void* pUserData)
{
Error() << pMessage;
if(flags & VK_DEBUG_REPORT_DEBUG_BIT_EXT != 0) {
Debug() << "[Debug][" << pLayerPrefix << "]" << pMessage;
} else if(flags & VK_DEBUG_REPORT_ERROR_BIT_EXT) {
Error() << "[Error][" << pLayerPrefix << "]" << pMessage;
} else if(flags & VK_DEBUG_REPORT_WARNING_BIT_EXT) {
Warning() << "[Warning][" << pLayerPrefix << "]" << pMessage;
} else if(flags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT) {
Warning() << "[Perf Warning][" << pLayerPrefix << "]" << pMessage;
}
return VK_FALSE;
}
@ -141,13 +153,13 @@ bool Context::tryCreate() {
/* setup debugging */
if (_flags >= Flag::EnableValidation) {
/* Load VK_EXT_debug_report entry points in debug builds */
PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT =
vkCreateDebugReportCallbackEXT =
reinterpret_cast<PFN_vkCreateDebugReportCallbackEXT>
(vkGetInstanceProcAddr(_instance, "vkCreateDebugReportCallbackEXT"));
PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT =
vkDebugReportMessageEXT =
reinterpret_cast<PFN_vkDebugReportMessageEXT>
(vkGetInstanceProcAddr(_instance, "vkDebugReportMessageEXT"));
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT =
vkDestroyDebugReportCallbackEXT =
reinterpret_cast<PFN_vkDestroyDebugReportCallbackEXT>
(vkGetInstanceProcAddr(_instance, "vkDestroyDebugReportCallbackEXT"));
@ -162,8 +174,8 @@ bool Context::tryCreate() {
callbackCreateInfo.pUserData = nullptr;
/* Register the callback */
VkDebugReportCallbackEXT callback;
VkResult err = vkCreateDebugReportCallbackEXT(_instance, &callbackCreateInfo, nullptr, &callback);
VkResult err = vkCreateDebugReportCallbackEXT(_instance, &callbackCreateInfo, nullptr, &_callback);
if (err != VK_SUCCESS) {
Error() << "Could not setup Debug callback";
}

23
src/Magnum/Vk/Context.h

@ -37,6 +37,7 @@
#include <bitset>
#include <vector>
#include <Corrade/Containers/EnumSet.h>
#include <Corrade/Utility/Debug.h>
#include "Magnum/Tags.h"
#include "Magnum/Magnum.h"
@ -50,6 +51,16 @@ enum class Version: UnsignedInt {
Vulkan_1_0 = VK_API_VERSION_1_0, /**< Vulkan 1.0 */
};
#define MAGNUM_VK_ASSERT_ERROR(err) \
do { \
const VkResult r = err; \
if(r != VK_SUCCESS) { \
Error() << "(File:" << __FILE__ \
<< ", Line:" << __LINE__ \
<< ") Vulkan error:" << Vk::Result(r); \
} \
} while(false)
#define VK_ERROR_INVALID_PARAMETER_NV -1000013000
#define VK_ERROR_INVALID_ALIGNMENT_NV -1000013001
@ -140,6 +151,12 @@ class MAGNUM_VK_EXPORT Context {
*/
static Context& current();
/** @brief Constructor */
Context();
/**
* @brief Constructor with flags
*/
Context(Flags flags);
/** @brief Copying is not allowed */
@ -148,6 +165,11 @@ class MAGNUM_VK_EXPORT Context {
/** @brief Move constructor */
Context(Context&& other);
/**
* @brief Destructor
*
* @see @fn_vk{DestroyInstance}
*/
~Context();
/** @brief Copying is not allowed */
@ -186,6 +208,7 @@ class MAGNUM_VK_EXPORT Context {
Flags _flags;
VkInstance _instance;
VkDebugReportCallbackEXT _callback;
};
MAGNUM_VK_EXPORT Debug& operator<<(Debug& debug, Result value);

7
src/Magnum/Vk/Test/AbstractVulkanTester.h

@ -28,7 +28,9 @@
#include <Corrade/TestSuite/Tester.h>
namespace Magnum { namespace Test {
using namespace Corrade;
namespace Magnum { namespace Vk { namespace Test {
class AbstractVulkanTester: public TestSuite::Tester {
public:
@ -60,6 +62,7 @@ AbstractVulkanTester::AbstractVulkanTester(): TestSuite::Tester{TestSuite::Teste
}
#endif
}}
}}}
#endif

1
src/Magnum/Vk/Test/CMakeLists.txt

@ -28,6 +28,7 @@ corrade_add_test(VkContextTest ContextTest.cpp LIBRARIES MagnumVk)
if(BUILD_VK_TESTS)
corrade_add_test(ContextVkTest ContextVkTest.cpp LIBRARIES ${VK_TEST_LIBRARIES})
corrade_add_test(CommandTest CommandTest.cpp LIBRARIES ${VK_TEST_LIBRARIES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/configure.h)

Loading…
Cancel
Save