Browse Source

vulkan: remove internal Shader::attach call
Shader::attach() should not be called internally
by a graphics backend.

niki 2 years ago
parent
commit
f01457a610

+ 3 - 6
src/modules/graphics/vulkan/Graphics.cpp

@@ -1007,6 +1007,8 @@ graphics::StreamBuffer *Graphics::newStreamBuffer(BufferUsage type, size_t size)
 
 bool Graphics::dispatch(int x, int y, int z)
 {
+	usedShadersInFrame.insert(computeShader);
+
 	if (renderPassState.active)
 		endRenderPass();
 
@@ -2226,7 +2228,7 @@ void Graphics::prepareDraw(const VertexAttributes &attributes, const BufferBindi
 	if (!renderPassState.active)
 		startRenderPass();
 
-	Shader::current->attach();
+	usedShadersInFrame.insert((dynamic_cast<Shader*>(Shader::current)));
 
 	GraphicsPipelineConfiguration configuration{};
 
@@ -2489,11 +2491,6 @@ void Graphics::setComputeShader(Shader *shader)
 	computeShader = shader;
 }
 
-void Graphics::markShaderUsed(Shader *shader)
-{
-	usedShadersInFrame.insert(shader);
-}
-
 VkSampler Graphics::getCachedSampler(const SamplerState &samplerState)
 {
 	auto samplerkey = samplerState.toKey();

+ 1 - 2
src/modules/graphics/vulkan/Graphics.h

@@ -293,7 +293,6 @@ public:
 	graphics::Texture *getDefaultTexture() const;
 	VkSampler getCachedSampler(const SamplerState &sampler);
 	void setComputeShader(Shader *computeShader);
-	void markShaderUsed(Shader*);
 	graphics::Shader::BuiltinUniformData getCurrentBuiltinUniformData();
 	const OptionalDeviceFeatures &getEnabledOptionalDeviceExtensions() const;
 	VkSampleCountFlagBits getMsaaCount(int requestedMsaa) const;
@@ -394,7 +393,7 @@ private:
 	VkImageView depthImageView = VK_NULL_HANDLE;
 	VmaAllocation depthImageAllocation = VK_NULL_HANDLE;
 	VkRenderPass defaultRenderPass = VK_NULL_HANDLE;
-	VkPipelineCache pipelineCache;
+	VkPipelineCache pipelineCache = VK_NULL_HANDLE;
 	std::vector<VkFramebuffer> defaultFramebuffers;
 	std::unordered_map<RenderPassConfiguration, VkRenderPass, RenderPassConfigurationHasher> renderPasses;
 	std::unordered_map<FramebufferConfiguration, VkFramebuffer, FramebufferConfigurationHasher> framebuffers;

+ 0 - 4
src/modules/graphics/vulkan/Shader.cpp

@@ -25,8 +25,6 @@
 #include "libraries/glslang/SPIRV/GlslangToSpv.h"
 
 
-#include <vector>
-
 namespace love
 {
 namespace graphics
@@ -473,8 +471,6 @@ Shader::~Shader()
 
 void Shader::attach()
 {
-	vgfx->markShaderUsed(this);
-
 	if (!isCompute)
 	{
 		if (Shader::current != this)