/*------------------------------------------------------------------------------------- * * Copyright (c) Microsoft Corporation * Licensed under the MIT license * * dcomp-preview.h - Preview versions of upcoming DirectComposition interfaces. * * This file provides preview versions of DirectComposition interfaces that may eventually * be integrated into the official dcomp.h header of the Windows SDK. The inclusion of an * interface in this file does not guarantee its future adoption. However, if an interface is * adopted exactly as defined here, the official definition—including its GUID—will be identical * to the preview version. * * If any modifications are made to an interface prior to its official release, the GUID will be * updated accordingly. This guarantees that a QueryInterface (QI) call for a PREVIEW_ interface * is safe: a QI will only succeed if the GUID matches, and will gracefully fail if the official * version differs. * * Developers can transition to the official interfaces by removing the "PREVIEW_" prefix, provided * that the GUIDs remain the same. Note that some PREVIEW_ interfaces may eventually be deprecated * and removed from this file. For a smooth migration, it is recommended to adopt the official * interfaces as soon as they become available in the Windows SDK. The preview interfaces will * remain available long enough to support this transition. * * Always query for these interfaces using QueryInterface and validate the results, rather than * assuming that the target Windows system supports the required features. * *-------------------------------------------------------------------------------------*/ #pragma once #if (NTDDI_VERSION >= NTDDI_WIN11_GE) //+----------------------------------------------------------------------------- // // Interface: // PREVIEW_IDCompositionDynamicTexture // // Synopsis: // An interface representing a dynamically changing texture that can be // bound to a dcomp visual as content. // //------------------------------------------------------------------------------ #undef INTERFACE #define INTERFACE PREVIEW_IDCompositionDynamicTexture DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDynamicTexture, IUnknown, "A1DE1D3F-6405-447F-8E95-1383A34B0277") { // Set the current texture, assuming that every pixel has changed. STDMETHOD(SetTexture)(THIS_ _In_ IDCompositionTexture* pTexture) PURE; // Set the current texture, assuming that only the pixels within the specified dirty rects // have changed. // // DWM will use these dirty rects to optimize redrawing the texture on the screen. // However, it does not verify the accuracy of the provided rects, so the caller must ensure // that every changed pixel is covered by at least one rect. There are no guarantees regarding // the redrawing of pixels outside the specified dirty rects; DWM may choose to redraw // additional areas if necessary. // // If the provided array is empty or if the dirty rects are empty, this method treats the // texture as unchanged, allowing DWM to skip redrawing. STDMETHOD(SetTexture)(THIS_ _In_ IDCompositionTexture* pTexture, _In_count_(rectCount) const D2D_RECT_L *pRects, _In_ size_t rectCount) PURE; }; //+----------------------------------------------------------------------------- // // Interface: // PREVIEW_IDCompositionDevice5 // // Synopsis: // Serves as the root factory for composition dynamic textures // //------------------------------------------------------------------------------ #undef INTERFACE #define INTERFACE PREVIEW_IDCompositionDevice5 DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDevice5, IDCompositionDevice4, "2C6BEBFE-A603-472F-AF34-D2443356E61B") { STDMETHOD(CreateDynamicTexture)(THIS_ _Outptr_ PREVIEW_IDCompositionDynamicTexture** compositionDynamicTexture) PURE; }; #endif // #if (NTDDI_VERSION >= NTDDI_WIN11_GE)