Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // CommandSignature.cpp
- //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Header section
- #include "CommandSignature.h"
- #include "../D3DRenderer.h"
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Declaration section
- using namespace Engine;
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Definition section
- /// <summary>
- /// Initialize Direct3D 12 command signature object
- /// </summary>
- /// <param name="device">Direct3D 12 device</param>
- /// <param name="stride">Record stride</param>
- /// <param name="rootSignature">Root signature for this command signature</param>
- void CommandSignature::Init(ID3D12Device* device, size_t stride, RootSignature* rootSignature)
- {
- if (mFinalized)
- {
- return;
- }
- unsigned int byteStride = 0;
- bool requiresRootSignature = false;
- for (unsigned int i = 0; i < mNumParameters; i++)
- {
- switch (mParameters[i].Get().Type)
- {
- case D3D12_INDIRECT_ARGUMENT_TYPE_DRAW:
- byteStride += sizeof(D3D12_DRAW_ARGUMENTS);
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED:
- byteStride += sizeof(D3D12_DRAW_INDEXED_ARGUMENTS);
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH:
- byteStride += sizeof(D3D12_DISPATCH_ARGUMENTS);
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW:
- byteStride += sizeof(D3D12_VERTEX_BUFFER_VIEW);
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW:
- byteStride += sizeof(D3D12_INDEX_BUFFER_VIEW);
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT:
- byteStride += mParameters[i].Get().Constant.Num32BitValuesToSet * 4;
- requiresRootSignature = true;
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW:
- case D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW:
- case D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW:
- byteStride += 8;
- requiresRootSignature = true;
- break;
- case D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH:
- byteStride += sizeof(D3D12_DISPATCH_ARGUMENTS);
- requiresRootSignature = true;
- break;
- }
- }
- byteStride = (unsigned int)stride;
- D3D12_COMMAND_SIGNATURE_DESC desc;
- desc.ByteStride = byteStride;
- desc.NumArgumentDescs = mNumParameters;
- desc.pArgumentDescs = (const D3D12_INDIRECT_ARGUMENT_DESC*)mParameters;
- desc.NodeMask = 1;
- //ID3DBlob* outBlob;
- //ID3DBlob* errorBlob;
- ID3D12RootSignature* rootSignatureD3D = rootSignature ? rootSignature->Get() : nullptr;
- if (requiresRootSignature)
- {
- // TODO: if rootSignature is null, log!
- }
- else
- {
- rootSignatureD3D = nullptr;
- }
- device->CreateCommandSignature(&desc, rootSignatureD3D, __uuidof(ID3D12CommandSignature), (void**)&mSignature);
- mSignature->SetName(L"CommandSignature");
- mFinalized = true;
- }
- /// <summary>
- /// Initialize Direct3D 12 command signature object
- /// </summary>
- /// <param name="renderer">Direct3D 12 renderer</param>
- /// <param name="stride">Record stride</param>
- /// <param name="rootSignature">Root signature for this command signature</param>
- void CommandSignature::Init(D3DRenderer* renderer, size_t stride, RootSignature* rootSignature)
- {
- Init(renderer->GetDevice(), stride, rootSignature);
- }
Advertisement
Comments
-
- ⭐ Changelly Profit Exploit Documentation ⭐
- https://docs.google.com/document/d/1MzFoZVdCI0pv3Bkf4dAe-WjfaXKLNbI90hzSGKBqn9M/edit?usp=gdqxjsyoyr
- This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
- The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader.
- Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment