GPU: Compute Pipeline.
With the compute pipeline calculation can be offloaded to the GPU. This patch only adds the framework for compute. So no changes for users at this moment. NOTE: As this is an OpenGL4.3 feature it must always have a fallback. Use `GPU_compute_shader_support` to check if compute pipeline can be used. Check `gpu_shader_compute*` test cases for usage. This patch also adds support for shader storage buffer objects and device only vertex/index buffers. An alternative that had been discussed was adding this to the `GPUBatch`, this was eventually not chosen as it would lead to more code when used as part of a shading group. The idea is that we add an `eDRWCommandType` in the near future. Reviewed By: fclem Differential Revision: https://developer.blender.org/D10913
This commit is contained in:
@@ -34,6 +34,7 @@ namespace blender::gpu {
|
||||
class GLIndexBuf : public IndexBuf {
|
||||
friend class GLBatch;
|
||||
friend class GLDrawList;
|
||||
friend class GLShader; /* For compute shaders. */
|
||||
|
||||
private:
|
||||
GLuint ibo_id_ = 0;
|
||||
@@ -42,6 +43,9 @@ class GLIndexBuf : public IndexBuf {
|
||||
~GLIndexBuf();
|
||||
|
||||
void bind(void);
|
||||
void bind_as_ssbo(uint binding) override;
|
||||
|
||||
const uint32_t *read() const override;
|
||||
|
||||
void *offset_ptr(uint additional_vertex_offset) const
|
||||
{
|
||||
@@ -57,6 +61,9 @@ class GLIndexBuf : public IndexBuf {
|
||||
return (index_type_ == GPU_INDEX_U16) ? 0xFFFFu : 0xFFFFFFFFu;
|
||||
}
|
||||
|
||||
private:
|
||||
bool is_active() const;
|
||||
|
||||
MEM_CXX_CLASS_ALLOC_FUNCS("GLIndexBuf")
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user