Blender V5.0
gpu_compute_evaluator.cc File Reference
#include <epoxy/gl.h>
#include "gpu_compute_evaluator.h"
#include <opensubdiv/far/error.h>
#include <opensubdiv/far/patchDescriptor.h>
#include <opensubdiv/far/stencilTable.h>
#include <cassert>
#include <cmath>
#include <sstream>
#include <string>
#include <vector>
#include "GPU_capabilities.hh"
#include "GPU_compute.hh"
#include "GPU_context.hh"
#include "GPU_debug.hh"
#include "GPU_state.hh"
#include "GPU_vertex_buffer.hh"
#include "gpu_shader_create_info.hh"

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::opensubdiv

Macros

#define SHADER_SRC_VERTEX_BUFFER_BUF_SLOT   0
#define SHADER_DST_VERTEX_BUFFER_BUF_SLOT   1
#define SHADER_DU_BUFFER_BUF_SLOT   2
#define SHADER_DV_BUFFER_BUF_SLOT   3
#define SHADER_SIZES_BUF_SLOT   4
#define SHADER_OFFSETS_BUF_SLOT   5
#define SHADER_INDICES_BUF_SLOT   6
#define SHADER_WEIGHTS_BUF_SLOT   7
#define SHADER_DU_WEIGHTS_BUF_SLOT   8
#define SHADER_DV_WEIGHTS_BUF_SLOT   9
#define SHADER_PATCH_ARRAY_BUFFER_BUF_SLOT   4
#define SHADER_PATCH_COORDS_BUF_SLOT   5
#define SHADER_PATCH_INDEX_BUFFER_BUF_SLOT   6
#define SHADER_PATCH_PARAM_BUFFER_BUF_SLOT   7
#define BIND_BUF_DESC(uniform, desc)
#define BIND_BUF_DESC(uniform, desc)

Functions

template<class T>
gpu::StorageBufblender::opensubdiv::create_buffer (std::vector< T > const &src, const char *name)
static void blender::opensubdiv::storage_buffer_free (gpu::StorageBuf **buffer)
static blender::gpu::Shaderblender::opensubdiv::compile_eval_stencil_shader (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, int workGroupSize)
static blender::gpu::Shaderblender::opensubdiv::compile_eval_patches_shader (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, int workGroupSize)

Macro Definition Documentation

◆ BIND_BUF_DESC [1/2]

#define BIND_BUF_DESC ( uniform,
desc )
Value:
if (_stencilKernel.uniform > 0) { \
int value[] = {desc.offset, desc.length, desc.stride}; \
GPU_shader_uniform_int_ex(_patchKernel.shader, _patchKernel.uniform, 3, 1, value); \
}

◆ BIND_BUF_DESC [2/2]

#define BIND_BUF_DESC ( uniform,
desc )
Value:
if (_stencilKernel.uniform > 0) { \
int value[] = {desc.offset, desc.length, desc.stride}; \
GPU_shader_uniform_int_ex(_stencilKernel.shader, _stencilKernel.uniform, 3, 1, value); \
}

◆ SHADER_DST_VERTEX_BUFFER_BUF_SLOT

#define SHADER_DST_VERTEX_BUFFER_BUF_SLOT   1

◆ SHADER_DU_BUFFER_BUF_SLOT

#define SHADER_DU_BUFFER_BUF_SLOT   2

◆ SHADER_DU_WEIGHTS_BUF_SLOT

#define SHADER_DU_WEIGHTS_BUF_SLOT   8

◆ SHADER_DV_BUFFER_BUF_SLOT

#define SHADER_DV_BUFFER_BUF_SLOT   3

◆ SHADER_DV_WEIGHTS_BUF_SLOT

#define SHADER_DV_WEIGHTS_BUF_SLOT   9

◆ SHADER_INDICES_BUF_SLOT

#define SHADER_INDICES_BUF_SLOT   6

◆ SHADER_OFFSETS_BUF_SLOT

#define SHADER_OFFSETS_BUF_SLOT   5

◆ SHADER_PATCH_ARRAY_BUFFER_BUF_SLOT

#define SHADER_PATCH_ARRAY_BUFFER_BUF_SLOT   4

◆ SHADER_PATCH_COORDS_BUF_SLOT

#define SHADER_PATCH_COORDS_BUF_SLOT   5

◆ SHADER_PATCH_INDEX_BUFFER_BUF_SLOT

#define SHADER_PATCH_INDEX_BUFFER_BUF_SLOT   6

◆ SHADER_PATCH_PARAM_BUFFER_BUF_SLOT

#define SHADER_PATCH_PARAM_BUFFER_BUF_SLOT   7

◆ SHADER_SIZES_BUF_SLOT

#define SHADER_SIZES_BUF_SLOT   4

◆ SHADER_SRC_VERTEX_BUFFER_BUF_SLOT

#define SHADER_SRC_VERTEX_BUFFER_BUF_SLOT   0

◆ SHADER_WEIGHTS_BUF_SLOT

#define SHADER_WEIGHTS_BUF_SLOT   7