#if defined(TgCOMPILE_GPU_SUPPORT)
#define T( A, ... ) A##TX_CBE##__VA_ARGS__
#include "TgS Kernel - Resource [GPU].c_inc"
#undef T
TgKN_GPU_RSI_ID tgKN_GPU_TX_CBE_Inst__Init_Colour( C_TgKN_GPU_CXT_DATA_ID tiCT, C_TgUINTXX uiHash, C_TgCOLOUR32 sCL0, CPCU_TgCHAR pszName )
{
TgKN_GPU_RSI_ID tiTXI_CBE;
STg2_KN_GPU_TX_Surface sSF0;
if (KTgEMPTY_HASH == uiHash)
{
tgCN_PrintF( KTgCN_CHANEL_ERROR, TgT( "%-16.16s(%-32.32s): %-64.64s |\n" ), TgT("Kernel"), TgT("tgKN_GPU_Init_Colour_TXI_CBE"),
TgT("Failed to create a default colour texture because name was empty.") );
return (KTgKN_GPU_RSI_ID__INVALID);
};
tiTXI_CBE = tgKN_GPU_TX_CBE_Inst__Create( tiCT, ETgKN_GPU_ALLOCATOR__VIDEO_MEMORY_WRITEONLY, uiHash, ETgKN_GPU_FORMAT__R8G8B8A8_UNORM, 1, 4 );
if (TgFALSE == tgKN_GPU_RSI_ID_Is_Valid( tiTXI_CBE ))
{
tgCN_PrintF( KTgCN_CHANEL_ERROR, TgT( "%-16.16s(%-32.32s): %-64.64s |\n" ), TgT("Kernel"), TgT("tgKN_GPU_Init_Colour_TXI_CBE"),
TgT("Failed to create a default colour texture") );
return (KTgKN_GPU_RSI_ID__INVALID);
};
#if TgS_DEBUG_KERNEL
tgCN_PrintF( KTgCN_CHANEL_INITIALIZE | KTgCN_SEVERITY_7, TgT( "%-16.16s(%-32.32s): [Init] %-57.57s | id(% 4d) | % -9d BY\n" ), TgT("Kernel"),
TgT("tgKN_GPU_Init_Colour_TXI_CBE"), pszName ? pszName : TgT(""), tiTXI_CBE.m.iI, g_uiKN_Size_GPU_TX_CBE[tiTXI_CBE.m.iI] );
#endif
{
TgSINT32 iY, iX, iD;
union
{
P_TgUINT08 pui08;
P_TgUINT32 pui32;
} sMem;
for (iD = 0; iD < 4; ++iD)
{
tgKN_GPU_PM_TX_CBE__Lock( &sSF0, tiTXI_CBE, 0, iD );
for (iY = 0; iY < sSF0.m_iH; ++iY)
{
for (iX = 0; iX < sSF0.m_iW; ++iX)
{
sMem.pui08 = sSF0.m_pData + sSF0.m_iPitch*iY;
sMem.pui32[iX] = sCL0.m_uiColour;
};
};
tgKN_GPU_PM_TX_CBE__Unlock( tiTXI_CBE, 0, iD );
};
};
return (tiTXI_CBE);
}
TgKN_GPU_RSI_ID tgKN_GPU_TX_CBE_Inst__Create(
C_TgKN_GPU_CXT_DATA_ID tiCT, C_ETgKN_GPU_ALLOCATOR enAllocator, C_TgUINTXX uiHash, C_ETgKN_GPU_FORMAT enFMT, C_TgSINT32 niMIP, C_TgSINT32 iEdge )
{
STg2_KN_GPU_TX_CBE_DESC sTX_CBE;
union
{
TgSIZE ui;
P_STg2_KN_GPU_TX_CBE_DESC ps;
} sDesc;
TgKN_GPU_RS_ID tiTX_CBE;
TgKN_GPU_RSI_ID tiTXI_CBE;
TgCOMPILER_ASSERT( sizeof( TgSIZE ) == sizeof( P_STg2_KN_GPU_TX_CBE_DESC ), 0 );
sTX_CBE.m_niMIP = niMIP;
sTX_CBE.m_enFormat = enFMT;
sTX_CBE.m_uiFlags = 0;
sTX_CBE.m_uiHash = uiHash;
sTX_CBE.m_iEdge = iEdge;
sDesc.ps = &sTX_CBE;
tiTX_CBE = tgKN_GPU_TX_CBE__Load( KTgKN_FILE_ID__INVALID, sDesc.ui, enAllocator, KTgEMPTY_HASH );
if (TgTRUE != tgKN_GPU_RS_ID_Is_Valid( tiTX_CBE ))
{
tgCN_PrintF( KTgCN_CHANEL_ERROR, TgT( "%-16.16s(%-32.32s): %-64.64s\n" ), TgT("Kernel"), TgT("tgKN_GPU_TX_CBE__Create"), TgT("Failed to create texture") );
return (KTgKN_GPU_RSI_ID__INVALID);
};
tiTXI_CBE = tgKN_GPU_TX_CBE_Inst__Init( tiCT, tiTX_CBE );
if (TgTRUE != tgKN_GPU_RSI_ID_Is_Valid( tiTXI_CBE ))
{
tgKN_GPU_TX_CBE__Release( tiTX_CBE );
tgCN_PrintF( KTgCN_CHANEL_ERROR, TgT( "%-16.16s(%-32.32s): %-64.64s\n" ), TgT("Kernel"), TgT("tgKN_GPU_TX_CBE__Create"), TgT("Failed to create texture instance") );
return (KTgKN_GPU_RSI_ID__INVALID);
};
return (tiTXI_CBE);
}
static TgUINTXX tgKN_GPU_TX_CBE__Load_BIN_Internal(
C_TgKN_FILE_ID tiFile, C_TgSIZE uiFile_Offset, C_ETgKN_GPU_ALLOCATOR enAllocator, PCU_STg2_KN_GPU_RS_LIB_DESC pLibRS, C_TgUINTXX uiHash_RS, C_TgSIZE uiIndex )
{
TgBOOL bFileValid;
union
{
TgSIZE ui;
P_STg2_KN_GPU_TX_CBE_DESC ps;
} sDesc;
TgBOOL bResult;
TgUINTXX uiHash;
TgPARAM_CHECK((TgTRUE == tgKN_FILE_ID_Is_Valid( tiFile )) ^ (KTgEMPTY_HASH == uiHash_RS));
TgPARAM_CHECK(pLibRS == &g_sKN_Lib_TX_CBE_DESC);
TgPARAM_CHECK_INDEX(uiIndex, g_asKN_Lib_TX_CBE_Data);
TgPARAM_CHECK(ETgKN_GPU_ALLOCATOR__INVALID != enAllocator);
bFileValid = tgKN_FILE_ID_Is_Valid( tiFile );
sDesc.ui = uiFile_Offset;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_niMIP = TgTRUE != bFileValid ? sDesc.ps->m_niMIP : -1;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_enFormat = TgTRUE != bFileValid ? sDesc.ps->m_enFormat : ETgKN_GPU_FORMAT__UNKNNOWN;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_uiLastTouch = 0;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_uiPriority = 0;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_enAllocator = enAllocator;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_uiFlags = TgTRUE != bFileValid ? sDesc.ps->m_uiFlags : 0;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_pHW = 0;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_sTX.m_pData = 0;
g_asKN_Lib_TX_CBE_Data[uiIndex].m_iEdge = TgTRUE != bFileValid ? sDesc.ps->m_iEdge : -1;
uiHash = TgTRUE != bFileValid ? sDesc.ps->m_uiHash : uiHash_RS;
#if TgS_STAT_KERNEL || TgS_DEBUG_KERNEL
g_uiKN_Size_GPU_TX_CBE[uiIndex] = 0;
#endif
bResult = tgKN_GPU_PM_TX_CBE__Init( pLibRS, uiIndex, enAllocator, uiHash, tiFile, uiFile_Offset );
if (TgFALSE == bResult)
{
tgCN_PrintF( KTgCN_CHANEL_WARNING, TgT( "%-16.16s(%-32.32s): [Warn] %-57.57s\n" ), TgT("Kernel"), TgT("tgKN_GPU_TX_CBE__Load_BIN_Internal"),
TgT("Failed to initialize texture image") );
pLibRS->m_ptiRS[uiIndex] = KTgKN_GPU_RS_ID__INVALID;
return (KTgEMPTY_HASH);
};
#if TgS_DEBUG_KERNEL
tgCN_PrintF( KTgCN_CHANEL_LOADING, TgT( "%-16.16s(%-32.32s): [Load] %-32.32s | id(% 4d) | % -9d BY\n" ), TgT("Kernel"),
TgT("tgKN_GPU_TX_CBE__Load_BIN_Internal"), TgT(""), uiIndex, g_szKN_GPU_TX_CBE[uiIndex] );
#endif
#if TgS_STAT_KERNEL || TgS_DEBUG_KERNEL
pLibRS->m_uiSize += g_uiKN_Size_GPU_TX_CBE[uiIndex];
#endif
g_aiKN_Lib_TX_CBE_Ref[uiIndex] = 1;
return (uiHash);
}
#endif