| 2940 | } |
| 2941 | |
| 2942 | HRESULT CDX11VideoProcessor::UpdateConvertColorShader() |
| 2943 | { |
| 2944 | m_pPSConvertColor.Release(); |
| 2945 | m_pPSConvertColorDeint.Release(); |
| 2946 | ID3DBlob* pShaderCode = nullptr; |
| 2947 | |
| 2948 | int convertType = (m_bConvertToSdr && !(m_bHdrPassthroughSupport && (m_bHdrPassthrough || m_bHdrLocalToneMapping))) ? SHADER_CONVERT_TO_SDR |
| 2949 | : (m_bHdrPassthroughSupport && (m_bHdrPassthrough || m_bHdrLocalToneMapping) && m_srcExFmt.VideoTransferFunction == MFVideoTransFunc_HLG) ? SHADER_CONVERT_TO_PQ |
| 2950 | : SHADER_CONVERT_NONE; |
| 2951 | |
| 2952 | MediaSideDataDOVIMetadata* pDOVIMetadata = m_Dovi.bValid ? &m_Dovi.msd : nullptr; |
| 2953 | |
| 2954 | HRESULT hr = GetShaderConvertColor(true, |
| 2955 | m_srcWidth, |
| 2956 | m_TexSrcVideo.desc.Width, m_TexSrcVideo.desc.Height, |
| 2957 | m_srcRect, m_srcParams, m_srcExFmt, pDOVIMetadata, |
| 2958 | m_iChromaScaling, convertType, false, |
| 2959 | &pShaderCode); |
| 2960 | if (S_OK == hr) { |
| 2961 | hr = m_pDevice->CreatePixelShader(pShaderCode->GetBufferPointer(), pShaderCode->GetBufferSize(), nullptr, &m_pPSConvertColor); |
| 2962 | pShaderCode->Release(); |
| 2963 | } |
| 2964 | |
| 2965 | if (m_bInterlaced && m_srcParams.Subsampling == 420 && m_srcParams.pDX11Planes) { |
| 2966 | hr = GetShaderConvertColor(true, |
| 2967 | m_srcWidth, |
| 2968 | m_TexSrcVideo.desc.Width, m_TexSrcVideo.desc.Height, |
| 2969 | m_srcRect, m_srcParams, m_srcExFmt, pDOVIMetadata, |
| 2970 | m_iChromaScaling, convertType, true, |
| 2971 | &pShaderCode); |
| 2972 | if (S_OK == hr) { |
| 2973 | hr = m_pDevice->CreatePixelShader(pShaderCode->GetBufferPointer(), pShaderCode->GetBufferSize(), nullptr, &m_pPSConvertColorDeint); |
| 2974 | pShaderCode->Release(); |
| 2975 | } |
| 2976 | } |
| 2977 | |
| 2978 | if (FAILED(hr)) { |
| 2979 | ASSERT(0); |
| 2980 | UINT resid = 0; |
| 2981 | if (m_srcParams.cformat == CF_YUY2) { |
| 2982 | resid = IDF_PS_11_CONVERT_YUY2; |
| 2983 | } |
| 2984 | else if (m_srcParams.pDX11Planes) { |
| 2985 | if (m_srcParams.pDX11Planes->FmtPlane3) { |
| 2986 | if (m_srcParams.cformat == CF_YV12 || m_srcParams.cformat == CF_YV16 || m_srcParams.cformat == CF_YV24) { |
| 2987 | resid = IDF_PS_11_CONVERT_PLANAR_YV; |
| 2988 | } else { |
| 2989 | resid = IDF_PS_11_CONVERT_PLANAR; |
| 2990 | } |
| 2991 | } else { |
| 2992 | resid = IDF_PS_11_CONVERT_BIPLANAR; |
| 2993 | } |
| 2994 | } |
| 2995 | else { |
| 2996 | resid = IDF_PS_11_CONVERT_COLOR; |
| 2997 | } |
| 2998 | EXECUTE_ASSERT(S_OK == CreatePShaderFromResource(&m_pPSConvertColor, resid)); |
| 2999 |
nothing calls this directly
no test coverage detected