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();
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) {