bkaradzic 13 tahun lalu
induk
melakukan
e3b0a82f0d
2 mengubah file dengan 396 tambahan dan 396 penghapusan
  1. 395 395
      src/renderer_d3d9.h
  2. 1 1
      tools/shaderc/shaderc.cpp

+ 395 - 395
src/renderer_d3d9.h

@@ -1,285 +1,285 @@
-/*
- * Copyright 2011-2012 Branimir Karadzic. All rights reserved.
- * License: http://www.opensource.org/licenses/BSD-2-Clause
- */
-
-#ifndef __RENDERER_D3D9_H__
-#define __RENDERER_D3D9_H__
-
-#define BGFX_CONFIG_RENDERER_DIRECT3D9EX (BX_PLATFORM_WINDOWS && 0)
-
-#ifndef D3DSTREAMSOURCE_INDEXEDDATA
-#	define D3DSTREAMSOURCE_INDEXEDDATA  (1<<30)
-#endif// D3DSTREAMSOURCE_INDEXEDDATA
-
-#ifndef D3DSTREAMSOURCE_INSTANCEDATA
-#	define D3DSTREAMSOURCE_INSTANCEDATA (2<<30)
-#endif // D3DSTREAMSOURCE_INSTANCEDATA
-
-#if BX_PLATFORM_WINDOWS
-#	if !BGFX_CONFIG_RENDERER_DIRECT3D9EX
-#		define D3D_DISABLE_9EX
-#	endif // !BGFX_CONFIG_RENDERER_DIRECT3D9EX
-#	include <d3d9.h>
-
-#	if BGFX_CONFIG_RENDERER_DIRECT3D9EX
-typedef HRESULT (WINAPI *Direct3DCreate9ExFn)(UINT SDKVersion, IDirect3D9Ex**);
-#	else
-typedef IDirect3D9* (WINAPI *Direct3DCreate9Fn)(UINT SDKVersion);
-#	endif // BGFX_CONFIG_RENDERER_DIRECT3D9EX
-
-typedef int (WINAPI *D3DPERF_BeginEventFunc)(D3DCOLOR col, LPCWSTR wszName);
-typedef int (WINAPI *D3DPERF_EndEventFunc)();
-typedef void (WINAPI *D3DPERF_SetMarkerFunc)(D3DCOLOR col, LPCWSTR wszName);
-typedef void (WINAPI *D3DPERF_SetRegionFunc)(D3DCOLOR col, LPCWSTR wszName);
-typedef BOOL (WINAPI *D3DPERF_QueryRepeatFrameFunc)();
-typedef void (WINAPI *D3DPERF_SetOptionsFunc)(DWORD dwOptions);
-typedef DWORD (WINAPI *D3DPERF_GetStatusFunc)();
-
-#	define _PIX_SETMARKER(_col, _name) s_renderCtx.m_D3DPERF_SetMarker(_col, L#_name)
-#	define _PIX_BEGINEVENT(_col, _name) s_renderCtx.m_D3DPERF_BeginEvent(_col, L#_name)
-#	define _PIX_ENDEVENT() s_renderCtx.m_D3DPERF_EndEvent()
-
-#elif BX_PLATFORM_XBOX360
-#	include <xgraphics.h>
-#	define D3DUSAGE_DYNAMIC 0 // not supported on X360
-#	define D3DLOCK_DISCARD 0 // not supported on X360
-#	define D3DERR_DEVICEHUNG D3DERR_DEVICELOST // not supported on X360
-#	define D3DERR_DEVICEREMOVED D3DERR_DEVICELOST // not supported on X360
-#	define D3DMULTISAMPLE_8_SAMPLES D3DMULTISAMPLE_4_SAMPLES
-#	define D3DMULTISAMPLE_16_SAMPLES D3DMULTISAMPLE_4_SAMPLES
-
-#	define D3DFMT_DF24 D3DFMT_D24FS8
-
-#	define _PIX_SETMARKER(_col, _name) do {} while(0)
-#	define _PIX_BEGINEVENT(_col, _name) do {} while(0)
-#	define _PIX_ENDEVENT() do {} while(0)
-#endif // BX_PLATFORM_
-
-#include "renderer_d3d.h"
-
-namespace bgfx
-{
-#if BGFX_CONFIG_DEBUG_PIX
-#	define PIX_SETMARKER(_col, _name) _PIX_SETMARKER(_col, _name)
-#	define PIX_BEGINEVENT(_col, _name) _PIX_BEGINEVENT(_col, _name)
-#	define PIX_ENDEVENT() _PIX_ENDEVENT()
-#else
-#	define PIX_SETMARKER(_col, _name)
-#	define PIX_BEGINEVENT(_col, _name)
-#	define PIX_ENDEVENT()
-#endif // BGFX_CONFIG_DEBUG_PIX
-
-#	ifndef D3DFMT_ATI1
-#		define D3DFMT_ATI1 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','1') )
-#	endif // D3DFMT_ATI1
-
-#	ifndef D3DFMT_ATI2
-#		define D3DFMT_ATI2 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','2') )
-#	endif // D3DFMT_ATI2
-
-#	ifndef D3DFMT_ATOC
-#		define D3DFMT_ATOC ( (D3DFORMAT)BX_MAKEFOURCC('A','T','O','C') )
-#	endif // D3DFMT_ATOC
-
-#	ifndef D3DFMT_DF16
-#		define D3DFMT_DF16 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','1','6') )
-#	endif // D3DFMT_DF16
-
-#	ifndef D3DFMT_DF24
-#		define D3DFMT_DF24 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','2','4') )
-#	endif // D3DFMT_DF24
-
-#	ifndef D3DFMT_INST
-#		define D3DFMT_INST ( (D3DFORMAT)BX_MAKEFOURCC('I','N','S','T') )
-#	endif // D3DFMT_INST
-
-#	ifndef D3DFMT_INTZ
-#		define D3DFMT_INTZ ( (D3DFORMAT)BX_MAKEFOURCC('I','N','T','Z') )
-#	endif // D3DFMT_INTZ
-
-#	ifndef D3DFMT_NULL
-#		define D3DFMT_NULL ( (D3DFORMAT)BX_MAKEFOURCC('N','U','L','L') )
-#	endif // D3DFMT_NULL
-
-#	ifndef D3DFMT_RESZ
-#		define D3DFMT_RESZ ( (D3DFORMAT)BX_MAKEFOURCC('R','E','S','Z') )
-#	endif // D3DFMT_RESZ
-
-#	ifndef D3DFMT_RAWZ
-#		define D3DFMT_RAWZ ( (D3DFORMAT)BX_MAKEFOURCC('R','A','W','Z') )
-#	endif // D3DFMT_RAWZ
-
-	struct ExtendedFormat
-	{
-		enum Enum
-		{
-			Ati1,
-			Ati2,
-			Df16,
-			Df24,
-			Inst,
-			Intz,
-			Null,
-			Resz,
-			Rawz,
-
-			Count,
-		};
-
-		D3DFORMAT m_fmt;
-		DWORD m_usage;
-		D3DRESOURCETYPE m_type;
-		bool m_supported;
-	};
-
-	struct Msaa
-	{
-		D3DMULTISAMPLE_TYPE m_type;
-		DWORD m_quality;
-	};
-
-	struct IndexBuffer
-	{
-		IndexBuffer()
-			: m_ptr(NULL)
-			, m_dynamic(false)
-		{
-		}
-
-		void create(uint32_t _size, void* _data);
-		void update(uint32_t _offset, uint32_t _size, void* _data)
-		{
-			void* buffer;
-			DX_CHECK(m_ptr->Lock(_offset
-				, _size
-				, &buffer
-				, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
-				) );
-
-			memcpy(buffer, _data, _size);
-
-			m_ptr->Unlock();
-		}
-
-		void destroy()
-		{
-			if (NULL != m_ptr)
-			{
-				DX_RELEASE(m_ptr, 0);
-				m_dynamic = false;
-			}
-		}
-
-		void preReset();
-		void postReset();
-
-		IDirect3DIndexBuffer9* m_ptr;
-		uint32_t m_size;
-		bool m_dynamic;
-	};
-
-	struct VertexBuffer
-	{
-		VertexBuffer()
-			: m_ptr(NULL)
-			, m_dynamic(false)
-		{
-		}
-
-		void create(uint32_t _size, void* _data, VertexDeclHandle _declHandle);
-		void update(uint32_t _offset, uint32_t _size, void* _data)
-		{
-			void* buffer;
-			DX_CHECK(m_ptr->Lock(_offset
-				, _size
-				, &buffer
-				, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
-				) );
-
-			memcpy(buffer, _data, _size);
-
-			m_ptr->Unlock();
-		}
-
-		void destroy()
-		{
-			if (NULL != m_ptr)
-			{
-				DX_RELEASE(m_ptr, 0);
-				m_dynamic = false;
-			}
-		}
-
-		void preReset();
-		void postReset();
-
-		IDirect3DVertexBuffer9* m_ptr;
-		uint32_t m_size;
-		VertexDeclHandle m_decl;
-		bool m_dynamic;
-	};
-
-	struct VertexDeclaration
-	{
-		void create(const VertexDecl& _decl);
-
-		void destroy()
-		{
-			DX_RELEASE(m_ptr, 0);
-		}
-
-		IDirect3DVertexDeclaration9* m_ptr;
-		VertexDecl m_decl;
-	};
-
-	struct Shader
-	{
-		Shader()
-			: m_ptr(NULL)
-		{
-		}
-
-		void create(bool _fragment, const Memory* _mem);
-		DWORD* getShaderCode(uint8_t _fragmentBit, const Memory* _mem);
-
-		void destroy()
-		{
-			ConstantBuffer::destroy(m_constantBuffer);
-			m_constantBuffer = NULL;
-			m_numPredefined = 0;
-
-			DX_RELEASE(m_ptr, 0);
-		}
-
-		IUnknown* m_ptr;
-		ConstantBuffer* m_constantBuffer;
-		PredefinedUniform m_predefined[PredefinedUniform::Count];
-		uint8_t m_numPredefined;
-	};
-
-	struct Program
-	{
-		void create(const Shader& _vsh, const Shader& _fsh)
-		{
-			BX_CHECK(NULL != _vsh.m_ptr, "Vertex shader doesn't exist.");
-			m_vsh = &_vsh;
-
-			BX_CHECK(NULL != _fsh.m_ptr, "Fragment shader doesn't exist.");
-			m_fsh = &_fsh;
-
-			memcpy(&m_predefined[0], _vsh.m_predefined, _vsh.m_numPredefined*sizeof(PredefinedUniform) );
-			memcpy(&m_predefined[_vsh.m_numPredefined], _fsh.m_predefined, _fsh.m_numPredefined*sizeof(PredefinedUniform) );
-			m_numPredefined = _vsh.m_numPredefined + _fsh.m_numPredefined;
-		}
-
-		void destroy()
-		{
-			m_numPredefined = 0;
-			m_vsh = NULL;
-			m_fsh = NULL;
-		}
-
+/*
+ * Copyright 2011-2012 Branimir Karadzic. All rights reserved.
+ * License: http://www.opensource.org/licenses/BSD-2-Clause
+ */
+
+#ifndef __RENDERER_D3D9_H__
+#define __RENDERER_D3D9_H__
+
+#define BGFX_CONFIG_RENDERER_DIRECT3D9EX (BX_PLATFORM_WINDOWS && 0)
+
+#ifndef D3DSTREAMSOURCE_INDEXEDDATA
+#	define D3DSTREAMSOURCE_INDEXEDDATA  (1<<30)
+#endif// D3DSTREAMSOURCE_INDEXEDDATA
+
+#ifndef D3DSTREAMSOURCE_INSTANCEDATA
+#	define D3DSTREAMSOURCE_INSTANCEDATA (2<<30)
+#endif // D3DSTREAMSOURCE_INSTANCEDATA
+
+#if BX_PLATFORM_WINDOWS
+#	if !BGFX_CONFIG_RENDERER_DIRECT3D9EX
+#		define D3D_DISABLE_9EX
+#	endif // !BGFX_CONFIG_RENDERER_DIRECT3D9EX
+#	include <d3d9.h>
+
+#	if BGFX_CONFIG_RENDERER_DIRECT3D9EX
+typedef HRESULT (WINAPI *Direct3DCreate9ExFn)(UINT SDKVersion, IDirect3D9Ex**);
+#	else
+typedef IDirect3D9* (WINAPI *Direct3DCreate9Fn)(UINT SDKVersion);
+#	endif // BGFX_CONFIG_RENDERER_DIRECT3D9EX
+
+typedef int (WINAPI *D3DPERF_BeginEventFunc)(D3DCOLOR col, LPCWSTR wszName);
+typedef int (WINAPI *D3DPERF_EndEventFunc)();
+typedef void (WINAPI *D3DPERF_SetMarkerFunc)(D3DCOLOR col, LPCWSTR wszName);
+typedef void (WINAPI *D3DPERF_SetRegionFunc)(D3DCOLOR col, LPCWSTR wszName);
+typedef BOOL (WINAPI *D3DPERF_QueryRepeatFrameFunc)();
+typedef void (WINAPI *D3DPERF_SetOptionsFunc)(DWORD dwOptions);
+typedef DWORD (WINAPI *D3DPERF_GetStatusFunc)();
+
+#	define _PIX_SETMARKER(_col, _name) s_renderCtx.m_D3DPERF_SetMarker(_col, L#_name)
+#	define _PIX_BEGINEVENT(_col, _name) s_renderCtx.m_D3DPERF_BeginEvent(_col, L#_name)
+#	define _PIX_ENDEVENT() s_renderCtx.m_D3DPERF_EndEvent()
+
+#elif BX_PLATFORM_XBOX360
+#	include <xgraphics.h>
+#	define D3DUSAGE_DYNAMIC 0 // not supported on X360
+#	define D3DLOCK_DISCARD 0 // not supported on X360
+#	define D3DERR_DEVICEHUNG D3DERR_DEVICELOST // not supported on X360
+#	define D3DERR_DEVICEREMOVED D3DERR_DEVICELOST // not supported on X360
+#	define D3DMULTISAMPLE_8_SAMPLES D3DMULTISAMPLE_4_SAMPLES
+#	define D3DMULTISAMPLE_16_SAMPLES D3DMULTISAMPLE_4_SAMPLES
+
+#	define D3DFMT_DF24 D3DFMT_D24FS8
+
+#	define _PIX_SETMARKER(_col, _name) do {} while(0)
+#	define _PIX_BEGINEVENT(_col, _name) do {} while(0)
+#	define _PIX_ENDEVENT() do {} while(0)
+#endif // BX_PLATFORM_
+
+#include "renderer_d3d.h"
+
+namespace bgfx
+{
+#if BGFX_CONFIG_DEBUG_PIX
+#	define PIX_SETMARKER(_col, _name) _PIX_SETMARKER(_col, _name)
+#	define PIX_BEGINEVENT(_col, _name) _PIX_BEGINEVENT(_col, _name)
+#	define PIX_ENDEVENT() _PIX_ENDEVENT()
+#else
+#	define PIX_SETMARKER(_col, _name)
+#	define PIX_BEGINEVENT(_col, _name)
+#	define PIX_ENDEVENT()
+#endif // BGFX_CONFIG_DEBUG_PIX
+
+#	ifndef D3DFMT_ATI1
+#		define D3DFMT_ATI1 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','1') )
+#	endif // D3DFMT_ATI1
+
+#	ifndef D3DFMT_ATI2
+#		define D3DFMT_ATI2 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','2') )
+#	endif // D3DFMT_ATI2
+
+#	ifndef D3DFMT_ATOC
+#		define D3DFMT_ATOC ( (D3DFORMAT)BX_MAKEFOURCC('A','T','O','C') )
+#	endif // D3DFMT_ATOC
+
+#	ifndef D3DFMT_DF16
+#		define D3DFMT_DF16 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','1','6') )
+#	endif // D3DFMT_DF16
+
+#	ifndef D3DFMT_DF24
+#		define D3DFMT_DF24 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','2','4') )
+#	endif // D3DFMT_DF24
+
+#	ifndef D3DFMT_INST
+#		define D3DFMT_INST ( (D3DFORMAT)BX_MAKEFOURCC('I','N','S','T') )
+#	endif // D3DFMT_INST
+
+#	ifndef D3DFMT_INTZ
+#		define D3DFMT_INTZ ( (D3DFORMAT)BX_MAKEFOURCC('I','N','T','Z') )
+#	endif // D3DFMT_INTZ
+
+#	ifndef D3DFMT_NULL
+#		define D3DFMT_NULL ( (D3DFORMAT)BX_MAKEFOURCC('N','U','L','L') )
+#	endif // D3DFMT_NULL
+
+#	ifndef D3DFMT_RESZ
+#		define D3DFMT_RESZ ( (D3DFORMAT)BX_MAKEFOURCC('R','E','S','Z') )
+#	endif // D3DFMT_RESZ
+
+#	ifndef D3DFMT_RAWZ
+#		define D3DFMT_RAWZ ( (D3DFORMAT)BX_MAKEFOURCC('R','A','W','Z') )
+#	endif // D3DFMT_RAWZ
+
+	struct ExtendedFormat
+	{
+		enum Enum
+		{
+			Ati1,
+			Ati2,
+			Df16,
+			Df24,
+			Inst,
+			Intz,
+			Null,
+			Resz,
+			Rawz,
+
+			Count,
+		};
+
+		D3DFORMAT m_fmt;
+		DWORD m_usage;
+		D3DRESOURCETYPE m_type;
+		bool m_supported;
+	};
+
+	struct Msaa
+	{
+		D3DMULTISAMPLE_TYPE m_type;
+		DWORD m_quality;
+	};
+
+	struct IndexBuffer
+	{
+		IndexBuffer()
+			: m_ptr(NULL)
+			, m_dynamic(false)
+		{
+		}
+
+		void create(uint32_t _size, void* _data);
+		void update(uint32_t _offset, uint32_t _size, void* _data)
+		{
+			void* buffer;
+			DX_CHECK(m_ptr->Lock(_offset
+				, _size
+				, &buffer
+				, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
+				) );
+
+			memcpy(buffer, _data, _size);
+
+			m_ptr->Unlock();
+		}
+
+		void destroy()
+		{
+			if (NULL != m_ptr)
+			{
+				DX_RELEASE(m_ptr, 0);
+				m_dynamic = false;
+			}
+		}
+
+		void preReset();
+		void postReset();
+
+		IDirect3DIndexBuffer9* m_ptr;
+		uint32_t m_size;
+		bool m_dynamic;
+	};
+
+	struct VertexBuffer
+	{
+		VertexBuffer()
+			: m_ptr(NULL)
+			, m_dynamic(false)
+		{
+		}
+
+		void create(uint32_t _size, void* _data, VertexDeclHandle _declHandle);
+		void update(uint32_t _offset, uint32_t _size, void* _data)
+		{
+			void* buffer;
+			DX_CHECK(m_ptr->Lock(_offset
+				, _size
+				, &buffer
+				, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
+				) );
+
+			memcpy(buffer, _data, _size);
+
+			m_ptr->Unlock();
+		}
+
+		void destroy()
+		{
+			if (NULL != m_ptr)
+			{
+				DX_RELEASE(m_ptr, 0);
+				m_dynamic = false;
+			}
+		}
+
+		void preReset();
+		void postReset();
+
+		IDirect3DVertexBuffer9* m_ptr;
+		uint32_t m_size;
+		VertexDeclHandle m_decl;
+		bool m_dynamic;
+	};
+
+	struct VertexDeclaration
+	{
+		void create(const VertexDecl& _decl);
+
+		void destroy()
+		{
+			DX_RELEASE(m_ptr, 0);
+		}
+
+		IDirect3DVertexDeclaration9* m_ptr;
+		VertexDecl m_decl;
+	};
+
+	struct Shader
+	{
+		Shader()
+			: m_ptr(NULL)
+		{
+		}
+
+		void create(bool _fragment, const Memory* _mem);
+		DWORD* getShaderCode(uint8_t _fragmentBit, const Memory* _mem);
+
+		void destroy()
+		{
+			ConstantBuffer::destroy(m_constantBuffer);
+			m_constantBuffer = NULL;
+			m_numPredefined = 0;
+
+			DX_RELEASE(m_ptr, 0);
+		}
+
+		IUnknown* m_ptr;
+		ConstantBuffer* m_constantBuffer;
+		PredefinedUniform m_predefined[PredefinedUniform::Count];
+		uint8_t m_numPredefined;
+	};
+
+	struct Program
+	{
+		void create(const Shader& _vsh, const Shader& _fsh)
+		{
+			BX_CHECK(NULL != _vsh.m_ptr, "Vertex shader doesn't exist.");
+			m_vsh = &_vsh;
+
+			BX_CHECK(NULL != _fsh.m_ptr, "Fragment shader doesn't exist.");
+			m_fsh = &_fsh;
+
+			memcpy(&m_predefined[0], _vsh.m_predefined, _vsh.m_numPredefined*sizeof(PredefinedUniform) );
+			memcpy(&m_predefined[_vsh.m_numPredefined], _fsh.m_predefined, _fsh.m_numPredefined*sizeof(PredefinedUniform) );
+			m_numPredefined = _vsh.m_numPredefined + _fsh.m_numPredefined;
+		}
+
+		void destroy()
+		{
+			m_numPredefined = 0;
+			m_vsh = NULL;
+			m_fsh = NULL;
+		}
+
 		void commit()
 		{
 			if (NULL != m_vsh->m_constantBuffer)
@@ -293,116 +293,116 @@ namespace bgfx
 			}
 		}
 
-		const Shader* m_vsh;
-		const Shader* m_fsh;
-
-		PredefinedUniform m_predefined[PredefinedUniform::Count*2];
-		uint8_t m_numPredefined;
-	};
-
-	struct Texture
-	{
-		enum Enum
-		{
-			Texture2D,
-			Texture3D,
-			TextureCube,
-		};
-
-		Texture()
-			: m_ptr(NULL)
-		{
-		}
-
-		void createTexture(uint32_t _width, uint32_t _height, uint8_t _numMips, D3DFORMAT _fmt);
-		void createVolumeTexture(uint32_t _width, uint32_t _height, uint32_t _depth, uint32_t _numMips, D3DFORMAT _fmt);
-		void createCubeTexture(uint32_t _edge, uint32_t _numMips, D3DFORMAT _fmt);
-
-		uint8_t* lock(uint8_t _side, uint8_t _lod, uint32_t& _pitch, uint32_t& _slicePitch, const Rect* _rect = NULL);
-		void unlock(uint8_t _side, uint8_t _lod);
-
-		void create(const Memory* _mem, uint32_t _flags);
-
-		void destroy()
-		{
-			DX_RELEASE(m_ptr, 0);
-		}
-
-		void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, const Memory* _mem);
-		void commit(uint8_t _stage);
-	
-		union
-		{
-			IDirect3DBaseTexture9* m_ptr;
-			IDirect3DTexture9* m_texture2d;
-			IDirect3DVolumeTexture9* m_texture3d;
-			IDirect3DCubeTexture9* m_textureCube;
-		};
-
-		D3DTEXTUREFILTERTYPE m_minFilter;
-		D3DTEXTUREFILTERTYPE m_magFilter;
-		D3DTEXTUREFILTERTYPE m_mipFilter;
-		D3DTEXTUREADDRESS m_tau;
-		D3DTEXTUREADDRESS m_tav;
-		D3DTEXTUREADDRESS m_taw;
-		Enum m_type;
-		bool m_srgb;
-	};
-
-	struct RenderTarget
-	{
-		RenderTarget()
-			: m_rt(NULL)
-			, m_colorTexture(NULL)
-			, m_color(NULL)
-			, m_depthTexture(NULL)
-			, m_depth(NULL)
-			, m_minFilter(D3DTEXF_LINEAR)
-			, m_magFilter(D3DTEXF_LINEAR)
-			, m_width(0)
-			, m_height(0)
-			, m_flags(0)
-			, m_depthOnly(false)
-		{
-		}
-
-		void create(uint16_t _width, uint16_t _height, uint32_t _flags, uint32_t _textureFlags);
-		void createTextures();
-		void destroyTextures();
-
-		void destroy()
-		{
-			destroyTextures();
-			m_flags = 0;
-		}
-
-		void preReset()
-		{
-			destroyTextures();
-		}
-
-		void postReset()
-		{
-			createTextures();
-		}
-
-		void commit(uint8_t _stage);
-		void resolve();
-
-		Msaa m_msaa;
-		IDirect3DSurface9* m_rt;
-		IDirect3DTexture9* m_colorTexture;
-		IDirect3DSurface9* m_color;
-		IDirect3DTexture9* m_depthTexture;
-		IDirect3DSurface9* m_depth;
-		D3DTEXTUREFILTERTYPE m_minFilter;
-		D3DTEXTUREFILTERTYPE m_magFilter;
-		uint16_t m_width;
-		uint16_t m_height;
-		uint32_t m_flags;
-		bool m_depthOnly;
-	};
-
-} // namespace bgfx
-
-#endif // __RENDERER_D3D9_H__
+		const Shader* m_vsh;
+		const Shader* m_fsh;
+
+		PredefinedUniform m_predefined[PredefinedUniform::Count*2];
+		uint8_t m_numPredefined;
+	};
+
+	struct Texture
+	{
+		enum Enum
+		{
+			Texture2D,
+			Texture3D,
+			TextureCube,
+		};
+
+		Texture()
+			: m_ptr(NULL)
+		{
+		}
+
+		void createTexture(uint32_t _width, uint32_t _height, uint8_t _numMips, D3DFORMAT _fmt);
+		void createVolumeTexture(uint32_t _width, uint32_t _height, uint32_t _depth, uint32_t _numMips, D3DFORMAT _fmt);
+		void createCubeTexture(uint32_t _edge, uint32_t _numMips, D3DFORMAT _fmt);
+
+		uint8_t* lock(uint8_t _side, uint8_t _lod, uint32_t& _pitch, uint32_t& _slicePitch, const Rect* _rect = NULL);
+		void unlock(uint8_t _side, uint8_t _lod);
+
+		void create(const Memory* _mem, uint32_t _flags);
+
+		void destroy()
+		{
+			DX_RELEASE(m_ptr, 0);
+		}
+
+		void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, const Memory* _mem);
+		void commit(uint8_t _stage);
+	
+		union
+		{
+			IDirect3DBaseTexture9* m_ptr;
+			IDirect3DTexture9* m_texture2d;
+			IDirect3DVolumeTexture9* m_texture3d;
+			IDirect3DCubeTexture9* m_textureCube;
+		};
+
+		D3DTEXTUREFILTERTYPE m_minFilter;
+		D3DTEXTUREFILTERTYPE m_magFilter;
+		D3DTEXTUREFILTERTYPE m_mipFilter;
+		D3DTEXTUREADDRESS m_tau;
+		D3DTEXTUREADDRESS m_tav;
+		D3DTEXTUREADDRESS m_taw;
+		Enum m_type;
+		bool m_srgb;
+	};
+
+	struct RenderTarget
+	{
+		RenderTarget()
+			: m_rt(NULL)
+			, m_colorTexture(NULL)
+			, m_color(NULL)
+			, m_depthTexture(NULL)
+			, m_depth(NULL)
+			, m_minFilter(D3DTEXF_LINEAR)
+			, m_magFilter(D3DTEXF_LINEAR)
+			, m_width(0)
+			, m_height(0)
+			, m_flags(0)
+			, m_depthOnly(false)
+		{
+		}
+
+		void create(uint16_t _width, uint16_t _height, uint32_t _flags, uint32_t _textureFlags);
+		void createTextures();
+		void destroyTextures();
+
+		void destroy()
+		{
+			destroyTextures();
+			m_flags = 0;
+		}
+
+		void preReset()
+		{
+			destroyTextures();
+		}
+
+		void postReset()
+		{
+			createTextures();
+		}
+
+		void commit(uint8_t _stage);
+		void resolve();
+
+		Msaa m_msaa;
+		IDirect3DSurface9* m_rt;
+		IDirect3DTexture9* m_colorTexture;
+		IDirect3DSurface9* m_color;
+		IDirect3DTexture9* m_depthTexture;
+		IDirect3DSurface9* m_depth;
+		D3DTEXTUREFILTERTYPE m_minFilter;
+		D3DTEXTUREFILTERTYPE m_magFilter;
+		uint16_t m_width;
+		uint16_t m_height;
+		uint32_t m_flags;
+		bool m_depthOnly;
+	};
+
+} // namespace bgfx
+
+#endif // __RENDERER_D3D9_H__

+ 1 - 1
tools/shaderc/shaderc.cpp

@@ -333,7 +333,7 @@ private:
 			uint32_t asciiPos = 0;
 			for (uint32_t ii = 0; ii < size; ++ii)
 			{
-				_snprintf(&hex[hexPos], sizeof(hex)-hexPos, "0x%02x, ", data[asciiPos]);
+				bx::snprintf(&hex[hexPos], sizeof(hex)-hexPos, "0x%02x, ", data[asciiPos]);
 				hexPos += 6;
 
 				ascii[asciiPos] = isprint(data[asciiPos]) && data[asciiPos] != '\\' ? data[asciiPos] : '.';