1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/angle/src/libGLESv2/renderer/renderer11_utils.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,95 @@ 1.4 +// 1.5 +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 1.6 +// Use of this source code is governed by a BSD-style license that can be 1.7 +// found in the LICENSE file. 1.8 +// 1.9 + 1.10 +// renderer11_utils.h: Conversion functions and other utility routines 1.11 +// specific to the D3D11 renderer. 1.12 + 1.13 +#ifndef LIBGLESV2_RENDERER_RENDERER11_UTILS_H 1.14 +#define LIBGLESV2_RENDERER_RENDERER11_UTILS_H 1.15 + 1.16 +#include "libGLESv2/angletypes.h" 1.17 + 1.18 +namespace gl_d3d11 1.19 +{ 1.20 + 1.21 +D3D11_BLEND ConvertBlendFunc(GLenum glBlend, bool isAlpha); 1.22 +D3D11_BLEND_OP ConvertBlendOp(GLenum glBlendOp); 1.23 +UINT8 ConvertColorMask(bool maskRed, bool maskGreen, bool maskBlue, bool maskAlpha); 1.24 + 1.25 +D3D11_CULL_MODE ConvertCullMode(bool cullEnabled, GLenum cullMode); 1.26 + 1.27 +D3D11_COMPARISON_FUNC ConvertComparison(GLenum comparison); 1.28 +D3D11_DEPTH_WRITE_MASK ConvertDepthMask(bool depthWriteEnabled); 1.29 +UINT8 ConvertStencilMask(GLuint stencilmask); 1.30 +D3D11_STENCIL_OP ConvertStencilOp(GLenum stencilOp); 1.31 + 1.32 +D3D11_FILTER ConvertFilter(GLenum minFilter, GLenum magFilter, float maxAnisotropy); 1.33 +D3D11_TEXTURE_ADDRESS_MODE ConvertTextureWrap(GLenum wrap); 1.34 +FLOAT ConvertMinLOD(GLenum minFilter, unsigned int lodOffset); 1.35 +FLOAT ConvertMaxLOD(GLenum minFilter, unsigned int lodOffset); 1.36 + 1.37 +DXGI_FORMAT ConvertRenderbufferFormat(GLenum format); 1.38 +DXGI_FORMAT ConvertTextureFormat(GLenum format); 1.39 +} 1.40 + 1.41 +namespace d3d11_gl 1.42 +{ 1.43 + 1.44 +GLenum ConvertBackBufferFormat(DXGI_FORMAT format); 1.45 +GLenum ConvertDepthStencilFormat(DXGI_FORMAT format); 1.46 +GLenum ConvertRenderbufferFormat(DXGI_FORMAT format); 1.47 +GLenum ConvertTextureInternalFormat(DXGI_FORMAT format); 1.48 + 1.49 +} 1.50 + 1.51 +namespace d3d11 1.52 +{ 1.53 + 1.54 +struct PositionTexCoordVertex 1.55 +{ 1.56 + float x, y; 1.57 + float u, v; 1.58 +}; 1.59 +void SetPositionTexCoordVertex(PositionTexCoordVertex* vertex, float x, float y, float u, float v); 1.60 + 1.61 +struct PositionDepthColorVertex 1.62 +{ 1.63 + float x, y, z; 1.64 + float r, g, b, a; 1.65 +}; 1.66 +void SetPositionDepthColorVertex(PositionDepthColorVertex* vertex, float x, float y, float z, 1.67 + const gl::Color &color); 1.68 + 1.69 +size_t ComputePixelSizeBits(DXGI_FORMAT format); 1.70 +size_t ComputeBlockSizeBits(DXGI_FORMAT format); 1.71 + 1.72 +bool IsCompressed(DXGI_FORMAT format); 1.73 +unsigned int GetTextureFormatDimensionAlignment(DXGI_FORMAT format); 1.74 + 1.75 +bool IsDepthStencilFormat(DXGI_FORMAT format); 1.76 +DXGI_FORMAT GetDepthTextureFormat(DXGI_FORMAT format); 1.77 +DXGI_FORMAT GetDepthShaderResourceFormat(DXGI_FORMAT format); 1.78 + 1.79 +HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name); 1.80 + 1.81 +inline bool isDeviceLostError(HRESULT errorCode) 1.82 +{ 1.83 + switch (errorCode) 1.84 + { 1.85 + case DXGI_ERROR_DEVICE_HUNG: 1.86 + case DXGI_ERROR_DEVICE_REMOVED: 1.87 + case DXGI_ERROR_DEVICE_RESET: 1.88 + case DXGI_ERROR_DRIVER_INTERNAL_ERROR: 1.89 + case DXGI_ERROR_NOT_CURRENTLY_AVAILABLE: 1.90 + return true; 1.91 + default: 1.92 + return false; 1.93 + } 1.94 +} 1.95 + 1.96 +} 1.97 + 1.98 +#endif // LIBGLESV2_RENDERER_RENDERER11_UTILS_H