Skip to content
Snippets Groups Projects

A small handful of minor changes to the sliced texture transfer code and related functions

Merged Niklas Haas requested to merge haasn/libplacebo:sliced_transfers into master
1 file
+ 4
0
Compare changes
  • Side-by-side
  • Inline
+ 7
7
@@ -143,6 +143,10 @@ pl_gpu pl_gpu_finalize(struct pl_gpu_t *gpu)
// Verification
pl_assert(gpu->limits.max_tex_2d_dim);
pl_assert(gpu->limits.max_variable_comps || gpu->limits.max_ubo_size);
pl_assert(gpu->limits.max_ubo_size <= gpu->limits.max_buf_size);
pl_assert(gpu->limits.max_ssbo_size <= gpu->limits.max_buf_size);
pl_assert(gpu->limits.max_vbo_size <= gpu->limits.max_buf_size);
pl_assert(gpu->limits.max_mapped_size <= gpu->limits.max_buf_size);
for (int n = 0; n < gpu->num_formats; n++) {
pl_fmt fmt = gpu->formats[n];
@@ -466,18 +470,14 @@ int pl_tex_transfer_slices(pl_gpu gpu, pl_fmt texel_fmt,
struct pl_tex_transfer_params **out_slices)
{
PL_ARRAY(struct pl_tex_transfer_params) slices = {0};
size_t max_size = gpu->limits.max_ssbo_size;
size_t max_size = params->buf ? gpu->limits.max_buf_size : SIZE_MAX;
pl_fmt fmt = params->tex->params.format;
if (fmt->emulated) {
pl_assert(texel_fmt);
if (fmt->emulated && texel_fmt) {
size_t max_texel = gpu->limits.max_buffer_texels * texel_fmt->texel_size;
max_size = PL_MIN(max_size, max_texel);
max_size = PL_MIN(gpu->limits.max_ssbo_size, max_texel);
}
if (max_size < fmt->texel_size)
return 0;
int slice_w = pl_rect_w(params->rc);
int slice_h = pl_rect_h(params->rc);
int slice_d = pl_rect_d(params->rc);
Loading