Skip to main content
Grammar, typos
Source Link
DMGregory
  • 140.8k
  • 23
  • 257
  • 401

DirectX: Diff Difference between Command Lists and Deferred context

I'm new to DirectX and I feel like I killed Google search but still can notcannot find information about the difference between these:

  • Immediate context + Command Lists
  • Immediate context + Deferred context (Command List)

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that a Command List can be created without a deferred context, also. Also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found from thatthis article, thatwhether all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute it'sits internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result? And

And if yes, then what is a Deferred Context then? What does it do that the Command List can notcannot?

Just now I can notcannot find the difference, but I'm sure that itthere is one.

DirectX: Diff between Command Lists and Deferred context

I'm new to DirectX and I feel like I killed Google search but still can not find information about the difference between these:

  • Immediate context + Command Lists
  • Immediate context + Deferred context (Command List)

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that Command List can be created without a deferred context, also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found from that article, that all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute it's internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result? And if yes, then what is a Deferred Context then? What does it do that the Command List can not?

Just now I can not find the difference, but I'm sure that it is.

Difference between Command Lists and Deferred context

I'm new to DirectX and I feel like I killed Google search but still cannot find information about the difference between these:

  • Immediate context + Command Lists
  • Immediate context + Deferred context (Command List)

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that a Command List can be created without a deferred context. Also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found this article, whether all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute its internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result?

And if yes, then what is a Deferred Context then? What does it do that the Command List cannot?

Just now I cannot find the difference, but I'm sure that there is one.

Modified the first list (comparison)
Source Link

I'm new to DirectX and I feel like I killed Google search but still can not find information about the difference between these:

  • Immediate context + Command Lists
  • Immediate context + Deferred context (Command List)

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that Command List can be created without a deferred context, also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found from that article, that all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute it's internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result? And if yes, then what is a Deferred Context then? What does it do that the Command List can not?

Just now I can not find the difference, but I'm sure that it is.

I'm new to DirectX and I feel like I killed Google search but still can not find information about the difference between these:

  • Immediate context + Command Lists
  • Deferred context

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that Command List can be created without a deferred context, also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found from that article, that all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute it's internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result? And if yes, then what is a Deferred Context then? What does it do that the Command List can not?

Just now I can not find the difference, but I'm sure that it is.

I'm new to DirectX and I feel like I killed Google search but still can not find information about the difference between these:

  • Immediate context + Command Lists
  • Immediate context + Deferred context (Command List)

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that Command List can be created without a deferred context, also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found from that article, that all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute it's internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result? And if yes, then what is a Deferred Context then? What does it do that the Command List can not?

Just now I can not find the difference, but I'm sure that it is.

Source Link

DirectX: Diff between Command Lists and Deferred context

I'm new to DirectX and I feel like I killed Google search but still can not find information about the difference between these:

  • Immediate context + Command Lists
  • Deferred context

As I understood from D3d docs, Deferred context is the same as Immediate, but it records all its API calls to the internal Command List. And then I should execute that list using an immediate context to apply all the commands to the GPU.

But from another side, in d3d docs, I found that Command List can be created without a deferred context, also on that page I found that the list has a huge amount of API methods like DrawInstanced, DrawIndexedInstanced, etc.

And, I wondered when I found from that article, that all those API methods can be actually used directly. I wondered because from D3D docs it sounds quite the opposite:

A command list must be recorded by a deferred context

I'm stuck on this. Right now, for me, it sounds like I can solve 1 task using 2 identical ways:

  1. Create a Command List, call commands on it (still don't understand is it valid to do so or not), and execute on an immediate context later to defer GPU calls.
  2. Create a Deferred Context, call commands on it, and execute it's internal list on an immediate context later.

So my question is, do those 2 items from the list produce the same result? And if yes, then what is a Deferred Context then? What does it do that the Command List can not?

Just now I can not find the difference, but I'm sure that it is.