mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 09:30:11 +01:00
d3d12: d3d12_video_encoder_references_manager_hevc remove double resize() and add reserve() to cached vectors
Reviewed-by: Pohsiang (John) Hsu <pohhsu@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38057>
This commit is contained in:
parent
ed53936308
commit
31c9874891
2 changed files with 20 additions and 3 deletions
|
|
@ -94,6 +94,7 @@ d3d12_video_encoder_friendly_frame_type_hevc(D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef MESA_DEBUG
|
||||
void
|
||||
d3d12_video_encoder_references_manager_hevc::print_l0_l1_lists()
|
||||
{
|
||||
|
|
@ -169,7 +170,9 @@ d3d12_video_encoder_references_manager_hevc::print_l0_l1_lists()
|
|||
modificationOrderList1ContentsString.c_str());
|
||||
}
|
||||
}
|
||||
#endif // MESA_DEBUG
|
||||
|
||||
#ifdef MESA_DEBUG
|
||||
void
|
||||
d3d12_video_encoder_references_manager_hevc::print_dpb()
|
||||
{
|
||||
|
|
@ -218,6 +221,7 @@ d3d12_video_encoder_references_manager_hevc::print_dpb()
|
|||
dpbContents.c_str());
|
||||
}
|
||||
}
|
||||
#endif // MESA_DEBUG
|
||||
|
||||
static D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
|
||||
d3d12_video_encoder_convert_frame_type_hevc(enum pipe_h2645_enc_picture_type picType)
|
||||
|
|
@ -271,7 +275,6 @@ d3d12_video_encoder_references_manager_hevc::begin_frame(const D3D12_VIDEO_ENCOD
|
|||
m_CurrentFrameReferencesData.pReferenceFramesReconPictureDescriptors.resize(hevcPic->dpb_size);
|
||||
m_CurrentFrameReferencesData.ReferenceTextures.pResources.resize(hevcPic->dpb_size);
|
||||
m_CurrentFrameReferencesData.ReferenceTextures.pSubresources.resize(hevcPic->dpb_size);
|
||||
m_CurrentFrameReferencesData.pReferenceFramesReconPictureDescriptors.resize(hevcPic->dpb_size);
|
||||
m_CurrentFrameReferencesData.ReconstructedPicTexture = { NULL, 0u };
|
||||
for (uint8_t i = 0; i < hevcPic->dpb_size; i++) {
|
||||
//
|
||||
|
|
@ -384,6 +387,8 @@ d3d12_video_encoder_references_manager_hevc::begin_frame(const D3D12_VIDEO_ENCOD
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef MESA_DEBUG
|
||||
print_dpb();
|
||||
print_l0_l1_lists();
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "d3d12_video_types.h"
|
||||
#include "d3d12_video_encoder_references_manager.h"
|
||||
#include "pipe/p_video_state.h"
|
||||
|
||||
class d3d12_video_encoder_references_manager_hevc : public d3d12_video_encoder_references_manager_interface
|
||||
{
|
||||
|
|
@ -48,7 +49,16 @@ class d3d12_video_encoder_references_manager_hevc : public d3d12_video_encoder_r
|
|||
{ }
|
||||
|
||||
d3d12_video_encoder_references_manager_hevc(bool fArrayOfTextures) : m_fArrayOfTextures(fArrayOfTextures)
|
||||
{ }
|
||||
{
|
||||
// Reserve memory for typical HEVC encoder usage to avoid per-frame allocations
|
||||
m_CurrentFrameReferencesData.pReferenceFramesReconPictureDescriptors.reserve(PIPE_H265_MAX_DPB_SIZE);
|
||||
m_CurrentFrameReferencesData.ReferenceTextures.pResources.reserve(PIPE_H265_MAX_DPB_SIZE);
|
||||
m_CurrentFrameReferencesData.ReferenceTextures.pSubresources.reserve(PIPE_H265_MAX_DPB_SIZE);
|
||||
m_CurrentFrameReferencesData.pList0ReferenceFrames.reserve(PIPE_H265_MAX_NUM_LIST_REF);
|
||||
m_CurrentFrameReferencesData.pList1ReferenceFrames.reserve(PIPE_H265_MAX_NUM_LIST_REF);
|
||||
m_CurrentFrameReferencesData.pList0RefPicModifications.reserve(PIPE_H265_MAX_NUM_LIST_REF);
|
||||
m_CurrentFrameReferencesData.pList1RefPicModifications.reserve(PIPE_H265_MAX_NUM_LIST_REF);
|
||||
}
|
||||
|
||||
~d3d12_video_encoder_references_manager_hevc()
|
||||
{ }
|
||||
|
|
@ -56,8 +66,10 @@ class d3d12_video_encoder_references_manager_hevc : public d3d12_video_encoder_r
|
|||
private:
|
||||
// Class helpers
|
||||
void update_fifo_dpb_push_front_cur_recon_pic();
|
||||
#ifdef MESA_DEBUG
|
||||
void print_dpb();
|
||||
void print_l0_l1_lists();
|
||||
#endif
|
||||
|
||||
// Class members
|
||||
struct d3d12_video_dpb
|
||||
|
|
@ -80,7 +92,7 @@ class d3d12_video_encoder_references_manager_hevc : public d3d12_video_encoder_r
|
|||
current_frame_references_data m_CurrentFrameReferencesData;
|
||||
|
||||
bool m_isCurrentFrameUsedAsReference = false;
|
||||
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 m_curFrameState = {};
|
||||
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 m_curFrameState = {};
|
||||
bool m_fArrayOfTextures = false;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue