GPU: Fix memory leak when creating D3D12 compute pipelines

This commit is contained in:
Lucas Murray
2026-01-05 09:55:35 +11:00
committed by Ethan Lee
parent 742a6fd092
commit a0dc3a6727

View File

@@ -2953,8 +2953,6 @@ static SDL_GPUComputePipeline *D3D12_CreateComputePipeline(
const SDL_GPUComputePipelineCreateInfo *createinfo)
{
D3D12Renderer *renderer = (D3D12Renderer *)driverData;
void *bytecode;
size_t bytecodeSize;
ID3D12PipelineState *pipelineState;
if (!D3D12_INTERNAL_CreateShaderBytecode(
@@ -2962,8 +2960,8 @@ static SDL_GPUComputePipeline *D3D12_CreateComputePipeline(
createinfo->code,
createinfo->code_size,
createinfo->format,
&bytecode,
&bytecodeSize)) {
NULL,
NULL)) {
return NULL;
}
@@ -2972,13 +2970,12 @@ static SDL_GPUComputePipeline *D3D12_CreateComputePipeline(
createinfo);
if (rootSignature == NULL) {
SDL_free(bytecode);
SET_STRING_ERROR_AND_RETURN("Could not create root signature!", NULL);
}
D3D12_COMPUTE_PIPELINE_STATE_DESC pipelineDesc;
pipelineDesc.CS.pShaderBytecode = bytecode;
pipelineDesc.CS.BytecodeLength = bytecodeSize;
pipelineDesc.CS.pShaderBytecode = createinfo->code;
pipelineDesc.CS.BytecodeLength = createinfo->code_size;
pipelineDesc.pRootSignature = rootSignature->handle;
pipelineDesc.CachedPSO.CachedBlobSizeInBytes = 0;
pipelineDesc.CachedPSO.pCachedBlob = NULL;
@@ -2993,7 +2990,6 @@ static SDL_GPUComputePipeline *D3D12_CreateComputePipeline(
if (FAILED(res)) {
D3D12_INTERNAL_SetError(renderer, "Could not create compute pipeline state", res);
SDL_free(bytecode);
return NULL;
}
@@ -3002,7 +2998,6 @@ static SDL_GPUComputePipeline *D3D12_CreateComputePipeline(
if (!computePipeline) {
ID3D12PipelineState_Release(pipelineState);
SDL_free(bytecode);
return NULL;
}