+#include <cstdlib>
#include <msp/graphics/vulkancontext_platform.h>
+#include <msp/strings/lexicalcast.h>
#include "device.h"
#include "device_backend.h"
#include "vulkan.h"
+using namespace std;
+
namespace Msp {
namespace GL {
functions(new VulkanFunctions(context)),
allocator(*static_cast<Device *>(this)),
destroy_queue(*static_cast<Device *>(this)),
+ synchronizer(*static_cast<Device *>(this)),
transfer_queue(*static_cast<Device *>(this)),
- pipeline_cache(*static_cast<Device *>(this))
+ pipeline_cache(*static_cast<Device *>(this)),
+ descriptor_pool(*static_cast<Device *>(this))
{ }
// Cause the destructor of RefPtr<VulkanFunctions> to be emitted here
Graphics::VulkanOptions VulkanDevice::create_default_options()
{
Graphics::VulkanOptions opts;
+ opts.enable_geometry_shader = true;
+ opts.enable_tessellation_shader = true;
#ifdef DEBUG
- opts.enable_validation = true;
+ const char *disable_ptr = getenv("MSPGL_DISABLE_VALIDATION");
+ if(disable_ptr && *disable_ptr)
+ opts.enable_validation = !lexical_cast<bool>(string(disable_ptr));
+ else
+ opts.enable_validation = true;
opts.enable_debug_report = true;
#endif
return opts;
limits.max_clip_planes = props.limits.maxClipDistances;
limits.max_vertex_attributes = props.limits.maxVertexInputAttributes;
limits.max_texture_bindings = props.limits.maxDescriptorSetSampledImages;
+ limits.max_storage_texture_bindings = props.limits.maxDescriptorSetStorageImages;
limits.max_color_attachments = props.limits.maxColorAttachments;
unsigned samples = props.limits.framebufferColorSampleCounts&props.limits.framebufferDepthSampleCounts&props.limits.framebufferStencilSampleCounts;
if(samples&VK_SAMPLE_COUNT_64_BIT)