@@ -77,6 +77,7 @@ PStatCollector CLP(GraphicsStateGuardian)::_load_display_list_pcollector("Draw:T
7777PStatCollector CLP (GraphicsStateGuardian)::_primitive_batches_display_list_pcollector(" Primitive batches:Display lists" );
7878PStatCollector CLP (GraphicsStateGuardian)::_vertices_display_list_pcollector(" Vertices:Display lists" );
7979PStatCollector CLP (GraphicsStateGuardian)::_vertices_immediate_pcollector(" Vertices:Immediate mode" );
80+ PStatCollector CLP (GraphicsStateGuardian)::_compute_dispatch_pcollector(" Draw:Compute dispatch" );
8081
8182#ifdef OPENGLES_2
8283PT (Shader) CLP(GraphicsStateGuardian)::_default_shader = NULL;
@@ -480,9 +481,9 @@ reset() {
480481 glEnable (GL_DEBUG_OUTPUT_SYNCHRONOUS);
481482 }
482483
483- GLCAT.error () << " gl-debug enabled.\n " ;
484+ GLCAT.debug () << " gl-debug enabled.\n " ;
484485 } else {
485- GLCAT.error () << " gl-debug enabled, but NOT supported.\n " ;
486+ GLCAT.debug () << " gl-debug enabled, but NOT supported.\n " ;
486487 }
487488 } else {
488489 GLCAT.debug () << " gl-debug NOT enabled.\n " ;
@@ -1705,12 +1706,16 @@ reset() {
17051706 if (is_at_least_gl_version (4 , 2 ) || has_extension (" GL_ARB_shader_image_load_store" )) {
17061707 _glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)
17071708 get_extension_func (" glBindImageTexture" );
1709+ _glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)
1710+ get_extension_func (" glMemoryBarrier" );
17081711
17091712 glGetIntegerv (GL_MAX_IMAGE_UNITS, &_max_image_units);
17101713
17111714 } else if (has_extension (" GL_EXT_shader_image_load_store" )) {
17121715 _glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)
17131716 get_extension_func (" glBindImageTextureEXT" );
1717+ _glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)
1718+ get_extension_func (" glMemoryBarrierEXT" );
17141719
17151720 glGetIntegerv (GL_MAX_IMAGE_UNITS_EXT, &_max_image_units);
17161721 }
@@ -1730,6 +1735,19 @@ reset() {
17301735 }
17311736#endif
17321737
1738+ #ifndef OPENGLES
1739+ _supports_get_program_binary = false ;
1740+
1741+ if (is_at_least_gl_version (4 , 1 ) || has_extension (" GL_ARB_get_program_binary" )) {
1742+ _glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)
1743+ get_extension_func (" glGetProgramBinary" );
1744+
1745+ if (_glGetProgramBinary != NULL ) {
1746+ _supports_get_program_binary = true ;
1747+ }
1748+ }
1749+ #endif
1750+
17331751 report_my_gl_errors ();
17341752
17351753 if (support_stencil) {
@@ -4333,9 +4351,12 @@ end_occlusion_query() {
43334351// //////////////////////////////////////////////////////////////////
43344352void CLP (GraphicsStateGuardian)::
43354353dispatch_compute(int num_groups_x, int num_groups_y, int num_groups_z) {
4354+ PStatTimer timer (_compute_dispatch_pcollector);
43364355 nassertv (_supports_compute_shaders);
43374356 nassertv (_current_shader_context != NULL );
43384357 _glDispatchCompute (num_groups_x, num_groups_y, num_groups_z);
4358+
4359+ maybe_gl_finish ();
43394360}
43404361
43414362// //////////////////////////////////////////////////////////////////
@@ -8987,6 +9008,11 @@ specify_texture(CLP(TextureContext) *gtc) {
89879008 glTexParameteri (target, GL_TEXTURE_MAG_FILTER,
89889009 get_texture_filter_type (magfilter, true ));
89899010
9011+ if (!uses_mipmaps) {
9012+ // NVIDIA drivers complain if we don't do this.
9013+ glTexParameteri (target, GL_TEXTURE_MAX_LEVEL, 0 );
9014+ }
9015+
89909016 // Set anisotropic filtering.
89919017 if (_supports_anisotropy) {
89929018 PN_stdfloat anisotropy = tex->get_effective_anisotropic_degree ();
0 commit comments