From 7321cc38e86b0d06256aed2473232404ff2cf530 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Thu, 3 Nov 2016 06:51:16 -0700 Subject: [PATCH] libobs-d3d11: Store shader samplers as pointers This allows having them be a part of a linked list later. --- libobs-d3d11/d3d11-shaderprocessor.cpp | 6 +++--- libobs-d3d11/d3d11-shaderprocessor.hpp | 2 +- libobs-d3d11/d3d11-subsystem.hpp | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libobs-d3d11/d3d11-shaderprocessor.cpp b/libobs-d3d11/d3d11-shaderprocessor.cpp index 9bee68716..7b0b14db4 100644 --- a/libobs-d3d11/d3d11-shaderprocessor.cpp +++ b/libobs-d3d11/d3d11-shaderprocessor.cpp @@ -181,14 +181,14 @@ void ShaderProcessor::BuildParams(vector ¶ms) } static inline void AddSampler(gs_device_t *device, shader_sampler &sampler, - vector &samplers) + vector> &samplers) { gs_sampler_info si; shader_sampler_convert(&sampler, &si); - samplers.push_back(ShaderSampler(sampler.name, device, &si)); + samplers.emplace_back(new ShaderSampler(sampler.name, device, &si)); } -void ShaderProcessor::BuildSamplers(vector &samplers) +void ShaderProcessor::BuildSamplers(vector> &samplers) { for (size_t i = 0; i < parser.samplers.num; i++) AddSampler(device, parser.samplers.array[i], samplers); diff --git a/libobs-d3d11/d3d11-shaderprocessor.hpp b/libobs-d3d11/d3d11-shaderprocessor.hpp index c432d57c2..afc939cce 100644 --- a/libobs-d3d11/d3d11-shaderprocessor.hpp +++ b/libobs-d3d11/d3d11-shaderprocessor.hpp @@ -30,7 +30,7 @@ struct ShaderProcessor { void BuildInputLayout(vector &inputs); void BuildParams(vector ¶ms); - void BuildSamplers(vector &samplers); + void BuildSamplers(vector> &samplers); void BuildString(string &outputString); void Process(const char *shader_string, const char *file); diff --git a/libobs-d3d11/d3d11-subsystem.hpp b/libobs-d3d11/d3d11-subsystem.hpp index 1ddb16b8e..39aff5df2 100644 --- a/libobs-d3d11/d3d11-subsystem.hpp +++ b/libobs-d3d11/d3d11-subsystem.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -459,13 +460,13 @@ struct gs_duplicator { struct gs_pixel_shader : gs_shader { ComPtr shader; - vector samplers; + vector> samplers; inline void GetSamplerStates(ID3D11SamplerState **states) { size_t i; for (i = 0; i < samplers.size(); i++) - states[i] = samplers[i].sampler.state; + states[i] = samplers[i]->sampler.state; for (; i < GS_MAX_TEXTURES; i++) states[i] = NULL; }