/*** Autogenerated by WIDL 11.10 from ../include/vkd3d_command_list_vkd3d_ext.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __vkd3d_command_list_vkd3d_ext_h__
#define __vkd3d_command_list_vkd3d_ext_h__

/* Forward declarations */

#ifndef __ID3D12GraphicsCommandListExt_FWD_DEFINED__
#define __ID3D12GraphicsCommandListExt_FWD_DEFINED__
typedef interface ID3D12GraphicsCommandListExt ID3D12GraphicsCommandListExt;
#ifdef __cplusplus
interface ID3D12GraphicsCommandListExt;
#endif /* __cplusplus */
#endif

#ifndef __ID3D12GraphicsCommandListExt1_FWD_DEFINED__
#define __ID3D12GraphicsCommandListExt1_FWD_DEFINED__
typedef interface ID3D12GraphicsCommandListExt1 ID3D12GraphicsCommandListExt1;
#ifdef __cplusplus
interface ID3D12GraphicsCommandListExt1;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <vkd3d_d3d12.h>
#include <vkd3d_vk_includes.h>

#ifdef __cplusplus
extern "C" {
#endif

/*****************************************************************************
 * ID3D12GraphicsCommandListExt interface
 */
#ifndef __ID3D12GraphicsCommandListExt_INTERFACE_DEFINED__
#define __ID3D12GraphicsCommandListExt_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D12GraphicsCommandListExt, 0x77a86b09, 0x2bea, 0x4801, 0xb8,0x9a, 0x37,0x64,0x8e,0x10,0x4a,0xf1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("77a86b09-2bea-4801-b89a-37648e104af1")
ID3D12GraphicsCommandListExt : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetVulkanHandle(
        VkCommandBuffer *pVkCommandBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE LaunchCubinShader(
        D3D12_CUBIN_DATA_HANDLE *handle,
        UINT32 block_x,
        UINT32 block_y,
        UINT32 block_z,
        const void *params,
        UINT32 param_size) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D12GraphicsCommandListExt, 0x77a86b09, 0x2bea, 0x4801, 0xb8,0x9a, 0x37,0x64,0x8e,0x10,0x4a,0xf1)
#endif
#else
typedef struct ID3D12GraphicsCommandListExtVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D12GraphicsCommandListExt *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D12GraphicsCommandListExt *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D12GraphicsCommandListExt *This);

    /*** ID3D12GraphicsCommandListExt methods ***/
    HRESULT (STDMETHODCALLTYPE *GetVulkanHandle)(
        ID3D12GraphicsCommandListExt *This,
        VkCommandBuffer *pVkCommandBuffer);

    HRESULT (STDMETHODCALLTYPE *LaunchCubinShader)(
        ID3D12GraphicsCommandListExt *This,
        D3D12_CUBIN_DATA_HANDLE *handle,
        UINT32 block_x,
        UINT32 block_y,
        UINT32 block_z,
        const void *params,
        UINT32 param_size);

    END_INTERFACE
} ID3D12GraphicsCommandListExtVtbl;

interface ID3D12GraphicsCommandListExt {
    CONST_VTBL ID3D12GraphicsCommandListExtVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D12GraphicsCommandListExt_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D12GraphicsCommandListExt_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D12GraphicsCommandListExt_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D12GraphicsCommandListExt methods ***/
#define ID3D12GraphicsCommandListExt_GetVulkanHandle(This,pVkCommandBuffer) (This)->lpVtbl->GetVulkanHandle(This,pVkCommandBuffer)
#define ID3D12GraphicsCommandListExt_LaunchCubinShader(This,handle,block_x,block_y,block_z,params,param_size) (This)->lpVtbl->LaunchCubinShader(This,handle,block_x,block_y,block_z,params,param_size)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D12GraphicsCommandListExt_QueryInterface(ID3D12GraphicsCommandListExt* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D12GraphicsCommandListExt_AddRef(ID3D12GraphicsCommandListExt* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D12GraphicsCommandListExt_Release(ID3D12GraphicsCommandListExt* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D12GraphicsCommandListExt methods ***/
static inline HRESULT ID3D12GraphicsCommandListExt_GetVulkanHandle(ID3D12GraphicsCommandListExt* This,VkCommandBuffer *pVkCommandBuffer) {
    return This->lpVtbl->GetVulkanHandle(This,pVkCommandBuffer);
}
static inline HRESULT ID3D12GraphicsCommandListExt_LaunchCubinShader(ID3D12GraphicsCommandListExt* This,D3D12_CUBIN_DATA_HANDLE *handle,UINT32 block_x,UINT32 block_y,UINT32 block_z,const void *params,UINT32 param_size) {
    return This->lpVtbl->LaunchCubinShader(This,handle,block_x,block_y,block_z,params,param_size);
}
#endif
#endif

#endif


#endif  /* __ID3D12GraphicsCommandListExt_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D12GraphicsCommandListExt1 interface
 */
#ifndef __ID3D12GraphicsCommandListExt1_INTERFACE_DEFINED__
#define __ID3D12GraphicsCommandListExt1_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D12GraphicsCommandListExt1, 0xd53b0028, 0xafb4, 0x4b65, 0xa4,0xf1, 0x7b,0x0d,0xaa,0xa6,0x5b,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d53b0028-afb4-4b65-a4f1-7b0daaa65b4f")
ID3D12GraphicsCommandListExt1 : public ID3D12GraphicsCommandListExt
{
    virtual HRESULT STDMETHODCALLTYPE LaunchCubinShaderEx(
        D3D12_CUBIN_DATA_HANDLE *handle,
        UINT32 block_x,
        UINT32 block_y,
        UINT32 block_z,
        UINT32 smem_size,
        const void *params,
        UINT32 param_size,
        const void *raw_params,
        UINT32 raw_params_count) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D12GraphicsCommandListExt1, 0xd53b0028, 0xafb4, 0x4b65, 0xa4,0xf1, 0x7b,0x0d,0xaa,0xa6,0x5b,0x4f)
#endif
#else
typedef struct ID3D12GraphicsCommandListExt1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D12GraphicsCommandListExt1 *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D12GraphicsCommandListExt1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D12GraphicsCommandListExt1 *This);

    /*** ID3D12GraphicsCommandListExt methods ***/
    HRESULT (STDMETHODCALLTYPE *GetVulkanHandle)(
        ID3D12GraphicsCommandListExt1 *This,
        VkCommandBuffer *pVkCommandBuffer);

    HRESULT (STDMETHODCALLTYPE *LaunchCubinShader)(
        ID3D12GraphicsCommandListExt1 *This,
        D3D12_CUBIN_DATA_HANDLE *handle,
        UINT32 block_x,
        UINT32 block_y,
        UINT32 block_z,
        const void *params,
        UINT32 param_size);

    /*** ID3D12GraphicsCommandListExt1 methods ***/
    HRESULT (STDMETHODCALLTYPE *LaunchCubinShaderEx)(
        ID3D12GraphicsCommandListExt1 *This,
        D3D12_CUBIN_DATA_HANDLE *handle,
        UINT32 block_x,
        UINT32 block_y,
        UINT32 block_z,
        UINT32 smem_size,
        const void *params,
        UINT32 param_size,
        const void *raw_params,
        UINT32 raw_params_count);

    END_INTERFACE
} ID3D12GraphicsCommandListExt1Vtbl;

interface ID3D12GraphicsCommandListExt1 {
    CONST_VTBL ID3D12GraphicsCommandListExt1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D12GraphicsCommandListExt1_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D12GraphicsCommandListExt1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D12GraphicsCommandListExt1_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D12GraphicsCommandListExt methods ***/
#define ID3D12GraphicsCommandListExt1_GetVulkanHandle(This,pVkCommandBuffer) (This)->lpVtbl->GetVulkanHandle(This,pVkCommandBuffer)
#define ID3D12GraphicsCommandListExt1_LaunchCubinShader(This,handle,block_x,block_y,block_z,params,param_size) (This)->lpVtbl->LaunchCubinShader(This,handle,block_x,block_y,block_z,params,param_size)
/*** ID3D12GraphicsCommandListExt1 methods ***/
#define ID3D12GraphicsCommandListExt1_LaunchCubinShaderEx(This,handle,block_x,block_y,block_z,smem_size,params,param_size,raw_params,raw_params_count) (This)->lpVtbl->LaunchCubinShaderEx(This,handle,block_x,block_y,block_z,smem_size,params,param_size,raw_params,raw_params_count)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D12GraphicsCommandListExt1_QueryInterface(ID3D12GraphicsCommandListExt1* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D12GraphicsCommandListExt1_AddRef(ID3D12GraphicsCommandListExt1* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D12GraphicsCommandListExt1_Release(ID3D12GraphicsCommandListExt1* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D12GraphicsCommandListExt methods ***/
static inline HRESULT ID3D12GraphicsCommandListExt1_GetVulkanHandle(ID3D12GraphicsCommandListExt1* This,VkCommandBuffer *pVkCommandBuffer) {
    return This->lpVtbl->GetVulkanHandle(This,pVkCommandBuffer);
}
static inline HRESULT ID3D12GraphicsCommandListExt1_LaunchCubinShader(ID3D12GraphicsCommandListExt1* This,D3D12_CUBIN_DATA_HANDLE *handle,UINT32 block_x,UINT32 block_y,UINT32 block_z,const void *params,UINT32 param_size) {
    return This->lpVtbl->LaunchCubinShader(This,handle,block_x,block_y,block_z,params,param_size);
}
/*** ID3D12GraphicsCommandListExt1 methods ***/
static inline HRESULT ID3D12GraphicsCommandListExt1_LaunchCubinShaderEx(ID3D12GraphicsCommandListExt1* This,D3D12_CUBIN_DATA_HANDLE *handle,UINT32 block_x,UINT32 block_y,UINT32 block_z,UINT32 smem_size,const void *params,UINT32 param_size,const void *raw_params,UINT32 raw_params_count) {
    return This->lpVtbl->LaunchCubinShaderEx(This,handle,block_x,block_y,block_z,smem_size,params,param_size,raw_params,raw_params_count);
}
#endif
#endif

#endif


#endif  /* __ID3D12GraphicsCommandListExt1_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __vkd3d_command_list_vkd3d_ext_h__ */
