mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 15:31:17 +01:00
Vulkan: Move texture upload buffer to ObjectCache
This commit is contained in:
parent
36ce47635b
commit
e03b8e899e
@ -54,6 +54,15 @@ bool ObjectCache::Initialize()
|
|||||||
if (!CreateStaticSamplers())
|
if (!CreateStaticSamplers())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
m_texture_upload_buffer =
|
||||||
|
StreamBuffer::Create(VK_BUFFER_USAGE_TRANSFER_SRC_BIT, INITIAL_TEXTURE_UPLOAD_BUFFER_SIZE,
|
||||||
|
MAXIMUM_TEXTURE_UPLOAD_BUFFER_SIZE);
|
||||||
|
if (!m_texture_upload_buffer)
|
||||||
|
{
|
||||||
|
PanicAlert("Failed to create texture upload buffer");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
m_utility_shader_vertex_buffer =
|
m_utility_shader_vertex_buffer =
|
||||||
StreamBuffer::Create(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, 1024 * 1024, 4 * 1024 * 1024);
|
StreamBuffer::Create(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, 1024 * 1024, 4 * 1024 * 1024);
|
||||||
m_utility_shader_uniform_buffer =
|
m_utility_shader_uniform_buffer =
|
||||||
|
@ -58,6 +58,7 @@ public:
|
|||||||
{
|
{
|
||||||
return m_utility_shader_uniform_buffer.get();
|
return m_utility_shader_uniform_buffer.get();
|
||||||
}
|
}
|
||||||
|
StreamBuffer* GetTextureUploadBuffer() const { return m_texture_upload_buffer.get(); }
|
||||||
|
|
||||||
// Static samplers
|
// Static samplers
|
||||||
VkSampler GetPointSampler() const { return m_point_sampler; }
|
VkSampler GetPointSampler() const { return m_point_sampler; }
|
||||||
@ -94,6 +95,7 @@ private:
|
|||||||
std::unique_ptr<VertexFormat> m_utility_shader_vertex_format;
|
std::unique_ptr<VertexFormat> m_utility_shader_vertex_format;
|
||||||
std::unique_ptr<StreamBuffer> m_utility_shader_vertex_buffer;
|
std::unique_ptr<StreamBuffer> m_utility_shader_vertex_buffer;
|
||||||
std::unique_ptr<StreamBuffer> m_utility_shader_uniform_buffer;
|
std::unique_ptr<StreamBuffer> m_utility_shader_uniform_buffer;
|
||||||
|
std::unique_ptr<StreamBuffer> m_texture_upload_buffer;
|
||||||
|
|
||||||
VkSampler m_point_sampler = VK_NULL_HANDLE;
|
VkSampler m_point_sampler = VK_NULL_HANDLE;
|
||||||
VkSampler m_linear_sampler = VK_NULL_HANDLE;
|
VkSampler m_linear_sampler = VK_NULL_HANDLE;
|
||||||
|
@ -45,11 +45,6 @@ VkShaderModule TextureCache::GetCopyShader() const
|
|||||||
return m_copy_shader;
|
return m_copy_shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
StreamBuffer* TextureCache::GetTextureUploadBuffer() const
|
|
||||||
{
|
|
||||||
return m_texture_upload_buffer.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
TextureCache* TextureCache::GetInstance()
|
TextureCache* TextureCache::GetInstance()
|
||||||
{
|
{
|
||||||
return static_cast<TextureCache*>(g_texture_cache.get());
|
return static_cast<TextureCache*>(g_texture_cache.get());
|
||||||
@ -57,15 +52,6 @@ TextureCache* TextureCache::GetInstance()
|
|||||||
|
|
||||||
bool TextureCache::Initialize()
|
bool TextureCache::Initialize()
|
||||||
{
|
{
|
||||||
m_texture_upload_buffer =
|
|
||||||
StreamBuffer::Create(VK_BUFFER_USAGE_TRANSFER_SRC_BIT, INITIAL_TEXTURE_UPLOAD_BUFFER_SIZE,
|
|
||||||
MAXIMUM_TEXTURE_UPLOAD_BUFFER_SIZE);
|
|
||||||
if (!m_texture_upload_buffer)
|
|
||||||
{
|
|
||||||
PanicAlert("Failed to create texture upload buffer");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_texture_converter = std::make_unique<TextureConverter>();
|
m_texture_converter = std::make_unique<TextureConverter>();
|
||||||
if (!m_texture_converter->Initialize())
|
if (!m_texture_converter->Initialize())
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,6 @@ public:
|
|||||||
TLUTFormat palette_format) override;
|
TLUTFormat palette_format) override;
|
||||||
|
|
||||||
VkShaderModule GetCopyShader() const;
|
VkShaderModule GetCopyShader() const;
|
||||||
StreamBuffer* GetTextureUploadBuffer() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void CopyEFBToCacheEntry(TCacheEntry* entry, bool is_depth_copy, const EFBRectangle& src_rect,
|
void CopyEFBToCacheEntry(TCacheEntry* entry, bool is_depth_copy, const EFBRectangle& src_rect,
|
||||||
@ -57,8 +56,6 @@ private:
|
|||||||
float gamma, bool clamp_top, bool clamp_bottom,
|
float gamma, bool clamp_top, bool clamp_bottom,
|
||||||
const CopyFilterCoefficientArray& filter_coefficients) override;
|
const CopyFilterCoefficientArray& filter_coefficients) override;
|
||||||
|
|
||||||
std::unique_ptr<StreamBuffer> m_texture_upload_buffer;
|
|
||||||
|
|
||||||
std::unique_ptr<TextureConverter> m_texture_converter;
|
std::unique_ptr<TextureConverter> m_texture_converter;
|
||||||
|
|
||||||
VkShaderModule m_copy_shader = VK_NULL_HANDLE;
|
VkShaderModule m_copy_shader = VK_NULL_HANDLE;
|
||||||
|
@ -290,7 +290,7 @@ void VKTexture::Load(u32 level, u32 width, u32 height, u32 row_length, const u8*
|
|||||||
if (upload_size <= STAGING_TEXTURE_UPLOAD_THRESHOLD &&
|
if (upload_size <= STAGING_TEXTURE_UPLOAD_THRESHOLD &&
|
||||||
upload_size <= MAXIMUM_TEXTURE_UPLOAD_BUFFER_SIZE)
|
upload_size <= MAXIMUM_TEXTURE_UPLOAD_BUFFER_SIZE)
|
||||||
{
|
{
|
||||||
StreamBuffer* stream_buffer = TextureCache::GetInstance()->GetTextureUploadBuffer();
|
StreamBuffer* stream_buffer = g_object_cache->GetTextureUploadBuffer();
|
||||||
if (!stream_buffer->ReserveMemory(upload_size, upload_alignment))
|
if (!stream_buffer->ReserveMemory(upload_size, upload_alignment))
|
||||||
{
|
{
|
||||||
// Execute the command buffer first.
|
// Execute the command buffer first.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user