Home

Resume

Blog

Teikitu


/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
/*  »Project«   Teikitu Gaming System (TgS) (∂)
    »File«      TgS (DX12) Kernel - Data.c
    »Author«    Andrew Aye (EMail: mailto:andrew.aye@gmail.com, Web: http://www.andrewaye.com)
    »Version«   4.51 / »GUID« A9981407-3EC9-42AF-8B6F-8BE6DD919615                                                                                                        */
/*   -------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
/*  Copyright: © 2002-2017, Andrew Aye.  All Rights Reserved.
    This software is free for non-commercial use.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
      following conditions are met:
        Redistribution of source code must retain this copyright notice, this list of conditions and the following disclaimers.
        Redistribution in binary form must reproduce this copyright notice, this list of conditions and the following disclaimers in the documentation and other materials
          provided with the distribution.
    The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
    The intellectual property rights of the algorithms used reside with Andrew Aye.
    You may not use this software, in whole or in part, in support of any commercial product without the express written consent of the author.
    There is no warranty or other guarantee of fitness of this software for any purpose. It is provided solely "as is".                                                   */
/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
/* == Kernel ============================================================================================================================================================ */

/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */
/*  Private Constants                                                                                                                                                     */
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */

const DXGI_FORMAT                           KTgKN_DX_FORMAT_LIST[ETgKN_GPU_FORMAT__MAX] = {
                                                DXGI_FORMAT_UNKNOWN, /* ETgKN_GPU_FORMAT__UNKNNOWN */
                                                DXGI_FORMAT_UNKNOWN, /* ETgKN_GPU_FORMAT__F32_04 */
                                                DXGI_FORMAT_R16G16B16A16_FLOAT,
                                                DXGI_FORMAT_R10G10B10A2_UNORM,
                                                DXGI_FORMAT_R8G8B8A8_UNORM,
                                                DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
                                                DXGI_FORMAT_B8G8R8A8_UNORM,
                                                DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
                                                DXGI_FORMAT_D32_FLOAT_S8X24_UINT, /* ETgKN_GPU_FORMAT__DS_F32_U08 */
                                                DXGI_FORMAT_D32_FLOAT, /* ETgKN_GPU_FORMAT__DS_F32 */
                                            };

const DXGI_FORMAT                           KTgKN_DX_TARGET_LIST[ETgKN_GPU_TARGET__MAX] = {
                                                DXGI_FORMAT_R16G16B16A16_FLOAT,
                                                DXGI_FORMAT_R10G10B10A2_UNORM,
                                                DXGI_FORMAT_R8G8B8A8_UNORM,
                                                DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
                                                DXGI_FORMAT_B8G8R8A8_UNORM,
                                                DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
                                            };
                                            TgCOMPILER_ASSERT( 6 == ETgKN_GPU_TARGET__MAX, 0 );

TgCOMPILER_ASSERT( ETgKN_GPU_DEVICE_SETTINGS_FLAGS__MAX + D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT <= 64, 0 );
TgCOMPILER_ASSERT( D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT <= 32, 0 );
TgCOMPILER_ASSERT( D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT >= KTgKN_GPU_MS__MAX, 0 );




/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */
/*  Configuration                                                                                                                                                         */
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */

TgCN_VAR_ID                                 g_tiCVAR_KN_GPU_PM_Adapter;
TgCN_VAR_ID                                 g_tiCVAR_KN_GPU_PM_Output;
TgCN_VAR_ID                                 g_tiCVAR_KN_GPU_PM_Width;
TgCN_VAR_ID                                 g_tiCVAR_KN_GPU_PM_Height;
TgCN_VAR_ID                                 g_tiCVAR_KN_GPU_PM_Refresh_Rate;
TgCN_VAR_ID                                 g_tiCVAR_KN_GPU_PM_ScanOut_HDR;

TgCHAR                                      g_szKN_GPU_PM_Adapter[128];
TgCHAR                                      g_szKN_GPU_PM_Output[32];
TgUINT32                                    g_uiKN_GPU_PM_Width;
TgUINT32                                    g_uiKN_GPU_PM_Height;
TgUINT32                                    g_uiKN_GPU_PM_Refresh_Rate;
TgBOOL                                      g_bKN_GPU_PM_ScanOut_HDR;




/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */
/*  Private Data                                                                                                                                                          */
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */

TgMS_HINSTANCE                              g_hDLL_DXGI;
TgMS_HINSTANCE                              g_hDLL_DXGI_DEBUG;
TgMS_HINSTANCE                              g_hDLL_D3D12;

TgSINT32                                    (__stdcall *g_pfnCreateDXGIFactory)( REFIID, PP_TgVOID );
TgSINT32                                    (__stdcall* g_pfnD3D12SerializeRootSignature)( CP_D3D12_ROOT_SIG_DESC, D3D_ROOT_SIG_VER, PP_D3D_BLOB, PP_D3D_BLOB );
TgSINT32                                    (__stdcall* g_pfnD3D12CreateRootSignatureDeserializer )( CP_TgVOID, TgSIZE, REFIID, PP_TgVOID );
TgSINT32                                    (__stdcall* g_pfnD3D12SerializeVersionedRootSignature )( CP_D3D12_VER_ROOT_SIG_DESC, PP_D3D_BLOB, PP_D3D_BLOB );
TgSINT32                                    (__stdcall* g_pfnD3D12CreateVersionedRootSignatureDeserializer )( CP_TgVOID, TgSIZE, REFIID, PP_TgVOID );
TgSINT32                                    (__stdcall* g_pfnD3D12CreateDevice)( P_TgVOID, D3D_FEATURE_LEVEL, REFIID, PP_TgVOID );
TgSINT32                                    (__stdcall* g_pfnD3D12GetDebugInterface)( REFIID, PP_TgVOID );

IDXGIFactory5                               *g_pDXGIFactory_5;

STg2_KN_GPU_DXGI_Adapter                    g_asKN_GPU_DXGI_Adapter[KTgKN_GPU_MAX_ADAPTER];
STg2_KN_GPU_DX12_Context__Device            g_asKN_GPU_DX12_Context_Device[KTgKN_GPU_MAX_DEVC_CONTEXT]; /* #IMPLEMENT */
STg2_KN_GPU_DX12_Context__Output            g_asKN_GPU_DX12_Context_Output[KTgKN_GPU_MAX_OUTPUT]; /* #IMPLEMENT */
STg2_KN_GPU_DX12_Context__Data              g_asKN_GPU_DX12_Context_Data[KTgKN_GPU_MAX_RESOURCE_CONTEXT]; /* #IMPLEMENT */
STg2_KN_GPU_DX12_Context__External          g_asKN_GPU_DX12_Context_External[KTgKN_GPU_MAX_RESOURCE_CONTEXT]; /* #IMPLEMENT */
STg2_KN_GPU_DX12_Context                    g_asKN_GPU_DX12_Context[KTgKN_GPU_MAX_CONTEXT]; /* #IMPLEMENT */




/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */
/*  Private Functions                                                                                                                                                     */
/* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. */

/* ---- tgKN_GPU_PM_Query_Fixed_Memory ---------------------------------------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
TgSIZE tgKN_GPU_PM_Query_Fixed_Memory( TgVOID )
{
    return ( 0
             + sizeof( g_tiCVAR_KN_GPU_PM_Adapter )
             + sizeof( g_tiCVAR_KN_GPU_PM_Output )
             + sizeof( g_tiCVAR_KN_GPU_PM_Width )
             + sizeof( g_tiCVAR_KN_GPU_PM_Height )
             + sizeof( g_tiCVAR_KN_GPU_PM_Refresh_Rate )
             + sizeof( g_tiCVAR_KN_GPU_PM_ScanOut_HDR )
             + sizeof( g_szKN_GPU_PM_Adapter )
             + sizeof( g_szKN_GPU_PM_Output )
             + sizeof( g_uiKN_GPU_PM_Width )
             + sizeof( g_uiKN_GPU_PM_Height )
             + sizeof( g_uiKN_GPU_PM_Refresh_Rate )
             + sizeof( g_bKN_GPU_PM_ScanOut_HDR )
             + sizeof( g_hDLL_DXGI )
             + sizeof( g_hDLL_DXGI_DEBUG )
             + sizeof( g_hDLL_D3D12 )
             + sizeof( g_pfnCreateDXGIFactory )
             + sizeof( g_pfnD3D12SerializeRootSignature )
             + sizeof( g_pfnD3D12CreateRootSignatureDeserializer )
             + sizeof( g_pfnD3D12SerializeVersionedRootSignature )
             + sizeof( g_pfnD3D12CreateVersionedRootSignatureDeserializer )
             + sizeof( g_pfnD3D12CreateDevice )
             + sizeof( g_pfnD3D12GetDebugInterface )
             + sizeof( g_pDXGIFactory_5 )
             + sizeof( g_asKN_GPU_DXGI_Adapter )
             + sizeof( g_asKN_GPU_DX12_Context_Device )
             + sizeof( g_asKN_GPU_DX12_Context_Output )
             + sizeof( g_asKN_GPU_DX12_Context_Data )
             + sizeof( g_asKN_GPU_DX12_Context_External )
             + sizeof( g_asKN_GPU_DX12_Context )
    );
}