1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-11-29 01:24:11 +01:00

Compare commits

...

2 Commits

Author SHA1 Message Date
WinterSnowfall
218b67dd0c [d3d9] Use header back buffer limits during validation
Co-authored-by: Blisto91 <47954800+Blisto91@users.noreply.github.com>
2024-11-28 15:44:00 +01:00
Jeff
4e07302cbf [d3d9] Fix race condition in PIX events 2024-11-28 07:24:12 +00:00
2 changed files with 11 additions and 4 deletions

View File

@ -127,6 +127,7 @@ namespace dxvk {
INT STDMETHODCALLTYPE D3D9UserDefinedAnnotation::BeginEvent(
D3DCOLOR Color,
LPCWSTR Name) {
D3D9DeviceLock lock = m_container->LockDevice();
m_container->EmitCs([color = Color, labelName = dxvk::str::fromws(Name)](DxvkContext *ctx) {
VkDebugUtilsLabelEXT label;
label.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;
@ -143,6 +144,7 @@ namespace dxvk {
INT STDMETHODCALLTYPE D3D9UserDefinedAnnotation::EndEvent() {
D3D9DeviceLock lock = m_container->LockDevice();
m_container->EmitCs([](DxvkContext *ctx) {
ctx->endDebugLabel();
});
@ -155,6 +157,7 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D9UserDefinedAnnotation::SetMarker(
D3DCOLOR Color,
LPCWSTR Name) {
D3D9DeviceLock lock = m_container->LockDevice();
m_container->EmitCs([color = Color, labelName = dxvk::str::fromws(Name)](DxvkContext *ctx) {
VkDebugUtilsLabelEXT label;
label.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;

View File

@ -418,11 +418,19 @@ namespace dxvk {
// can not be higher than D3DSWAPEFFECT_FLIPEX.
if (unlikely(pPresentationParameters->SwapEffect > D3DSWAPEFFECT_FLIPEX))
return D3DERR_INVALIDCALL;
// 30 is the highest supported back buffer count for Ex devices.
if (unlikely(pPresentationParameters->BackBufferCount > D3DPRESENT_BACK_BUFFERS_MAX_EX))
return D3DERR_INVALIDCALL;
} else {
// The swap effect value on a non-Ex D3D9 device
// can not be higher than D3DSWAPEFFECT_COPY.
if (unlikely(pPresentationParameters->SwapEffect > D3DSWAPEFFECT_COPY))
return D3DERR_INVALIDCALL;
// 3 is the highest supported back buffer count for non-Ex devices.
if (unlikely(pPresentationParameters->BackBufferCount > D3DPRESENT_BACK_BUFFERS_MAX))
return D3DERR_INVALIDCALL;
}
// The swap effect value can not be 0.
@ -438,10 +446,6 @@ namespace dxvk {
&& pPresentationParameters->BackBufferCount > 1))
return D3DERR_INVALIDCALL;
// 3 is the highest supported back buffer count.
if (unlikely(pPresentationParameters->BackBufferCount > 3))
return D3DERR_INVALIDCALL;
// Valid fullscreen presentation intervals must be known values.
if (unlikely(!pPresentationParameters->Windowed
&& !(pPresentationParameters->PresentationInterval == D3DPRESENT_INTERVAL_DEFAULT