vtk/0002-Use-GL_DRAW_BUFFER0-instead-of-GL_DRAW_BUFFER-for-GL.patch
Stefan Brüns 8df23e902f Accepting request 1135492 from home:StefanBruens:branches:science
- Update to version 9.3.0, see:
  https://gitlab.kitware.com/vtk/vtk/-/blob/master/Documentation/release/9.3.md
- Drop upstream patches:
  * add add_missing_cstdint.patch
  * 0001-GL_POINT_SPRITE-is-only-available-for-Compatibility-.patch
- Rebase:
  * 0002-Use-GL_DRAW_BUFFER0-instead-of-GL_DRAW_BUFFER-for-GL.patch
- Add patches:
  * fix_rendering_core_linkage.patch
  * Do-not-request-CUBE_MAP_SEAMLESS-on-GLES.patch

OBS-URL: https://build.opensuse.org/request/show/1135492
OBS-URL: https://build.opensuse.org/package/show/science/vtk?expand=0&rev=187
2023-12-30 01:51:08 +00:00

133 lines
5.5 KiB
Diff

From 068773541005f8d8f027b373a01c821788439c8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Sun, 21 Nov 2021 22:51:36 +0100
Subject: [PATCH] Use GL_DRAW_BUFFER0 instead of GL_DRAW_BUFFER for GLES
compatibility
ARB_draw_buffers is part of GL 2.0, so GL_DRAW_BUFFERS0 is always
available, and contrary to GL_DRAW_BUFFER it is also valid for GLES
(part of GLES 3 or as EXT_draw_buffers).
This also matches the universal use of glDrawBuffers instead of
glDrawBuffer.
At least with MESA, GL_DRAW_BUFFER and GL_DRAW_BUFFER0 always return the
same value. GL_DRAW_BUFFERn is also used in several places already.
---
.../ContextOpenGL2/vtkOpenGLContextBufferId.cxx | 2 +-
.../ContextOpenGL2/vtkOpenGLContextDevice2DPrivate.h | 2 +-
Rendering/External/vtkExternalOpenGLRenderWindow.cxx | 2 +-
Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx | 8 ++++----
Rendering/OpenGL2/vtkOpenGLState.cxx | 12 ++++++------
5 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/Rendering/ContextOpenGL2/vtkOpenGLContextBufferId.cxx b/Rendering/ContextOpenGL2/vtkOpenGLContextBufferId.cxx
index c0e0f8909f..dd6a93bde3 100644
--- a/Rendering/ContextOpenGL2/vtkOpenGLContextBufferId.cxx
+++ b/Rendering/ContextOpenGL2/vtkOpenGLContextBufferId.cxx
@@ -130,8 +130,8 @@ vtkIdType vtkOpenGLContextBufferId::GetPickedItem(int x, int y)
// pixel x,y (instead of pixel 0,0 to work around pixel ownership test).
GLint savedDrawBuffer = GL_BACK_LEFT;
-#ifdef GL_DRAW_BUFFER
- glGetIntegerv(GL_DRAW_BUFFER, &savedDrawBuffer);
+#ifdef GL_DRAW_BUFFER0
+ glGetIntegerv(GL_DRAW_BUFFER0, &savedDrawBuffer);
#endif
vtkOpenGLState::ScopedglEnableDisable dsaver(ostate, GL_DEPTH_TEST);
diff --git a/Rendering/ContextOpenGL2/vtkOpenGLContextDevice2DPrivate.h b/Rendering/ContextOpenGL2/vtkOpenGLContextDevice2DPrivate.h
index 29e5f47671..7acb87e25f 100644
--- a/Rendering/ContextOpenGL2/vtkOpenGLContextDevice2DPrivate.h
+++ b/Rendering/ContextOpenGL2/vtkOpenGLContextDevice2DPrivate.h
@@ -306,8 +306,8 @@ public:
this->SavedBlend = ostate->GetEnumState(GL_BLEND);
ostate->vtkglGetFloatv(GL_COLOR_CLEAR_VALUE, this->SavedClearColor);
-#ifdef GL_DRAW_BUFFER
- ostate->vtkglGetIntegerv(GL_DRAW_BUFFER, &this->SavedDrawBuffer);
+#ifdef GL_DRAW_BUFFER0
+ ostate->vtkglGetIntegerv(GL_DRAW_BUFFER0, &this->SavedDrawBuffer);
#else
this->SavedDrawBuffer = GL_BACK_LEFT;
#endif
diff --git a/Rendering/External/vtkExternalOpenGLRenderWindow.cxx b/Rendering/External/vtkExternalOpenGLRenderWindow.cxx
index 445bfce802..5e1f2f4b24 100644
--- a/Rendering/External/vtkExternalOpenGLRenderWindow.cxx
+++ b/Rendering/External/vtkExternalOpenGLRenderWindow.cxx
@@ -58,7 +58,7 @@ void vtkExternalOpenGLRenderWindow::Start()
// For stereo, render the correct eye based on the OpenGL buffer mode
GLint bufferType;
- ostate->vtkglGetIntegerv(GL_DRAW_BUFFER, &bufferType);
+ ostate->vtkglGetIntegerv(GL_DRAW_BUFFER0, &bufferType);
vtkCollectionSimpleIterator sit;
vtkRenderer* renderer;
for (this->GetRenderers()->InitTraversal(sit);
diff --git a/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx b/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx
index 25b521bd0d..426aa69f08 100644
--- a/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx
+++ b/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx
@@ -794,8 +794,8 @@ bool vtkOpenGLRenderWindow::GetUsingSRGBColorSpace()
this->MakeCurrent();
GLint attachment = GL_BACK_LEFT;
-#ifdef GL_DRAW_BUFFER
- glGetIntegerv(GL_DRAW_BUFFER, &attachment);
+#ifdef GL_DRAW_BUFFER0
+ glGetIntegerv(GL_DRAW_BUFFER0, &attachment);
#endif
// GL seems odd with its handling of left/right.
// if it says we are using GL_FRONT or GL_BACK
@@ -854,8 +854,8 @@ int vtkOpenGLRenderWindow::GetColorBufferSizes(int* rgba)
{
this->MakeCurrent();
GLint attachment = GL_BACK_LEFT;
-#ifdef GL_DRAW_BUFFER
- glGetIntegerv(GL_DRAW_BUFFER, &attachment);
+#ifdef GL_DRAW_BUFFER0
+ glGetIntegerv(GL_DRAW_BUFFER0, &attachment);
#endif
#ifdef GL_ES_VERSION_3_0
// GLES only has the GL_BACK color
diff --git a/Rendering/OpenGL2/vtkOpenGLState.cxx b/Rendering/OpenGL2/vtkOpenGLState.cxx
index 24f23a5c44..aca4e4f247 100644
--- a/Rendering/OpenGL2/vtkOpenGLState.cxx
+++ b/Rendering/OpenGL2/vtkOpenGLState.cxx
@@ -217,8 +217,8 @@ void vtkOpenGLState::CheckState()
error = true;
}
unsigned int sval;
-#ifdef GL_DRAW_BUFFER
- ::glGetIntegerv(GL_DRAW_BUFFER, iparams);
+#ifdef GL_DRAW_BUFFER0
+ ::glGetIntegerv(GL_DRAW_BUFFER0, iparams);
sval = cs.DrawBinding.GetDrawBuffer(0);
if (sval == GL_BACK_LEFT)
{
@@ -504,8 +504,8 @@ void vtkOpenGLState::vtkglBindFramebuffer(unsigned int target, unsigned int val)
{
cs.DrawBinding.Binding = val;
::glBindFramebuffer(GL_DRAW_FRAMEBUFFER, val);
-#ifdef GL_DRAW_BUFFER
- ::glGetIntegerv(GL_DRAW_BUFFER, (int*)&cs.DrawBinding.DrawBuffers[0]);
+#ifdef GL_DRAW_BUFFER0
+ ::glGetIntegerv(GL_DRAW_BUFFER0, (int*)&cs.DrawBinding.DrawBuffers[0]);
#endif
}
}
@@ -1626,8 +1626,8 @@ void vtkOpenGLState::ResetFramebufferBindings()
{
auto& cs = this->Stack.top();
::glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, (int*)&cs.DrawBinding.Binding);
-#ifdef GL_DRAW_BUFFER
- ::glGetIntegerv(GL_DRAW_BUFFER, (int*)&cs.DrawBinding.DrawBuffers[0]);
+#ifdef GL_DRAW_BUFFER0
+ ::glGetIntegerv(GL_DRAW_BUFFER0, (int*)&cs.DrawBinding.DrawBuffers[0]);
#endif
::glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, (int*)&cs.ReadBinding.Binding);
--
2.33.1