Render commands and friends#1830
Conversation
| [MemberFunction("48 89 5C 24 ?? 48 89 6C 24 ?? 56 57 41 54 41 56 41 57 48 83 EC 50 44 8B 05")] | ||
| public partial ulong Draw(bool unk); | ||
|
|
||
| [MemberFunction("E9 ?? ?? ?? ?? CC CC CC CC CC CC CC CC CC CC 48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 7C 24 ?? 41 56")] |
There was a problem hiding this comment.
Yes I realize this is a terrible signature, let me know if you have any better ideas for how to do this!
I believe basically none of these changed render command fields were correct? So I think we're good to make these breaking changes. |
|
|
||
| [StructLayout(LayoutKind.Explicit, Size = 0x40)] | ||
| public unsafe struct TextureMipRenderTarget { | ||
| [FieldOffset(0x00)] public void* D3D11RenderTargetViewOrDepthStencilView; // ID3D11RenderTargetView(1?) or ID3D11DepthStencilView(1?) |
There was a problem hiding this comment.
I bet we could use a CExporterUnion here to present both the ID3D11RenderTargetView* and the ID3D11DepthStencilView*
Haselnussbomber
left a comment
There was a problem hiding this comment.
Pushed some changes, but other than that it looks fine to me.
| public static partial Device* Instance(); | ||
|
|
||
| [FieldOffset(0x8)] public void* ContextArray; // Client::Graphics::Kernel::Context array | ||
| [FieldOffset(0x8)] public void* ContextArray; // TODO: We have a struct for this now (breaking change) |
There was a problem hiding this comment.
Just as a note, I would have no idea what to change this to. I guess Context* something?
Would rather add a Span for that if the size is constant and the length is known.
Breaking ChangesMember exists in left but not in rightFFXIVClientStructs.FFXIV.Client.Graphics.Kernel: 1RenderCommandClearDepth: 1
|
| [MemberFunction("E8 ?? ?? ?? ?? 48 8B 7B 18 45 33 FF")] | ||
| public partial void ProcessCommands(RenderCommandBufferGroup* renderCommands, uint renderCommandCount); | ||
|
|
||
| [MemberFunction("E8 ?? ?? ?? ?? 48 8B 7B 18 45 33 FF")] | ||
| public partial void PreprocessCommands(RenderCommandBufferGroup* renderCommands, uint renderCommandCount); |
There was a problem hiding this comment.
Process and Preprocess have the same sig?
| public partial void* AllocateCommand(ulong size); | ||
|
|
||
| [MemberFunction("4C 8B C9 4D 8D 50 0F")] | ||
| public partial void* AllocateSpecificCommand(int commandType, ulong size); |
There was a problem hiding this comment.
Should commandType use the enum?
A few different rendering things in support of under-UI overlay drawing: