[vlc-commits] direct3d11: move the SPU quad variables into a d3d_quad_t
Steve Lhomme
git at videolan.org
Thu Aug 2 13:08:12 CEST 2018
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Fri Jul 13 11:35:40 2018 +0200| [88b45a339fc89aedd210baaef7a16769e22bbb1f] | committer: Steve Lhomme
direct3d11: move the SPU quad variables into a d3d_quad_t
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=88b45a339fc89aedd210baaef7a16769e22bbb1f
---
modules/video_output/win32/direct3d11.c | 39 ++++++++++++++++-----------------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 4edd954eb2..05db78427d 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -114,8 +114,7 @@ struct vout_display_sys_t
// SPU
vlc_fourcc_t pSubpictureChromas[2];
- ID3D11PixelShader *pSPUPixelShader[D3D11_MAX_SHADER_VIEW];
- const d3d_format_t *d3dregion_format;
+ d3d_quad_t regionQuad;
int d3dregion_count;
picture_t **d3dregions;
};
@@ -302,9 +301,9 @@ static int Open(vlc_object_t *object)
vd->info.has_pictures_invalid = vd->info.is_slow;
if (var_InheritBool(vd, "direct3d11-hw-blending") &&
- vd->sys->d3dregion_format != NULL)
+ vd->sys->regionQuad.formatInfo != NULL)
{
- vd->sys->pSubpictureChromas[0] = vd->sys->d3dregion_format->fourcc;
+ vd->sys->pSubpictureChromas[0] = vd->sys->regionQuad.formatInfo->fourcc;
vd->sys->pSubpictureChromas[1] = 0;
vd->info.subpicture_chromas = vd->sys->pSubpictureChromas;
}
@@ -1324,9 +1323,9 @@ static int SetupOutputFormat(vout_display_t *vd, video_format_t *fmt)
DxgiFormatMask( sys->picQuad.formatInfo->formatTexture, fmt );
/* check the region pixel format */
- sys->d3dregion_format = GetBlendableFormat(vd, VLC_CODEC_RGBA);
- if (!sys->d3dregion_format)
- sys->d3dregion_format = GetBlendableFormat(vd, VLC_CODEC_BGRA);
+ sys->regionQuad.formatInfo = GetBlendableFormat(vd, VLC_CODEC_RGBA);
+ if (!sys->regionQuad.formatInfo)
+ sys->regionQuad.formatInfo = GetBlendableFormat(vd, VLC_CODEC_BGRA);
if (Direct3D11CreateFormatResources(vd, fmt)) {
msg_Err(vd, "Failed to allocate format resources");
@@ -1506,11 +1505,11 @@ static int Direct3D11CreateGenericResources(vout_display_t *vd)
return VLC_EGENERIC;
}
- if (sys->d3dregion_format != NULL)
+ if (sys->regionQuad.formatInfo != NULL)
{
hr = D3D11_CompilePixelShader(vd, &sys->hd3d, sys->legacy_shader, &sys->d3d_dev,
- sys->d3dregion_format, &sys->display, TRANSFER_FUNC_SRGB, true,
- sys->pSPUPixelShader, NULL);
+ sys->regionQuad.formatInfo, &sys->display, TRANSFER_FUNC_SRGB, true,
+ sys->regionQuad.d3dpixelShader, NULL);
if (FAILED(hr))
{
for (size_t i=0; i<D3D11_MAX_SHADER_VIEW; i++)
@@ -1616,10 +1615,10 @@ static void Direct3D11DestroyResources(vout_display_t *vd)
ID3D11RenderTargetView_Release(sys->d3drenderTargetView[i]);
sys->d3drenderTargetView[i] = NULL;
}
- if (sys->pSPUPixelShader[i])
+ if (sys->regionQuad.d3dpixelShader[i])
{
- ID3D11PixelShader_Release(sys->pSPUPixelShader[i]);
- sys->pSPUPixelShader[i] = NULL;
+ ID3D11PixelShader_Release(sys->regionQuad.d3dpixelShader[i]);
+ sys->regionQuad.d3dpixelShader[i] = NULL;
}
}
@@ -1651,7 +1650,7 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
HRESULT hr;
int err;
- if (sys->d3dregion_format == NULL)
+ if (sys->regionQuad.formatInfo == NULL)
return VLC_EGENERIC;
int count = 0;
@@ -1672,7 +1671,7 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
picture_t *cache = sys->d3dregions[j];
if (cache != NULL && ((d3d_quad_t *) cache->p_sys)->picSys.texture[KNOWN_DXGI_INDEX]) {
ID3D11Texture2D_GetDesc( ((d3d_quad_t *) cache->p_sys)->picSys.texture[KNOWN_DXGI_INDEX], &texDesc );
- if (texDesc.Format == sys->d3dregion_format->formatTexture &&
+ if (texDesc.Format == sys->regionQuad.formatInfo->formatTexture &&
texDesc.Width == r->p_picture->format.i_width &&
texDesc.Height == r->p_picture->format.i_height) {
(*region)[i] = cache;
@@ -1694,7 +1693,7 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
if (unlikely(d3dquad==NULL)) {
continue;
}
- if (AllocateTextures(vd, &sys->d3d_dev, sys->d3dregion_format, &r->p_picture->format, 1, d3dquad->picSys.texture)) {
+ if (AllocateTextures(vd, &sys->d3d_dev, sys->regionQuad.formatInfo, &r->p_picture->format, 1, d3dquad->picSys.texture)) {
msg_Err(vd, "Failed to allocate %dx%d texture for OSD",
r->fmt.i_visible_width, r->fmt.i_visible_height);
for (int j=0; j<D3D11_MAX_SHADER_VIEW; j++)
@@ -1704,7 +1703,7 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
continue;
}
- if (D3D11_AllocateShaderView(vd, sys->d3d_dev.d3ddevice, sys->d3dregion_format,
+ if (D3D11_AllocateShaderView(vd, sys->d3d_dev.d3ddevice, sys->regionQuad.formatInfo,
d3dquad->picSys.texture, 0,
d3dquad->picSys.resourceView)) {
msg_Err(vd, "Failed to create %dx%d shader view for OSD",
@@ -1715,7 +1714,7 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
d3dquad->i_width = r->fmt.i_width;
d3dquad->i_height = r->fmt.i_height;
- d3dquad->formatInfo = sys->d3dregion_format;
+ d3dquad->formatInfo = sys->regionQuad.formatInfo;
err = D3D11_AllocateQuad(vd, &sys->d3d_dev, PROJECTION_MODE_RECTANGULAR, d3dquad);
if (err != VLC_SUCCESS)
{
@@ -1748,9 +1747,9 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
for (size_t j=0; j<D3D11_MAX_SHADER_VIEW; j++)
{
/* TODO use something more accurate if we have different formats */
- if (sys->pSPUPixelShader[j])
+ if (sys->regionQuad.d3dpixelShader[j])
{
- d3dquad->d3dpixelShader[j] = sys->pSPUPixelShader[j];
+ d3dquad->d3dpixelShader[j] = sys->regionQuad.d3dpixelShader[j];
ID3D11PixelShader_AddRef(d3dquad->d3dpixelShader[j]);
}
}
More information about the vlc-commits
mailing list