Files
test2/source/blender/gpu/dummy/dummy_backend.hh
Jeroen Bakker a407186dbf GPU: Make shader cache clearing backend independent
Parallel shader compilation introduced `GPU_shader_cache_dir_clear_old`.
The implementation was specific to OpenGL and could not be overwritten
by other backends. This PR improves the implementation so the backend
can have its own implementation.

This is needed for upcoming changes to the Vulkan backend where we
want to use similar mechanisms to speed up shader compilation and caching.

Pull Request: https://projects.blender.org/blender/blender/pulls/127680
2024-09-16 14:03:14 +02:00

103 lines
2.3 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup gpu
*/
#pragma once
#include "gpu_backend.hh"
#include "gpu_capabilities_private.hh"
#include "gpu_platform_private.hh"
#include "dummy_batch.hh"
#include "dummy_context.hh"
#include "dummy_framebuffer.hh"
#include "dummy_vertex_buffer.hh"
namespace blender::gpu {
class DummyBackend : public GPUBackend {
public:
DummyBackend()
{
GPG.init(GPU_DEVICE_ANY,
GPU_OS_ANY,
GPU_DRIVER_ANY,
GPU_SUPPORT_LEVEL_UNSUPPORTED,
GPU_BACKEND_NONE,
"Unknown",
"",
"",
GPU_ARCHITECTURE_IMR);
}
void delete_resources() override {}
void samplers_update() override {}
void compute_dispatch(int /*groups_x_len*/, int /*groups_y_len*/, int /*groups_z_len*/) override
{
}
void compute_dispatch_indirect(StorageBuf * /*indirect_buf*/) override {}
Context *context_alloc(void * /*ghost_window*/, void * /*ghost_context*/) override
{
return new DummyContext;
}
Batch *batch_alloc() override
{
return new DummyBatch;
}
DrawList *drawlist_alloc(int /*list_length*/) override
{
return nullptr;
}
Fence *fence_alloc() override
{
return nullptr;
}
FrameBuffer *framebuffer_alloc(const char *name) override
{
return new DummyFrameBuffer(name);
}
IndexBuf *indexbuf_alloc() override
{
return nullptr;
}
PixelBuffer *pixelbuf_alloc(size_t /*size*/) override
{
return nullptr;
}
QueryPool *querypool_alloc() override
{
return nullptr;
}
Shader *shader_alloc(const char * /*name*/) override
{
return nullptr;
}
Texture *texture_alloc(const char * /*name*/) override
{
return nullptr;
}
UniformBuf *uniformbuf_alloc(size_t /*size*/, const char * /*name*/) override
{
return nullptr;
}
StorageBuf *storagebuf_alloc(size_t /*size*/,
GPUUsageType /*usage*/,
const char * /*name*/) override
{
return nullptr;
}
VertBuf *vertbuf_alloc() override
{
return new DummyVertexBuffer;
}
void shader_cache_dir_clear_old() override {}
void render_begin() override {}
void render_end() override {}
void render_step() override {}
};
} // namespace blender::gpu