|
|
@@ -19,8 +19,7 @@ INLINE ShaderBuffer::
|
|
|
ShaderBuffer(const std::string &name, uint64_t size, UsageHint usage_hint) :
|
|
|
Namable(name),
|
|
|
_data_size_bytes(size),
|
|
|
- _usage_hint(usage_hint),
|
|
|
- _contexts(nullptr) {
|
|
|
+ _usage_hint(usage_hint) {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -32,8 +31,13 @@ ShaderBuffer(const std::string &name, vector_uchar initial_data, UsageHint usage
|
|
|
Namable(name),
|
|
|
_data_size_bytes(initial_data.size()),
|
|
|
_usage_hint(usage_hint),
|
|
|
- _initial_data(initial_data),
|
|
|
- _contexts(nullptr) {
|
|
|
+ _initial_data(std::move(initial_data)) {
|
|
|
+
|
|
|
+ // Make sure it is padded to 16 bytes. Some drivers like that.
|
|
|
+ if ((_initial_data.size() & 15u) != 0) {
|
|
|
+ _initial_data.resize((_initial_data.size() + 15u) & ~15u, 0);
|
|
|
+ _data_size_bytes = _initial_data.size();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|