mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
d3d12: Remove per frame allocation slice_sizes(picture->num_slice_descriptors)
Reviewed-by: Pohsiang (John) Hsu <pohhsu@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37982>
This commit is contained in:
parent
53e07e78c7
commit
ca2a1e470a
2 changed files with 5 additions and 4 deletions
|
|
@ -606,6 +606,7 @@ struct d3d12_video_encoder
|
|||
pipe_resource* m_SliceHeaderRepackBuffer = NULL;
|
||||
std::vector<uint8_t> m_BitstreamHeadersBuffer;
|
||||
std::vector<uint8_t> m_StagingHeadersBuffer;
|
||||
std::vector<int> m_TempSliceSizesBuffer; // Temporary buffer to avoid per-frame allocations in slice configuration
|
||||
std::vector<EncodedBitstreamResolvedMetadata> m_spEncodedFrameMetadata;
|
||||
|
||||
struct D3D12EncodeCapabilities m_currentEncodeCapabilities = {};
|
||||
|
|
|
|||
|
|
@ -644,11 +644,11 @@ d3d12_video_encoder_negotiate_current_hevc_slices_configuration(struct d3d12_vid
|
|||
if ((picture->slice_mode == PIPE_VIDEO_SLICE_MODE_BLOCKS) && (picture->num_slice_descriptors > 1)) {
|
||||
/* Some apps send all same size slices minus 1 slice in any position in the descriptors */
|
||||
/* Lets validate that there are at most 2 different slice sizes in all the descriptors */
|
||||
std::vector<int> slice_sizes(picture->num_slice_descriptors);
|
||||
pD3D12Enc->m_TempSliceSizesBuffer.resize(picture->num_slice_descriptors);
|
||||
for (uint32_t i = 0; i < picture->num_slice_descriptors; i++)
|
||||
slice_sizes[i] = picture->slices_descriptors[i].num_ctu_in_slice;
|
||||
std::sort(slice_sizes.begin(), slice_sizes.end());
|
||||
bool bUniformSizeSlices = (std::unique(slice_sizes.begin(), slice_sizes.end()) - slice_sizes.begin()) <= 2;
|
||||
pD3D12Enc->m_TempSliceSizesBuffer[i] = picture->slices_descriptors[i].num_ctu_in_slice;
|
||||
std::sort(pD3D12Enc->m_TempSliceSizesBuffer.begin(), pD3D12Enc->m_TempSliceSizesBuffer.end());
|
||||
bool bUniformSizeSlices = (std::unique(pD3D12Enc->m_TempSliceSizesBuffer.begin(), pD3D12Enc->m_TempSliceSizesBuffer.end()) - pD3D12Enc->m_TempSliceSizesBuffer.begin()) <= 2;
|
||||
|
||||
uint32_t subregion_block_pixel_size = pD3D12Enc->m_currentEncodeCapabilities.m_currentResolutionSupportCaps.SubregionBlockPixelsSize;
|
||||
uint32_t num_subregions_per_scanline =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue