ПрограммированиеФорумГрафика

Directx 12 вопросы. (39 стр)

Страницы: 135 36 37 38 39 40 Следующая »
#570
12:35, 2 мар 2024

Вообще речь про что, я наблюдал у них там в примерах ряд нелогичности. Например, они делают проверку на D3D_ROOT_SIGNATURE_VERSION_1_1. И если поддержки нет, то выставляется D3D_ROOT_SIGNATURE_VERSION_1_0. Но, затем, какой бы не был результат, всё равно по коду используется D3D12_DESCRIPTOR_RANGE1, D3D12_ROOT_PARAMETER1 и D3D12_ROOT_SIGNATURE_DESC1. Я не знаю, может их можно и при D3D_ROOT_SIGNATURE_VERSION_1_0 использовать, но всё равно насторожился. Поэтому ко всем их примерам...

Про UPLOAD и DEFAULT понятно. UPLOAD же не обязательно должна быть память на CPU, она же может быть и на GPU, только с доступом для CPU. А вот DEFAULT будет уже или внутренней памятью для GPU, куда у CPU нет доступа, или же системной памятью с полным доступом для CPU. Всё зависит от дискретной или интегрированной карточки.

Вопрос в том, какой лучше поступать с константным буфером, данные которого нужно обновлять часто (матрица ModelViewProj). Достаточно просто создать его в UPLOAD или же, если если дискретная карточка, то создать ещё и в DEFAULT и копировать каждый кадр. Ну и термин per instance я не понял что означает, в плане с константным буфером.

#571
12:38, 2 мар 2024

s3dworld
> UPLOAD же не обязательно должна быть память на CPU, она же может быть и на GPU,
> только с доступом для CPU.
Нет, видеопамять с доступом для ЦП - это GPU_UPLOAD, а не UPLOAD. UPLOAD всегда находится в оперативной памяти.

#572
12:43, 2 мар 2024

prowkan
> Нет, видеопамять с доступом для ЦП - это GPU_UPLOAD, а не UPLOAD. UPLOAD всегда находится в оперативной памяти.
Интересно вот что. У меня в d3d12.h для перечисления D3D12_HEAP_TYPE есть только следующие значения:

- D3D12_HEAP_TYPE_DEFAULT
- D3D12_HEAP_TYPE_UPLOAD
- D3D12_HEAP_TYPE_READBACK
- D3D12_HEAP_TYPE_CUSTOM

Значения D3D12_HEAP_TYPE_GPU_UPLOAD у меня нет. Видимо это нужно что-то другое качать (у меня заголовочные файлы от Windows SDK с Visual Studio 2019). Это что же получается, в те времена нельзя было из GPU забрать результат работы? Честно говоря очень странно.

#573
12:45, 2 мар 2024

s3dworld
> Это что же получается, в те времена нельзя было из GPU забрать результат
> работы?
Почему? D3D12_HEAP_TYPE_READBACK же есть, он предназначен для этого.
А GPU_UPLOAD есть в новых Agility SDK.

#574
12:49, 2 мар 2024

prowkan
> Почему? D3D12_HEAP_TYPE_READBACK же есть, он предназначен для этого.
> А GPU_UPLOAD есть в новых Agility SDK.
А зачем тогда новое перечисление GPU_UPLOAD если это всё можно было сделать через READBACK?

#575
12:52, 2 мар 2024

s3dworld
Затем, что READBACK - это область оперативной памяти, оптимизированная для чтения со стороны ЦП, и поэтому используемая для получения данных с ГП.
GPU_UPLOAD - это область видеопамяти, в которую может писать ЦП, и обычно она используется для передачи данных в ГП.

#576
12:54, 2 мар 2024

prowkan
Вот я и про то, что сразу так не сделали. В Vulkan же сразу всё это было распланировано. Там, правда это на флагах.

#577
12:55, 2 мар 2024

s3dworld
> GPU_UPLOAD
Если видеокарты дескретной нет, эта GPU_UPLOAD будет аналогична READBACK или вообще работать не будет?

#578
13:06, 2 мар 2024

s3dworld
Да ёп, каким боком тут вообще READBACK? Куча GPU_UPLOAD оптизирована для передачи данных от центрального процессора к графическому! (Вы не заметили схожести названия кучи GPU_UPLOAD с кучей UPLOAD?) Единственное отличие GPU_UPLOAD от UPLOAD в том, что UPLOAD - это оперативная память, GPU_UPLOAD - память видеокарты. Насчёт
> вообще работать не будет
не знаю, скорее, вероятно, эта куча просто не будет поддерживаться (примерно как на видеокартах без Resizable BAR).

#579
13:09, 2 мар 2024

prowkan
Да по названиям понятно кто что делает. Вопрос в том, как что куда попадёт при указании DEFAULT и GPU_UPLOAD, если нет встроенной видеокарты.

#580
13:13, 2 мар 2024

s3dworld
DEFAULT на интегрированных видеокартах попадает в оперативную память, на дискретных - в локальную память видеокарты.
На счёт GPU_UPLOAD повторюсь, что точно не знаю.

#581
17:59, 21 мар 2024

Как определить какой из адаптеров интегрированный, а какой дискретный? В Vullan есть функция VkPhysicalDeviceProperties, где по полю deviceType можно определить VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU и другое. В Direct3D 12 я вижу DXGI_ADAPTER_DESC, DXGI_ADAPTER_DESC1, DXGI_ADAPTER_DESC2 и DXGI_ADAPTER_DESC3. Но там я ничего подобного не нашёл. Что, только через EnumAdapterByGpuPreference?

#582
3:35, 22 мар 2024

s3dworld

Самое близкое это D3D12_FEATURE_DATA_ARCHITECTURE::UMA

#583
(Правка: 13:06) 13:02, 7 авг 2024

А что происходит у Nvidia с поддержкой фич D3D12?
Обнаружил, что на RTX4060Ti с последним драйвером среди фич Render passes - No, Enhanced barriers - No. Притом что обе фичи появились в DirectX уже несколько лет как.
Планировалось их использовать для упрощения общего слоя между Vulkan и DX - а их то и нет.
Да и максимальная Shader model - 6.6, притом что 6.7 вышла в 2022

#584
13:11, 7 авг 2024

CatsCanFly
А кто придумывает фичи дх12?

Страницы: 135 36 37 38 39 40 Следующая »
ПрограммированиеФорумГрафика