소스 검색

Fix bufSize parameter for glGetSynciv

According to the docs:
https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGetSynciv.xhtml
Bufsize is in integers, not bytes.
The current code overflows data unto other stack variables.
ChibiDenDen 2 년 전
부모
커밋
aeab31b13a
1개의 변경된 파일1개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      drivers/gles3/rasterizer_canvas_gles3.cpp

+ 1 - 1
drivers/gles3/rasterizer_canvas_gles3.cpp

@@ -115,7 +115,7 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
 
 	if (state.canvas_instance_data_buffers[state.current_data_buffer_index].fence != GLsync()) {
 		GLint syncStatus;
-		glGetSynciv(state.canvas_instance_data_buffers[state.current_data_buffer_index].fence, GL_SYNC_STATUS, sizeof(GLint), nullptr, &syncStatus);
+		glGetSynciv(state.canvas_instance_data_buffers[state.current_data_buffer_index].fence, GL_SYNC_STATUS, 1, nullptr, &syncStatus);
 		if (syncStatus == GL_UNSIGNALED) {
 			// If older than 2 frames, wait for sync OpenGL can have up to 3 frames in flight, any more and we need to sync anyway.
 			if (state.canvas_instance_data_buffers[state.current_data_buffer_index].last_frame_used < RSG::rasterizer->get_frame_number() - 2) {