changeset 637:3822b30fd98c

* Added the ability to query some more details from the video device including the total video memory available.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Wed, 06 Oct 2010 21:37:46 +0000
parents f7863bfa92cd
children 980c02db2f56
files engine/core/video/devicecaps.cpp engine/core/video/devicecaps.h engine/core/video/video.i
diffstat 3 files changed, 90 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/engine/core/video/devicecaps.cpp	Wed Oct 06 20:54:28 2010 +0000
+++ b/engine/core/video/devicecaps.cpp	Wed Oct 06 21:37:46 2010 +0000
@@ -49,7 +49,17 @@
 		m_SDLFlags = rhs.getSDLFlags();
 	}
 
-	DeviceCaps::DeviceCaps() {
+	DeviceCaps::DeviceCaps() :
+		m_hwAvailable(false),
+		m_wmAvailable(false),
+		m_hwBlitAccel(false),
+		m_hwCCBlitAccel(false),
+		m_hwToHwAlphaBlitAccel(false),
+		m_swToHwBlitAccel(false),
+		m_swToHwCCBlistAccel(false),
+		m_swToHwAlphaBlitAccel(false),
+		m_BlitFillAccel(false),
+		m_videoMem(0) {
 	}
 
 
@@ -119,6 +129,18 @@
 			m_driverName = "Unknown";
 		}
 
+		const SDL_VideoInfo* vInfo = SDL_GetVideoInfo();
+
+		m_hwAvailable = vInfo->hw_available;
+		m_wmAvailable = vInfo->wm_available;
+		m_hwBlitAccel = vInfo->blit_hw;
+		m_hwCCBlitAccel = vInfo->blit_hw_CC;
+		m_hwToHwAlphaBlitAccel = vInfo->blit_hw_A;
+		m_swToHwBlitAccel = vInfo->blit_sw;
+		m_swToHwCCBlistAccel = vInfo->blit_sw_CC;
+		m_swToHwAlphaBlitAccel = vInfo->blit_sw_A;
+		m_BlitFillAccel = vInfo->blit_fill;
+		m_videoMem = vInfo->video_mem;
 	}
 
 } //FIFE
--- a/engine/core/video/devicecaps.h	Wed Oct 06 20:54:28 2010 +0000
+++ b/engine/core/video/devicecaps.h	Wed Oct 06 21:37:46 2010 +0000
@@ -100,12 +100,67 @@
 
 		void fillDeviceCaps();
 		std::vector<ScreenMode> getSupportedScreenModes() const { return m_screenModes; };
+
+		/** Returns the name of the current video driver.
+		 */
 		std::string getDriverName() const { return m_driverName; };
 
+		/** Is it possible to create hardware surfaces ?
+		 */
+		bool isHwSurfaceAvail() const { return m_hwAvailable; };
+
+		/** Is there a window manager available ?
+		 */
+		bool isWindowManagerAvail() const { return m_wmAvailable;} ;
+
+		/** Are hardware to hardware blits accelerated ?
+		 */
+		bool isHwBlitAccel() const { return m_hwBlitAccel; };
+
+		/** Are hardware to hardware colorkey blits accelerated ?
+		 */
+		bool isHwColorkeyBlitAccel() const { return m_hwCCBlitAccel; };
+
+		/** Are hardware to hardware alpha blits accelerated ?
+		 */
+		bool isHwAlphaBlitAccel() const { return m_hwToHwAlphaBlitAccel; };
+
+		/** Are software to hardware blits accelerated ?
+		 */
+		bool isSwToHwBlitAccel() const { return m_swToHwBlitAccel; };
+
+		/** Are software to hardware colorkey blits accelerated ?
+		 */
+		bool isSwToHwColorkeyBlitAccel() const { return m_swToHwCCBlistAccel; };
+
+		/** Are software to hardware alpha blits accelerated ?
+		 */
+		bool isSwToHwAlphaBlitAccel() const { return m_swToHwAlphaBlitAccel; };
+
+		/** Are color fills accelerated ?
+		 */
+		bool isBlitFillAccel() const { return m_BlitFillAccel; };
+
+		/** Total amount of video memory in Kilobytes, only valid if hardware sufaces are available.
+		 */
+		uint32_t getVideoMemory() const { return m_videoMem; };
+
 	private:
 		std::vector<ScreenMode> m_screenModes;
 		std::string m_driverName;
 
+		bool m_hwAvailable;
+		bool m_wmAvailable;
+		bool m_hwBlitAccel;
+		bool m_hwCCBlitAccel;
+		bool m_hwToHwAlphaBlitAccel;
+		bool m_swToHwBlitAccel;
+		bool m_swToHwCCBlistAccel;
+		bool m_swToHwAlphaBlitAccel;
+		bool m_BlitFillAccel;
+
+		uint32_t m_videoMem;
+
 	}; //DeviceCaps
 }
 
--- a/engine/core/video/video.i	Wed Oct 06 20:54:28 2010 +0000
+++ b/engine/core/video/video.i	Wed Oct 06 21:37:46 2010 +0000
@@ -249,5 +249,17 @@
 		void fillDeviceCaps();
 		std::vector<ScreenMode> getSupportedScreenModes() const;
 		std::string getDriverName() const;
+		
+		bool isHwSurfaceAvail() const;
+		bool isWindowManagerAvail() const;
+		bool isHwBlitAccel() const;
+		bool isHwColorkeyBlitAccel() const;
+		bool isHwAlphaBlitAccel() const;
+		bool isSwToHwBlitAccel() const;
+		bool isSwToHwColorkeyBlitAccel() const;
+		bool isSwToHwAlphaBlitAccel() const;
+		bool isBlitFillAccel() const;
+		
+		uint32_t getVideoMemory() const;
 	};
 }