Example #1
0
	D3D::SetDebugObjectName12(m_palette_uniform_buffer, "a constant buffer used in TextureCache::ConvertTexture");

	// Temporarily repurpose m_palette_stream_buffer as a copy source to populate initial data here.
	m_palette_stream_buffer->AllocateSpaceInBuffer(256 * 2, 256);

	u8* upload_heap_data_location = reinterpret_cast<u8*>(m_palette_stream_buffer->GetCPUAddressOfCurrentAllocation());

	memset(upload_heap_data_location, 0, 256 * 2);

	float paramsFormatZero[4] = { 15.f };
	float paramsFormatNonzero[4] = { 255.f };

	memcpy(upload_heap_data_location, paramsFormatZero, sizeof(paramsFormatZero));
	memcpy(upload_heap_data_location + 256, paramsFormatNonzero, sizeof(paramsFormatNonzero));

	D3D::current_command_list->CopyBufferRegion(m_palette_uniform_buffer, 0, m_palette_stream_buffer->GetBuffer(), m_palette_stream_buffer->GetOffsetOfCurrentAllocation(), 256 * 2);

	DX12::D3D::ResourceBarrier(D3D::current_command_list, m_palette_uniform_buffer, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER, 0);
}

TextureCache::~TextureCache()
{
	s_encoder->Shutdown();
	s_encoder.reset();

	s_efb_copy_stream_buffer.reset();

	if (s_texture_cache_entry_readback_buffer)
	{
		// Safe to destroy the readback buffer immediately, as the only time it's used is blocked until completion.
		s_texture_cache_entry_readback_buffer->Release();
Example #2
0
  m_palette_stream_buffer->AllocateSpaceInBuffer(256 * 2, 256);

  u8* upload_heap_data_location =
      reinterpret_cast<u8*>(m_palette_stream_buffer->GetCPUAddressOfCurrentAllocation());

  memset(upload_heap_data_location, 0, 256 * 2);

  float paramsFormatZero[4] = {15.f};
  float paramsFormatNonzero[4] = {255.f};

  memcpy(upload_heap_data_location, paramsFormatZero, sizeof(paramsFormatZero));
  memcpy(upload_heap_data_location + 256, paramsFormatNonzero, sizeof(paramsFormatNonzero));

  D3D::current_command_list->CopyBufferRegion(
      m_palette_uniform_buffer, 0, m_palette_stream_buffer->GetBuffer(),
      m_palette_stream_buffer->GetOffsetOfCurrentAllocation(), 256 * 2);

  DX12::D3D::ResourceBarrier(D3D::current_command_list, m_palette_uniform_buffer,
                             D3D12_RESOURCE_STATE_COPY_DEST,
                             D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER, 0);
}

TextureCache::~TextureCache()
{
  s_encoder->Shutdown();
  s_encoder.reset();

  s_efb_copy_stream_buffer.reset();

  if (s_texture_cache_entry_readback_buffer)
  {