Increase the number of decoder surfaces for DXVA2/D3D11VA

We forgot to take into account frames buffered within Moonlight itself
This commit is contained in:
Cameron Gutman 2022-10-14 21:20:35 -05:00
parent 453fe6aea0
commit 02c781b8f4
3 changed files with 4 additions and 3 deletions

View file

@ -458,7 +458,8 @@ bool D3D11VARenderer::initialize(PDECODER_PARAMETERS params)
framesContext->width = FFALIGN(params->width, m_TextureAlignment);
framesContext->height = FFALIGN(params->height, m_TextureAlignment);
// We can have up to 16 reference frames plus a working surface
// We can have up to 16 reference frames plus a working surface plus the maximum
// number of frames in our various pacing and rendering queues.
framesContext->initial_pool_size = DECODER_BUFFER_POOL_SIZE;
AVD3D11VAFramesContext* d3d11vaFramesContext = (AVD3D11VAFramesContext*)framesContext->hwctx;

View file

@ -60,7 +60,7 @@ private:
ID3D11PixelShader* m_VideoBt2020LimPixelShader;
ID3D11Buffer* m_VideoVertexBuffer;
#define DECODER_BUFFER_POOL_SIZE 17
#define DECODER_BUFFER_POOL_SIZE 32
ID3D11ShaderResourceView* m_VideoTextureResourceViews[DECODER_BUFFER_POOL_SIZE][2];
SDL_SpinLock m_OverlayLock;

View file

@ -55,7 +55,7 @@ private:
int m_DisplayHeight;
struct dxva_context m_DXVAContext;
IDirect3DSurface9* m_DecSurfaces[19];
IDirect3DSurface9* m_DecSurfaces[32];
DXVA2_ConfigPictureDecode m_Config;
IDirectXVideoDecoderService* m_DecService;
IDirectXVideoDecoder* m_Decoder;