Exemplo n.º 1
0
static __forceinline void FreeContiguousMemory( void* pData )
{
#if defined(_XBOX1)
    return D3D_FreeContiguousMemory(pData);
#elif defined(_XBOX360)
    return XMemFree( pData, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_AtgResource,
                                                    0, 0, 0, XALLOC_MEMTYPE_PHYSICAL ) );
#endif
}
Exemplo n.º 2
0
//-----------------------------------------------------------------------------
// Name: Destroy()
// Desc: Tears down the packed resource data
//-----------------------------------------------------------------------------
VOID CXBPackedResource::Destroy() 
{
    if( m_pSysMemData != NULL )
    {
        delete[] m_pSysMemData;
        m_pSysMemData = NULL;
    }
    if( m_pVidMemData != NULL )
    {
        D3D_FreeContiguousMemory( m_pVidMemData );
        m_pVidMemData = NULL;
    }
    m_dwNumResources = 0L;
    m_pResourceTags  = NULL;
}
Exemplo n.º 3
0
void CRGBRenderer::Delete444PTexture()
{
  CSingleLock lock(g_graphicsContext);
  if (m_444PTexture[FIELD_FULL])
  {
    D3DLOCKED_RECT lr;
    m_444PTexture[FIELD_FULL]->LockRect(0, &lr, NULL, 0);
    PVOID data = lr.pBits;
    m_444PTexture[FIELD_FULL]->UnlockRect(0);

    for(int f=0;f<MAX_FIELDS;f++)
    {
      m_444PTexture[f]->BlockUntilNotBusy();
      SAFE_DELETE(m_444PTexture[f]);
    }

    D3D_FreeContiguousMemory(data);
    CLog::Log(LOGDEBUG, "Deleted 444P video texture");
  }
}
Exemplo n.º 4
0
//-----------------------------------------------------------------------------
// Name: LoadPackedResource()
// Desc: Loads all the texture resources from the given XPR.
//-----------------------------------------------------------------------------
HRESULT RenderingManagerC::LoadPackedResource()
{
	// Open the file to read the XPR headers
	FILE* file = fopen( "D:\\Media\\Resource.xpr", "rb" );
	if( NULL == file )
		return E_FAIL;

	// Read in and verify the XPR magic header
	XPR_HEADER xprh;
	if( fread( &xprh, sizeof(XPR_HEADER), 1, file ) != 1 )
	{
		fclose(file);
		return E_FAIL;
	}

	if( xprh.dwMagic != XPR_MAGIC_VALUE )
	{
		OutputDebugStringA( "ERROR: Invalid Xbox Packed Resource (.xpr) file" );
		fclose( file );
		return E_INVALIDARG;
	}

	// Compute memory requirements
	DWORD dwSysMemDataSize = xprh.dwHeaderSize - sizeof(XPR_HEADER);
	DWORD dwVidMemDataSize = xprh.dwTotalSize - xprh.dwHeaderSize;

	// Allocate memory
	g_pResourceSysMemData = new BYTE[dwSysMemDataSize];
	g_pResourceVidMemData = (BYTE*)D3D_AllocContiguousMemory( dwVidMemDataSize, D3DTEXTURE_ALIGNMENT );

	// Read in the data from the file
	if( fread( g_pResourceSysMemData, dwSysMemDataSize, 1, file ) != 1 ||
		fread( g_pResourceVidMemData, dwVidMemDataSize, 1, file ) != 1 )

	{
		delete[] g_pResourceSysMemData;
		D3D_FreeContiguousMemory( g_pResourceVidMemData );
		fclose( file );
		return E_FAIL;
	}

	// Done with the file
	fclose( file );

	// Loop over resources, calling Register()
	BYTE* pData = g_pResourceSysMemData;

	for( DWORD i = 0; i < resource_NUM_RESOURCES; i++ )
	{
		// Get the resource
		LPDIRECT3DRESOURCE8 pResource = (LPDIRECT3DRESOURCE8)pData;

		// Register the resource
		pResource->Register( g_pResourceVidMemData );

		// Advance the pointer
		switch( pResource->GetType() )
		{
		case D3DRTYPE_TEXTURE:       pData += sizeof(D3DTexture);       break;
		case D3DRTYPE_VOLUMETEXTURE: pData += sizeof(D3DVolumeTexture); break;
		case D3DRTYPE_CUBETEXTURE:   pData += sizeof(D3DCubeTexture);   break;
		case D3DRTYPE_VERTEXBUFFER:  pData += sizeof(D3DVertexBuffer);  break;
		case D3DRTYPE_INDEXBUFFER:   pData += sizeof(D3DIndexBuffer);   break;
		case D3DRTYPE_PALETTE:       pData += sizeof(D3DPalette);       break;
		default:                     return E_FAIL;
		}
	}


	return S_OK;
}