2016-08-13 06:57:50 -06:00
|
|
|
// Copyright 2016 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2016-09-30 21:07:50 -06:00
|
|
|
#include <memory>
|
2016-08-13 06:57:50 -06:00
|
|
|
#include <vector>
|
|
|
|
|
2016-09-30 21:07:50 -06:00
|
|
|
#include "Common/CommonTypes.h"
|
2016-08-13 06:57:50 -06:00
|
|
|
#include "VideoCommon/VertexManagerBase.h"
|
|
|
|
|
|
|
|
namespace Vulkan
|
|
|
|
{
|
|
|
|
class StreamBuffer;
|
|
|
|
|
|
|
|
class VertexManager : public VertexManagerBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
VertexManager();
|
|
|
|
~VertexManager();
|
|
|
|
|
2016-10-22 04:50:36 -06:00
|
|
|
static VertexManager* GetInstance();
|
|
|
|
|
|
|
|
bool Initialize();
|
2016-08-13 06:57:50 -06:00
|
|
|
|
2017-02-18 01:14:30 -07:00
|
|
|
std::unique_ptr<NativeVertexFormat>
|
|
|
|
CreateNativeVertexFormat(const PortableVertexDeclaration& vtx_decl) override;
|
2016-08-13 06:57:50 -06:00
|
|
|
|
|
|
|
protected:
|
|
|
|
void PrepareDrawBuffers(u32 stride);
|
|
|
|
void ResetBuffer(u32 stride) override;
|
|
|
|
|
|
|
|
private:
|
2016-12-27 17:37:41 -07:00
|
|
|
void vFlush() override;
|
2016-08-13 06:57:50 -06:00
|
|
|
|
|
|
|
std::vector<u8> m_cpu_vertex_buffer;
|
|
|
|
std::vector<u16> m_cpu_index_buffer;
|
|
|
|
|
|
|
|
std::unique_ptr<StreamBuffer> m_vertex_stream_buffer;
|
|
|
|
std::unique_ptr<StreamBuffer> m_index_stream_buffer;
|
|
|
|
|
|
|
|
u32 m_current_draw_base_vertex = 0;
|
|
|
|
u32 m_current_draw_base_index = 0;
|
|
|
|
};
|
|
|
|
}
|