D3D12: Cleanup.

This commit is contained in:
Branimir Karadžić
2017-12-14 17:51:55 -08:00
parent 8f9aa67771
commit e69f69e0cd
2 changed files with 28 additions and 21 deletions

View File

@@ -297,7 +297,7 @@ void showExampleDialog(entry::AppI* _app, const char* _errorText)
ImVec4 gpuColor(0.5f, 0.5f, 1.0f, 1.0f);
const float itemHeight = ImGui::GetTextLineHeightWithSpacing();
const float itemHeightWithSpacing = ImGui::GetFrameHeight();
const float itemHeightWithSpacing = ImGui::GetFrameHeightWithSpacing();
const double toCpuMs = 1000.0/double(stats->cpuTimerFreq);
const double toGpuMs = 1000.0/double(stats->gpuTimerFreq);
const float scale = 3.0f;

View File

@@ -3026,10 +3026,14 @@ data.NumQualityLevels = 0;
IDXGIFactory4* m_factory;
IDXGISwapChain3* m_swapChain;
ID3D12InfoQueue* m_infoQueue;
#else
#elif BX_PLATFORM_WINRT
IDXGIAdapter* m_adapter;
IDXGIFactory4* m_factory;
IDXGISwapChain1* m_swapChain;
#else
IDXGIAdapter* m_adapter;
IDXGIFactory2* m_factory;
IDXGISwapChain1* m_swapChain;
#endif // BX_PLATFORM_WINDOWS
int64_t m_presentElapsed;
@@ -4322,30 +4326,33 @@ data.NumQualityLevels = 0;
{
if (convert)
{
const uint32_t pitch = bx::strideAlign(width*bpp / 8, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
const uint32_t slice = bx::strideAlign(pitch * height, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t pitch = bx::strideAlign(bx::max<uint32_t>(width, 4)*bpp/8, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
const uint32_t slice = bx::strideAlign(bx::max<uint32_t>(height, 4)*pitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t size = slice*depth;
uint8_t* temp = (uint8_t*)BX_ALLOC(g_allocator, slice);
uint8_t* temp = (uint8_t*)BX_ALLOC(g_allocator, size);
bimg::imageDecodeToBgra8(temp
, mip.m_data
, mip.m_width
, mip.m_height
, pitch, mip.m_format
, pitch
, mip.m_format
);
srd[kk].pData = temp;
srd[kk].RowPitch = pitch;
srd[kk].SlicePitch = slice;
totalSize += slice;
totalSize += size;
}
else if (compressed)
{
uint32_t pitch = bx::strideAlign( (mip.m_width /blockInfo.blockWidth )*mip.m_blockSize, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
uint32_t slice = bx::strideAlign( (mip.m_height/blockInfo.blockHeight)*pitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t pitch = bx::strideAlign( (mip.m_width /blockInfo.blockWidth )*mip.m_blockSize, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
const uint32_t slice = bx::strideAlign( (mip.m_height/blockInfo.blockHeight)*pitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t size = slice*depth;
uint8_t* temp = (uint8_t*)BX_ALLOC(g_allocator, slice);
uint8_t* temp = (uint8_t*)BX_ALLOC(g_allocator, size);
bimg::imageCopy(temp
, mip.m_height/blockInfo.blockHeight
, mip.m_height/blockInfo.blockHeight
, (mip.m_width /blockInfo.blockWidth )*mip.m_blockSize
, mip.m_data
, pitch
@@ -4354,17 +4361,18 @@ data.NumQualityLevels = 0;
srd[kk].pData = temp;
srd[kk].RowPitch = pitch;
srd[kk].SlicePitch = slice;
totalSize += slice;
totalSize += size;
}
else
{
const uint32_t pitch = bx::strideAlign(mip.m_width*mip.m_bpp / 8, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
const uint32_t slice = bx::strideAlign(pitch * mip.m_height, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t slice = bx::strideAlign(mip.m_height*pitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t size = slice*depth;
uint8_t* temp = (uint8_t*)BX_ALLOC(g_allocator, slice);
uint8_t* temp = (uint8_t*)BX_ALLOC(g_allocator, slice*depth);
bimg::imageCopy(temp
, mip.m_height
, mip.m_width*mip.m_bpp / 8
, mip.m_width*mip.m_bpp/8
, mip.m_data
, pitch
);
@@ -4372,16 +4380,15 @@ data.NumQualityLevels = 0;
srd[kk].pData = temp;
srd[kk].RowPitch = pitch;
srd[kk].SlicePitch = slice;
totalSize += slice;
totalSize += size;
}
srd[kk].SlicePitch = mip.m_height*srd[kk].RowPitch;
++kk;
}
else
{
const uint32_t pitch = bx::strideAlign(width*bpp / 8, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT);
const uint32_t slice = bx::strideAlign(pitch * height, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
const uint32_t slice = bx::strideAlign(height*pitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT);
totalSize += slice;
}
@@ -4579,7 +4586,7 @@ data.NumQualityLevels = 0;
{
ID3D12Resource* staging = createCommittedResource(s_renderD3D12->m_device, HeapProperty::Upload, totalSize);
setState(commandList,D3D12_RESOURCE_STATE_COPY_DEST);
setState(commandList, D3D12_RESOURCE_STATE_COPY_DEST);
uint64_t result = UpdateSubresources(commandList
, m_ptr
@@ -4635,7 +4642,7 @@ data.NumQualityLevels = 0;
void TextureD3D12::update(ID3D12GraphicsCommandList* _commandList, uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem)
{
setState(_commandList, D3D12_RESOURCE_STATE_COPY_DEST);
D3D12_RESOURCE_STATES state = setState(_commandList, D3D12_RESOURCE_STATE_COPY_DEST);
const uint32_t subres = _mip + (_side * m_numMips);
const uint32_t bpp = bimg::getBitsPerPixel(bimg::TextureFormat::Enum(m_textureFormat) );
@@ -4684,7 +4691,7 @@ data.NumQualityLevels = 0;
D3D12_TEXTURE_COPY_LOCATION src = { staging, D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT, { layout } };
_commandList->CopyTextureRegion(&dst, _rect.m_x, _rect.m_y, 0, &src, &box);
setState(_commandList, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
setState(_commandList, state);
s_renderD3D12->m_cmd.release(staging);
}