Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (7)
......@@ -142,7 +142,7 @@ static picture_context_t *d3d11va_pic_context_copy(picture_context_t *ctx)
return &pic_ctx->ctx.s;
}
static struct d3d11va_pic_context *CreatePicContext(
static struct d3d11va_pic_context *CreatePicContext(ID3D11Resource *p_resource,
UINT slice,
ID3D11ShaderResourceView *renderSrc[DXGI_MAX_SHADER_VIEW],
vlc_video_context *vctx)
......@@ -155,9 +155,6 @@ static struct d3d11va_pic_context *CreatePicContext(
vlc_video_context_Hold(vctx),
};
ID3D11Resource *p_resource;
ID3D11ShaderResourceView_GetResource(renderSrc[0], &p_resource);
pic_ctx->ctx.picsys.slice_index = slice;
pic_ctx->ctx.picsys.sharedHandle = INVALID_HANDLE_VALUE;
for (int i=0;i<DXGI_MAX_SHADER_VIEW; i++)
......@@ -166,7 +163,6 @@ static struct d3d11va_pic_context *CreatePicContext(
pic_ctx->ctx.picsys.renderSrc[i] = renderSrc[i];
}
AcquireD3D11PictureSys(&pic_ctx->ctx.picsys);
ID3D11Resource_Release(p_resource);
return pic_ctx;
}
......@@ -182,9 +178,13 @@ static picture_context_t* NewSurfacePicContext(vlc_va_t *va, vlc_va_surface_t *v
for (size_t i=0; i<DXGI_MAX_SHADER_VIEW; i++)
resourceView[i] = sys->renderSrc[viewDesc.Texture2D.ArraySlice*DXGI_MAX_SHADER_VIEW + i];
struct d3d11va_pic_context *pic_ctx = CreatePicContext(
ID3D11Resource *p_resource;
ID3D11VideoDecoderOutputView_GetResource(surface, &p_resource);
struct d3d11va_pic_context *pic_ctx = CreatePicContext(p_resource,
viewDesc.Texture2D.ArraySlice,
resourceView, sys->vctx);
ID3D11Resource_Release(p_resource);
if (unlikely(pic_ctx==NULL))
return NULL;
pic_ctx->va_surface = va_surface;
......@@ -485,13 +485,6 @@ static int DxSetupOutput(vlc_va_t *va, const directx_va_mode_t *mode, const vide
return VLC_EGENERIC;
}
static bool CanUseDecoderPadding(const vlc_va_sys_t *sys)
{
/* Qualcomm hardware has issues with textures and pixels that should not be
* part of the decoded area */
return sys->d3d_dev->adapterDesc.VendorId != GPU_MANUFACTURER_QUALCOMM;
}
/**
* It creates a Direct3D11 decoder using the given video format
*/
......
......@@ -538,6 +538,7 @@ d3d11_decoder_device_t *(D3D11_CreateDevice)(vlc_object_t *obj,
{
if (sys->external.cleanupDeviceCb)
sys->external.cleanupDeviceCb( sys->external.opaque );
msg_Err(obj, "Failed to setup external D3D11 device");
goto error;
}
hr = D3D11_CreateDeviceExternal(obj, static_cast<ID3D11DeviceContext*>(out.d3d11.device_context), out.d3d11.context_mutex,
......@@ -556,14 +557,20 @@ d3d11_decoder_device_t *(D3D11_CreateDevice)(vlc_object_t *obj,
if (likely(hKernel32 != NULL))
isWin81OrGreater = GetProcAddress(hKernel32, "IsProcessCritical") != NULL;
if (!isWin81OrGreater)
{
msg_Dbg(obj, "D3D11 not forced on Win7/8");
goto error;
}
}
#endif
hr = CreateDevice( obj, adapter, hw_decoding, &sys->dec_device.d3d_dev );
}
else
{
msg_Dbg(obj, "Unsupported engine type %d", engineType);
goto error;
}
}
error:
......
......@@ -910,9 +910,18 @@ static const d3d_format_t *GetDisplayFormatByDepth(vout_display_t *vd, uint8_t b
UINT supportFlags = D3D11_FORMAT_SUPPORT_SHADER_LOAD;
if (from_processor)
supportFlags |= D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT;
return FindD3D11Format( vd, sys->d3d_dev, 0, rgb_yuv,
const d3d_format_t *res;
res = FindD3D11Format( vd, sys->d3d_dev, 0, rgb_yuv,
bit_depth, widthDenominator+1, heightDenominator+1, alpha_bits,
DXGI_CHROMA_CPU, supportFlags );
if (res == nullptr)
{
msg_Dbg(vd, "No display format for %u-bit %u:%u%s%s%s", bit_depth, widthDenominator, heightDenominator,
rgb_yuv & DXGI_YUV_FORMAT ? " YUV" : "",
rgb_yuv & DXGI_RGB_FORMAT ? " RGB" : "",
from_processor ? " supporting video processor" : "");
}
return res;
}
static const d3d_format_t *GetBlendableFormat(vout_display_t *vd, vlc_fourcc_t i_src_chroma)
......@@ -969,8 +978,11 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmtp, vlc_video_co
if (err != VLC_SUCCESS)
{
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
if ( sys->swapCb == D3D11_LocalSwapchainSwap )
if ( sys->swapCb == D3D11_LocalSwapchainSwap && sys->outside_opaque )
{
D3D11_LocalSwapchainCleanupDevice( sys->outside_opaque );
sys->outside_opaque = nullptr;
}
#endif // WINAPI_PARTITION_DESKTOP
return err;
}
......@@ -1020,8 +1032,11 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmtp, vlc_video_co
if (Direct3D11CreateGenericResources(vd)) {
msg_Err(vd, "Failed to allocate resources");
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
if ( sys->swapCb == D3D11_LocalSwapchainSwap )
if ( sys->swapCb == D3D11_LocalSwapchainSwap && sys->outside_opaque )
{
D3D11_LocalSwapchainCleanupDevice( sys->outside_opaque );
sys->outside_opaque = nullptr;
}
#endif // WINAPI_PARTITION_DESKTOP
return VLC_EGENERIC;
}
......@@ -1042,12 +1057,19 @@ static const d3d_format_t *SelectOutputFormat(vout_display_t *vd, const video_fo
const d3d_format_t *res = nullptr;
d3d11_video_context_t *vtcx_sys = GetD3D11ContextPrivate(vctx);
if (vtcx_sys != NULL &&
D3D11_DeviceSupportsFormat( sys->d3d_dev, vtcx_sys->format, D3D11_FORMAT_SUPPORT_SHADER_LOAD ))
if (vtcx_sys != NULL)
{
res = D3D11_RenderFormat(vtcx_sys->format, vtcx_sys->secondary ,true);
if (res != nullptr)
return res;
if (D3D11_DeviceSupportsFormat( sys->d3d_dev, vtcx_sys->format, D3D11_FORMAT_SUPPORT_SHADER_LOAD ))
{
res = D3D11_RenderFormat(vtcx_sys->format, vtcx_sys->secondary ,true);
if (likely(res != nullptr))
return res;
msg_Dbg(vd, "Unsupported rendering texture format %s/%s", DxgiFormatToStr(vtcx_sys->format), DxgiFormatToStr(vtcx_sys->secondary));
}
else
{
msg_Dbg(vd, "Texture format %s not supported by shaders", DxgiFormatToStr(vtcx_sys->format));
}
}
// look for the requested pixel format first
......@@ -1055,6 +1077,8 @@ static const d3d_format_t *SelectOutputFormat(vout_display_t *vd, const video_fo
if (res != nullptr)
return res;
msg_Dbg(vd, "Direct rendering not usable for %4.4s", (char*)&fmt->i_chroma);
// look for any pixel format that we can handle with enough pixels per channel
uint8_t bits_per_channel;
uint8_t widthDenominator, heightDenominator;
......@@ -1189,8 +1213,11 @@ static void Direct3D11Close(vout_display_t *vd)
Direct3D11DestroyResources(vd);
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
if ( sys->swapCb == D3D11_LocalSwapchainSwap )
if ( sys->swapCb == D3D11_LocalSwapchainSwap && sys->outside_opaque )
{
D3D11_LocalSwapchainCleanupDevice( sys->outside_opaque );
sys->outside_opaque = nullptr;
}
#endif // WINAPI_PARTITION_DESKTOP
if (sys->d3d_dev && sys->d3d_dev == &sys->local_d3d_dev->d3d_dev)
......@@ -1199,39 +1226,6 @@ static void Direct3D11Close(vout_display_t *vd)
msg_Dbg(vd, "Direct3D11 display adapter closed");
}
static bool CanUseTextureArray(vout_display_t *vd)
{
vout_display_sys_t *sys = static_cast<vout_display_sys_t *>(vd->sys);
// 15.200.1062.1004 is wrong - 2015/08/03 - 15.7.1 WHQL
// 21.19.144.1281 is wrong -
// 22.19.165.3 is good - 2017/05/04 - ReLive Edition 17.5.1
const auto WDDM_os = []{
struct wddm_version wddm = {};
wddm.wddm = 21; // starting with drivers designed for W10 Anniversary Update
return wddm;
}();
if (D3D11CheckDriverVersion(sys->d3d_dev, GPU_MANUFACTURER_AMD, &WDDM_os) != VLC_SUCCESS)
{
msg_Dbg(vd, "AMD driver too old, fallback to legacy shader mode");
return false;
}
// xx.xx.1000.xxx drivers can't happen here for WDDM > 2.0
const auto WDDM_build = []{
struct wddm_version wddm = {};
wddm.revision = 162;
return wddm;
}();
if (D3D11CheckDriverVersion(sys->d3d_dev, GPU_MANUFACTURER_AMD, &WDDM_build) != VLC_SUCCESS)
{
msg_Dbg(vd, "Bogus AMD driver detected, fallback to legacy shader mode");
return false;
}
return true;
}
static bool BogusZeroCopy(const vout_display_t *vd)
{
vout_display_sys_t *sys = static_cast<vout_display_sys_t *>(vd->sys);
......@@ -1265,7 +1259,6 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma
HRESULT hr;
sys->legacy_shader = sys->d3d_dev->feature_level < D3D_FEATURE_LEVEL_10_0 ||
(sys->scaleProc == nullptr && !CanUseTextureArray(vd)) ||
BogusZeroCopy(vd) || (sys->tonemapProc == NULL && !is_d3d11_opaque(fmt->i_chroma));
d3d_shader_blob pPSBlob[DXGI_MAX_RENDER_TARGET] = { };
......