1

Тема: Попередження при запуску додатку Qt D3D11 WARNING: ID3D11Device

При запуску програми в режимі Debug з'являється ось таке:
Available HW decoding frameworks:
     d3d11va
     dxva2
Available HW encoding frameworks:
     d3d11va
     dxva2
D3D11 WARNING: ID3D11Device::CreateInputLayout: The provided input signature expects to read an element with SemanticName/Index: 'TEXCOORD'/2 and component(s) of the type 'int32'.  However, the matching entry in the Input Layout declaration, element[2], specifies mismatched format: 'R16G16_UINT'.  This is not an error, since behavior is well defined: The element format determines what data conversion algorithm gets applied before it shows up in a shader register. Independently, the shader input signature defines how the shader will interpret the data that has been placed in its input registers, with no change in the bits stored.  It is valid for the application to reinterpret data as a different type once it is in the vertex shader, so this warning is issued just in case reinterpretation was not intended by the author. [ STATE_CREATION WARNING #391: CREATEINPUTLAYOUT_TYPE_MISMATCH]


Хтось знає що з цим робити?

2

Re: Попередження при запуску додатку Qt D3D11 WARNING: ID3D11Device

Мені чомусь здається, що ви знову чогось не договорюєте.. Це точно весь вивід, який вам видав зневаджувач? Ех.. Ну, гаразд, яке питання..
З погляду D3D11, це попередження з'являється якщо ви створили InputLayout компонентів з таким типом:

D3D11_INPUT_ELEMENT_DESC inputLayout[] =
{
    { "TEXCOORD", 0, DXGI_FORMAT_R16G16_UINT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
    /* інші компоненти "COLOR", "POSITION" тощо. */
};
d3d11Device->CreateInputLayout(inputLayout, numElements, ...);

Зверніть увагу на вказаний тип компонента -- DXGI_FORMAT_R16G16_UINT.
Але у вершинному шейдері тип цього компонента було вказано іншим, як от

struct VertexShaderInput
{
    int2 texcoord : TEXCOORD;
    /* інші компоненти "COLOR", "POSITION" тощо. */
};

Тут тип вже вказано int2 (тобто int32), хоча мало б бути щось типу ushort2 (тобто uint16). Але як я пам'ятаю HLSL підтримує 16-бітні типи лише з переданим ключиком -enable-16bit-types.
Щоб це виправити потрібно виправити шейдер або те, як ви створюєте InputLayout. Ну, або знати більше контексту, хто і звідки це кидає. Не виключено, що це може бути баг і у самому Qt.

Подякували: leofun011

3

Re: Попередження при запуску додатку Qt D3D11 WARNING: ID3D11Device

Швидше за все, справа в Chrome, на основі якого створено QtWebEngineView.
І в інших бачу така ж проблема з ним.,
Але на Manjaro в мене Chromium стоїть.
Тому таке попередження вилазить лише на Віндовс 11.

4

Re: Попередження при запуску додатку Qt D3D11 WARNING: ID3D11Device

А на Manjaro почало ось таке вилазити:
libva error: /usr/lib/dri/i965_drv_video.so init failed

5

Re: Попередження при запуску додатку Qt D3D11 WARNING: ID3D11Device

Teg Miles написав:

Але на Manjaro в мене Chromium стоїть.
Тому таке попередження вилазить лише на Віндовс 11.

Це не має стосунку до того, який браузер у вас встановлено.

Teg Miles написав:

Швидше за все, справа в Chrome, на основі якого створено QtWebEngineView.
І в інших бачу така ж проблема з ним.

Швидше за все справа саме в Qt6, а не в Chromium. І так, коли збираєте під віндовс, переконайтесь, що збірка відбувається саме через MSVC, бо MinGW не збере коректно Chromium під вінду.

Подякували: leofun011

6

Re: Попередження при запуску додатку Qt D3D11 WARNING: ID3D11Device

wander написав:
Teg Miles написав:

Але на Manjaro в мене Chromium стоїть.
Тому таке попередження вилазить лише на Віндовс 11.

Це не має стосунку до того, який браузер у вас встановлено.

Teg Miles написав:

Швидше за все, справа в Chrome, на основі якого створено QtWebEngineView.
І в інших бачу така ж проблема з ним.

Швидше за все справа саме в Qt6, а не в Chromium. І так, коли збираєте під віндовс, переконайтесь, що збірка відбувається саме через MSVC, бо MinGW не збере коректно Chromium під вінду.

MinGW не підтримує QWebEngineView, тому MSVC — це єдиний варіант для роботи з цим віджетом.