Edit

kc3-lang/angle/src/common/win32

Branch :

  • Show log

    Commit

  • Author : Cooper Partin
    Date : 2014-09-23 10:25:02
    Hash : eeb1f537
    Message : Added SurfaceHost to enable additional hosts and abstract access for EGLNativeWindowType. Change-Id: I590b52925c6b9127d08eaf0e5ba2a0bde30505c3 Reviewed-on: https://chromium-review.googlesource.com/219488 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>

  • NativeWindow.cpp
  • //
    // Copyright (c) 2002-2014 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.
    //
    
    // NativeWindow.cpp: Handler for managing HWND native window types.
    
    #include "common/NativeWindow.h"
    #include "common/debug.h"
    
    bool isValidEGLNativeWindowType(EGLNativeWindowType window)
    {
        return (IsWindow(window) == TRUE);
    }
    
    namespace rx
    {
    NativeWindow::NativeWindow(EGLNativeWindowType window) : mWindow(window)
    {
    }
    
    HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory,
                                          DXGI_FORMAT format, unsigned int width, unsigned int height,
                                          DXGISwapChain** swapChain)
    {
        if (device == NULL || factory == NULL || swapChain == NULL || width == 0 || height == 0)
        {
            return E_INVALIDARG;
        }
    
        DXGI_SWAP_CHAIN_DESC swapChainDesc = { 0 };
        swapChainDesc.BufferCount = 1;
        swapChainDesc.BufferDesc.Format = format;
        swapChainDesc.BufferDesc.Width = width;
        swapChainDesc.BufferDesc.Height = height;
        swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
        swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
        swapChainDesc.BufferDesc.RefreshRate.Numerator = 0;
        swapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
        swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER;
        swapChainDesc.Flags = 0;
        swapChainDesc.OutputWindow = mWindow;
        swapChainDesc.SampleDesc.Count = 1;
        swapChainDesc.SampleDesc.Quality = 0;
        swapChainDesc.Windowed = TRUE;
        swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
    
        return factory->CreateSwapChain(device, &swapChainDesc, swapChain);
    }
    };