Browse Source

Add VulkanImage stub, enable vulkan for Demo test

Signed-off-by: falkTX <falktx@falktx.com>
pull/272/head
falkTX 4 years ago
parent
commit
d3591e3e7b
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
5 changed files with 110 additions and 2 deletions
  1. +3
    -1
      dgl/Cairo.hpp
  2. +65
    -1
      dgl/Vulkan.hpp
  3. +34
    -0
      dgl/src/Vulkan.cpp
  4. +7
    -0
      tests/Demo.cpp
  5. +1
    -0
      tests/Makefile

+ 3
- 1
dgl/Cairo.hpp View File

@@ -91,8 +91,10 @@ public:
CairoImage& operator=(const CairoImage& image) noexcept;

// FIXME this should not be needed
inline void loadFromMemory(const char* rawData, uint w, uint h, ImageFormat format)
inline void loadFromMemory(const char* rawData, uint w, uint h, ImageFormat format = kImageFormatBGRA)
{ loadFromMemory(rawData, Size<uint>(w, h), format); };
inline void draw(const GraphicsContext& context)
{ drawAt(context, Point<int>(0, 0)); };
inline void drawAt(const GraphicsContext& context, int x, int y)
{ drawAt(context, Point<int>(x, y)); };



+ 65
- 1
dgl/Vulkan.hpp View File

@@ -17,7 +17,7 @@
#ifndef DGL_VULKAN_HPP_INCLUDED
#define DGL_VULKAN_HPP_INCLUDED

#include "Base.hpp"
#include "ImageBase.hpp"

#include <vulkan/vulkan_core.h>

@@ -34,6 +34,70 @@ struct VulkanGraphicsContext : GraphicsContext

// --------------------------------------------------------------------------------------------------------------------

/**
Vulkan Image class.

TODO ...
*/
class VulkanImage : public ImageBase
{
public:
/**
Constructor for a null Image.
*/
VulkanImage();

/**
Constructor using raw image data.
@note @a rawData must remain valid for the lifetime of this Image.
*/
VulkanImage(const char* rawData, uint width, uint height, ImageFormat format);

/**
Constructor using raw image data.
@note @a rawData must remain valid for the lifetime of this Image.
*/
VulkanImage(const char* rawData, const Size<uint>& size, ImageFormat format);

/**
Constructor using another image data.
*/
VulkanImage(const VulkanImage& image);

/**
Destructor.
*/
~VulkanImage() override;

/**
Load image data from memory.
@note @a rawData must remain valid for the lifetime of this Image.
*/
void loadFromMemory(const char* rawData,
const Size<uint>& size,
ImageFormat format = kImageFormatBGRA) noexcept override;

/**
Draw this image at position @a pos using the graphics context @a context.
*/
void drawAt(const GraphicsContext& context, const Point<int>& pos) override;

/**
TODO document this.
*/
VulkanImage& operator=(const VulkanImage& image) noexcept;

// FIXME this should not be needed
inline void loadFromMemory(const char* rawData, uint w, uint h, ImageFormat format = kImageFormatBGRA)
{ loadFromMemory(rawData, Size<uint>(w, h), format); };
inline void draw(const GraphicsContext& context)
{ drawAt(context, Point<int>(0, 0)); };
inline void drawAt(const GraphicsContext& context, int x, int y)
{ drawAt(context, Point<int>(x, y)); };
};

// --------------------------------------------------------------------------------------------------------------------

END_NAMESPACE_DGL

#endif

+ 34
- 0
dgl/src/Vulkan.cpp View File

@@ -164,6 +164,40 @@ template class Rectangle<uint>;
template class Rectangle<short>;
template class Rectangle<ushort>;

// -----------------------------------------------------------------------
// VulkanImage

VulkanImage::VulkanImage()
: ImageBase() {}

VulkanImage::VulkanImage(const char* const rawData, const uint width, const uint height, const ImageFormat format)
: ImageBase(rawData, width, height, format) {}

VulkanImage::VulkanImage(const char* const rawData, const Size<uint>& size, const ImageFormat format)
: ImageBase(rawData, size, format) {}

VulkanImage::VulkanImage(const VulkanImage& image)
: ImageBase(image.rawData, image.size, image.format) {}

VulkanImage::~VulkanImage() {}

void VulkanImage::loadFromMemory(const char* const rdata, const Size<uint>& s, const ImageFormat fmt) noexcept
{
ImageBase::loadFromMemory(rdata, s, fmt);
}

void VulkanImage::drawAt(const GraphicsContext&, const Point<int>&)
{
}

VulkanImage& VulkanImage::operator=(const VulkanImage& image) noexcept
{
rawData = image.rawData;
size = image.size;
format = image.format;
return *this;
}

// -----------------------------------------------------------------------

void SubWidget::PrivateData::display(const uint width, const uint height, const double autoScaleFactor)


+ 7
- 0
tests/Demo.cpp View File

@@ -35,6 +35,10 @@ typedef DGL_NAMESPACE::CairoImage DemoImage;
#include "../dgl/OpenGL.hpp"
typedef DGL_NAMESPACE::OpenGLImage DemoImage;
#endif
#ifdef DGL_VULKAN
#include "../dgl/Vulkan.hpp"
typedef DGL_NAMESPACE::VulkanImage DemoImage;
#endif

START_NAMESPACE_DGL

@@ -245,6 +249,9 @@ public:
#ifdef DGL_OPENGL
static constexpr const char* const kExampleWidgetName = "Demo - OpenGL";
#endif
#ifdef DGL_VULKAN
static constexpr const char* const kExampleWidgetName = "Demo - Vulkan";
#endif

DemoWindow(Application& app)
: StandaloneWindow(app),


+ 1
- 0
tests/Makefile View File

@@ -27,6 +27,7 @@ TESTS += Demo.opengl
WTESTS += Window.opengl
endif
ifeq ($(HAVE_VULKAN),true)
TESTS += Demo.vulkan
WTESTS = Window.vulkan
endif



Loading…
Cancel
Save