mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
Merge branch 'release/1.10.x'
This commit is contained in:
commit
3d4dd50358
@ -2150,6 +2150,8 @@ reset() {
|
|||||||
get_extension_func("glGetProgramResourceName");
|
get_extension_func("glGetProgramResourceName");
|
||||||
_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)
|
_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)
|
||||||
get_extension_func("glGetProgramResourceiv");
|
get_extension_func("glGetProgramResourceiv");
|
||||||
|
_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)
|
||||||
|
get_extension_func("glShaderStorageBlockBinding");
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
@ -1073,6 +1073,7 @@ public:
|
|||||||
PFNGLGETPROGRAMINTERFACEIVPROC _glGetProgramInterfaceiv;
|
PFNGLGETPROGRAMINTERFACEIVPROC _glGetProgramInterfaceiv;
|
||||||
PFNGLGETPROGRAMRESOURCENAMEPROC _glGetProgramResourceName;
|
PFNGLGETPROGRAMRESOURCENAMEPROC _glGetProgramResourceName;
|
||||||
PFNGLGETPROGRAMRESOURCEIVPROC _glGetProgramResourceiv;
|
PFNGLGETPROGRAMRESOURCEIVPROC _glGetProgramResourceiv;
|
||||||
|
PFNGLSHADERSTORAGEBLOCKBINDINGPROC _glShaderStorageBlockBinding;
|
||||||
#endif // !OPENGLES
|
#endif // !OPENGLES
|
||||||
|
|
||||||
GLenum _edge_clamp;
|
GLenum _edge_clamp;
|
||||||
|
@ -339,6 +339,8 @@ CLP(ShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderContext
|
|||||||
block_maxlength = max(64, block_maxlength);
|
block_maxlength = max(64, block_maxlength);
|
||||||
char *block_name_cstr = (char *)alloca(block_maxlength);
|
char *block_name_cstr = (char *)alloca(block_maxlength);
|
||||||
|
|
||||||
|
BitArray bindings;
|
||||||
|
|
||||||
for (int i = 0; i < block_count; ++i) {
|
for (int i = 0; i < block_count; ++i) {
|
||||||
block_name_cstr[0] = 0;
|
block_name_cstr[0] = 0;
|
||||||
_glgsg->_glGetProgramResourceName(_glsl_program, GL_SHADER_STORAGE_BLOCK, i, block_maxlength, nullptr, block_name_cstr);
|
_glgsg->_glGetProgramResourceName(_glsl_program, GL_SHADER_STORAGE_BLOCK, i, block_maxlength, nullptr, block_name_cstr);
|
||||||
@ -347,6 +349,20 @@ CLP(ShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderContext
|
|||||||
GLint values[2];
|
GLint values[2];
|
||||||
_glgsg->_glGetProgramResourceiv(_glsl_program, GL_SHADER_STORAGE_BLOCK, i, 2, props, 2, nullptr, values);
|
_glgsg->_glGetProgramResourceiv(_glsl_program, GL_SHADER_STORAGE_BLOCK, i, 2, props, 2, nullptr, values);
|
||||||
|
|
||||||
|
if (bindings.get_bit(values[0])) {
|
||||||
|
// Binding index already in use, assign a different one.
|
||||||
|
values[0] = bindings.get_lowest_off_bit();
|
||||||
|
_glgsg->_glShaderStorageBlockBinding(_glsl_program, i, values[0]);
|
||||||
|
}
|
||||||
|
bindings.set_bit(values[0]);
|
||||||
|
|
||||||
|
if (GLCAT.is_debug()) {
|
||||||
|
GLCAT.debug()
|
||||||
|
<< "Active shader storage block " << block_name_cstr
|
||||||
|
<< " with size " << values[1] << " is bound to binding "
|
||||||
|
<< values[0] << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
StorageBlock block;
|
StorageBlock block;
|
||||||
block._name = InternalName::make(block_name_cstr);
|
block._name = InternalName::make(block_name_cstr);
|
||||||
block._binding_index = values[0];
|
block._binding_index = values[0];
|
||||||
|
@ -74,6 +74,7 @@ get_start_sort() const {
|
|||||||
*/
|
*/
|
||||||
INLINE void PGTop::
|
INLINE void PGTop::
|
||||||
add_region(MouseWatcherRegion *region) {
|
add_region(MouseWatcherRegion *region) {
|
||||||
nassertv(_watcher_group != nullptr);
|
if (_watcher_group != nullptr) {
|
||||||
_watcher_group->add_region(region);
|
_watcher_group->add_region(region);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user