Home | History | Annotate | Download | only in libGL
      1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 // Display.h: Defines the Display class, representing the abstract
     16 // display on which graphics are drawn.
     17 
     18 #ifndef INCLUDE_DISPLAY_H_
     19 #define INCLUDE_DISPLAY_H_
     20 
     21 #include "Surface.h"
     22 #include "Context.h"
     23 #include "Device.hpp"
     24 
     25 #include <set>
     26 
     27 namespace gl
     28 {
     29 	struct DisplayMode
     30 	{
     31 		unsigned int width;
     32 		unsigned int height;
     33 		sw::Format format;
     34 	};
     35 
     36 	class Display
     37 	{
     38 	public:
     39 		~Display();
     40 
     41 		static Display *getDisplay(NativeDisplayType displayId);
     42 
     43 		bool initialize();
     44 		void terminate();
     45 
     46 		Context *createContext(const Context *shareContext);
     47 
     48 		void destroySurface(Surface *surface);
     49 		void destroyContext(Context *context);
     50 
     51 		bool isInitialized() const;
     52 		bool isValidContext(Context *context);
     53 		bool isValidSurface(Surface *surface);
     54 		bool isValidWindow(NativeWindowType window);
     55 
     56 		GLint getMinSwapInterval();
     57 		GLint getMaxSwapInterval();
     58 
     59 		virtual Surface *getPrimarySurface();
     60 
     61 		NativeDisplayType getNativeDisplay() const;
     62 
     63 	private:
     64 		Display(NativeDisplayType displayId);
     65 
     66 		DisplayMode getDisplayMode() const;
     67 
     68 		const NativeDisplayType displayId;
     69 
     70 		GLint mMaxSwapInterval;
     71 		GLint mMinSwapInterval;
     72 
     73 		typedef std::set<Surface*> SurfaceSet;
     74 		SurfaceSet mSurfaceSet;
     75 
     76 		typedef std::set<Context*> ContextSet;
     77 		ContextSet mContextSet;
     78 	};
     79 }
     80 
     81 #endif   // INCLUDE_DISPLAY_H_
     82