diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2015-09-24 18:24:20 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2015-09-24 18:24:20 +0300 |
commit | 27b3ea622f8bd313a8e2827dfec752bf2125566c (patch) | |
tree | f212e49d224ce8e1cfc3b17a64ae524711494391 /intern/ghost/intern/GHOST_ContextWGL.h | |
parent | 372dff8d1dc7e24d4b2cd37de245588ecfce8bfa (diff) | |
parent | de80e687689032cb85179a1f7e89750573631d5d (diff) |
Merge remote-tracking branch 'origin/master' into cycles_camera_nodescycles_camera_nodes
Note: the branch currently crashes in blender_camera_nodes.cpp:
BL::NodeTree b_ntree = b_data.node_groups[nodes_tree_name];
The crash was introduced in:
cb7cf523e5c000609f32a382e2c0fcc57f635a42
Conflicts:
intern/cycles/SConscript
intern/cycles/blender/addon/__init__.py
intern/cycles/blender/addon/properties.py
intern/cycles/blender/blender_camera.cpp
intern/cycles/kernel/kernel_types.h
intern/cycles/kernel/svm/svm.h
intern/cycles/kernel/svm/svm_types.h
intern/cycles/render/camera.cpp
intern/cycles/render/camera.h
Diffstat (limited to 'intern/ghost/intern/GHOST_ContextWGL.h')
-rw-r--r-- | intern/ghost/intern/GHOST_ContextWGL.h | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/intern/ghost/intern/GHOST_ContextWGL.h b/intern/ghost/intern/GHOST_ContextWGL.h new file mode 100644 index 00000000000..c457ddab2f7 --- /dev/null +++ b/intern/ghost/intern/GHOST_ContextWGL.h @@ -0,0 +1,190 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2013 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Jason Wilkins + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file ghost/intern/GHOST_ContextWGL.h + * \ingroup GHOST + */ + +#ifndef __GHOST_CONTEXTWGL_H__ +#define __GHOST_CONTEXTWGL_H__ + +#include "GHOST_Context.h" + +#ifdef WITH_GLEW_MX +#define wglewGetContext() wglewContext +#endif + +#include <GL/wglew.h> + +#ifdef WITH_GLEW_MX +extern "C" WGLEWContext *wglewContext; +#endif + +#ifndef GHOST_OPENGL_WGL_CONTEXT_FLAGS +# ifdef WITH_GPU_DEBUG +# define GHOST_OPENGL_WGL_CONTEXT_FLAGS WGL_CONTEXT_DEBUG_BIT_ARB +# else +# define GHOST_OPENGL_WGL_CONTEXT_FLAGS 0 +# endif +#endif + +#ifndef GHOST_OPENGL_WGL_RESET_NOTIFICATION_STRATEGY +#define GHOST_OPENGL_WGL_RESET_NOTIFICATION_STRATEGY 0 +#endif + + +class GHOST_ContextWGL : public GHOST_Context +{ +public: + /** + * Constructor. + */ + GHOST_ContextWGL( + bool stereoVisual, + GHOST_TUns16 numOfAASamples, + HWND hWnd, + HDC hDC, + int contextProfileMask, + int contextMajorVersion, + int contextMinorVersion, + int contextFlags, + int contextResetNotificationStrategy); + + /** + * Destructor. + */ + ~GHOST_ContextWGL(); + + /** + * Swaps front and back buffers of a window. + * \return A boolean success indicator. + */ + GHOST_TSuccess swapBuffers(); + + /** + * Activates the drawing context of this window. + * \return A boolean success indicator. + */ + GHOST_TSuccess activateDrawingContext(); + + /** + * Call immediately after new to initialize. If this fails then immediately delete the object. + * \return Indication as to whether initialization has succeeded. + */ + GHOST_TSuccess initializeDrawingContext(); + + /** + * Removes references to native handles from this context and then returns + * \return GHOST_kSuccess if it is OK for the parent to release the handles and + * GHOST_kFailure if releasing the handles will interfere with sharing + */ + GHOST_TSuccess releaseNativeHandles(); + + /** + * Sets the swap interval for swapBuffers. + * \param interval The swap interval to use. + * \return A boolean success indicator. + */ + GHOST_TSuccess setSwapInterval(int interval); + + /** + * Gets the current swap interval for swapBuffers. + * \param intervalOut Variable to store the swap interval if it can be read. + * \return Whether the swap interval can be read. + */ + GHOST_TSuccess getSwapInterval(int &intervalOut); + + static void unSetWarningOld(){s_warn_old = true;} + +protected: + inline void activateWGLEW() const { +#ifdef WITH_GLEW_MX + wglewContext = m_wglewContext; +#endif + } + +private: + int choose_pixel_format( + bool stereoVisual, + int numOfAASamples, + bool needAlpha, + bool needStencil, + bool sRGB); + + int choose_pixel_format_arb( + bool stereoVisual, + int numOfAASamples, + bool needAlpha, + bool needStencil, + bool sRGB); + + int _choose_pixel_format_arb_1( + bool stereoVisual, + int numOfAASamples, + bool needAlpha, + bool needStencil, + bool sRGB, + int *swapMethodOut); + + int _choose_pixel_format_arb_2(bool stereoVisual, + int *numOfAASamples, + bool needAlpha, + bool needStencil, + bool sRGB, + int swapMethod); + + void initContextWGLEW(PIXELFORMATDESCRIPTOR &preferredPFD); + + HWND m_hWnd; + HDC m_hDC; + + const int m_contextProfileMask; + const int m_contextMajorVersion; + const int m_contextMinorVersion; + const int m_contextFlags; + const int m_contextResetNotificationStrategy; + + HGLRC m_hGLRC; + +#ifdef WITH_GLEW_MX + WGLEWContext *m_wglewContext; +#endif + +#ifndef NDEBUG + const char *m_dummyVendor; + const char *m_dummyRenderer; + const char *m_dummyVersion; +#endif + + static HGLRC s_sharedHGLRC; + static int s_sharedCount; + + static bool s_singleContextMode; + static bool s_warn_old; +}; + +#endif // __GHOST_CONTEXTWGL_H__ |