mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-28 15:53:55 -04:00
gobj: Don't use Texture::up_to_power_2 for memory alignment
That method uses plain int, and will therefore fail for larger allocations.
This commit is contained in:
parent
5fdbc97499
commit
9d91274739
@ -23,7 +23,7 @@
|
|||||||
#include "configVariableInt.h"
|
#include "configVariableInt.h"
|
||||||
#include "simpleAllocator.h"
|
#include "simpleAllocator.h"
|
||||||
#include "vertexDataBuffer.h"
|
#include "vertexDataBuffer.h"
|
||||||
#include "texture.h"
|
#include "pbitops.h"
|
||||||
|
|
||||||
using std::max;
|
using std::max;
|
||||||
using std::min;
|
using std::min;
|
||||||
@ -631,7 +631,7 @@ set_num_rows(int n) {
|
|||||||
if (new_size > orig_reserved_size) {
|
if (new_size > orig_reserved_size) {
|
||||||
// Add more rows. Go up to the next power of two bytes, mainly to
|
// Add more rows. Go up to the next power of two bytes, mainly to
|
||||||
// reduce the number of allocs needed.
|
// reduce the number of allocs needed.
|
||||||
size_t new_reserved_size = (size_t)Texture::up_to_power_2((int)new_size);
|
size_t new_reserved_size = (size_t)1 << get_next_higher_bit(new_size - 1);
|
||||||
nassertr(new_reserved_size >= new_size, false);
|
nassertr(new_reserved_size >= new_size, false);
|
||||||
|
|
||||||
_cdata->_buffer.clean_realloc(new_reserved_size);
|
_cdata->_buffer.clean_realloc(new_reserved_size);
|
||||||
@ -818,7 +818,7 @@ copy_subdata_from(size_t to_start, size_t to_size,
|
|||||||
size_t needed_size = to_buffer_orig_size + from_size - to_size;
|
size_t needed_size = to_buffer_orig_size + from_size - to_size;
|
||||||
size_t to_buffer_orig_reserved_size = to_buffer.get_reserved_size();
|
size_t to_buffer_orig_reserved_size = to_buffer.get_reserved_size();
|
||||||
if (needed_size > to_buffer_orig_reserved_size) {
|
if (needed_size > to_buffer_orig_reserved_size) {
|
||||||
size_t new_reserved_size = (size_t)Texture::up_to_power_2((int)needed_size);
|
size_t new_reserved_size = (size_t)1 << get_next_higher_bit(needed_size - 1);
|
||||||
to_buffer.clean_realloc(new_reserved_size);
|
to_buffer.clean_realloc(new_reserved_size);
|
||||||
}
|
}
|
||||||
to_buffer.set_size(needed_size);
|
to_buffer.set_size(needed_size);
|
||||||
@ -891,7 +891,7 @@ set_subdata(size_t start, size_t size, const vector_uchar &data) {
|
|||||||
size_t needed_size = to_buffer_orig_size + from_size - size;
|
size_t needed_size = to_buffer_orig_size + from_size - size;
|
||||||
size_t to_buffer_orig_reserved_size = to_buffer.get_reserved_size();
|
size_t to_buffer_orig_reserved_size = to_buffer.get_reserved_size();
|
||||||
if (needed_size > to_buffer_orig_reserved_size) {
|
if (needed_size > to_buffer_orig_reserved_size) {
|
||||||
size_t new_reserved_size = (size_t)Texture::up_to_power_2((int)needed_size);
|
size_t new_reserved_size = (size_t)1 << get_next_higher_bit(needed_size - 1);
|
||||||
to_buffer.clean_realloc(new_reserved_size);
|
to_buffer.clean_realloc(new_reserved_size);
|
||||||
}
|
}
|
||||||
to_buffer.set_size(needed_size);
|
to_buffer.set_size(needed_size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user