Edit

kc3-lang/angle/src/libANGLE/renderer/d3d/d3d11/formatutils11.h

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2020-09-11 12:36:05
    Hash : 4d3a0f60
    Message : GN: Componentize D3D format tables. These tables are used by both the GL and D3D11 back-ends. Also moves them to renderer_utils to be in a shared place. Bug: angleproject:3943 Change-Id: I1f5d79842396a87e795547fa03c6855d6f9c5e9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2405805 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/renderer/d3d/d3d11/formatutils11.h
  • //
    // Copyright 2013 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    // formatutils11.h: Queries for GL image formats and their translations to D3D11
    // formats.
    
    #ifndef LIBANGLE_RENDERER_D3D_D3D11_FORMATUTILS11_H_
    #define LIBANGLE_RENDERER_D3D_D3D11_FORMATUTILS11_H_
    
    #include <map>
    
    #include "common/platform.h"
    #include "libANGLE/angletypes.h"
    #include "libANGLE/formatutils.h"
    #include "libANGLE/renderer/copyvertex.h"
    #include "libANGLE/renderer/d3d/formatutilsD3D.h"
    #include "libANGLE/renderer/dxgi_format_map.h"
    #include "libANGLE/renderer/renderer_utils.h"
    
    namespace rx
    {
    struct Renderer11DeviceCaps;
    
    namespace d3d11
    {
    
    // A texture might be stored as DXGI_FORMAT_R16_TYPELESS but store integer components,
    // which are accessed through an DXGI_FORMAT_R16_SINT view. It's easy to write code which queries
    // information about the wrong format. Therefore, use of this should be avoided where possible.
    
    bool SupportsMipGen(DXGI_FORMAT dxgiFormat, D3D_FEATURE_LEVEL featureLevel);
    
    struct DXGIFormatSize
    {
        DXGIFormatSize(GLuint pixelBits, GLuint blockWidth, GLuint blockHeight);
    
        GLuint pixelBytes;
        GLuint blockWidth;
        GLuint blockHeight;
    };
    const DXGIFormatSize &GetDXGIFormatSizeInfo(DXGI_FORMAT format);
    
    struct VertexFormat : private angle::NonCopyable
    {
        constexpr VertexFormat();
        constexpr VertexFormat(VertexConversionType conversionType,
                               DXGI_FORMAT nativeFormat,
                               VertexCopyFunction copyFunction);
    
        VertexConversionType conversionType;
        DXGI_FORMAT nativeFormat;
        VertexCopyFunction copyFunction;
    };
    
    const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID,
                                            D3D_FEATURE_LEVEL featureLevel);
    }  // namespace d3d11
    
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_D3D_D3D11_FORMATUTILS11_H_