diff options
4 files changed, 12 insertions, 13 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index f4728f50c..9cd4cf7b8 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -727,6 +727,8 @@ void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) { SetupComputeConstBuffers(kernel); SetupComputeGlobalMemory(kernel); + // TODO(Rodrigo): Bind images and samplers + buffer_cache.Unmap(); bind_ubo_pushbuffer.Bind(); diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 2b30fb522..4890d4a73 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -123,9 +123,6 @@ ProgramType GetProgramType(Maxwell::ShaderProgram program) { /// Calculates the size of a program stream std::size_t CalculateProgramSize(const GLShader::ProgramCode& program) { - if (program.empty()) { - return 0; - } constexpr std::size_t start_offset = 10; // This is the encoded version of BRA that jumps to itself. All Nvidia // shaders end with one. @@ -299,8 +296,8 @@ CachedShader::CachedShader(const ShaderParameters& params, ProgramType program_t Shader CachedShader::CreateStageFromMemory(const ShaderParameters& params, Maxwell::ShaderProgram program_type, - const ProgramCode& program_code, - const ProgramCode& program_code_b) { + ProgramCode&& program_code, + ProgramCode&& program_code_b) { const auto code_size{CalculateProgramSize(program_code)}; const auto code_size_b{CalculateProgramSize(program_code_b)}; auto result{ @@ -327,7 +324,7 @@ Shader CachedShader::CreateStageFromCache(const ShaderParameters& params, } Shader CachedShader::CreateKernelFromMemory(const ShaderParameters& params, - const ProgramCode& code) { + ProgramCode&& code) { auto result{CreateProgram(params.device, ProgramType::Compute, code, {})}; const auto code_size{CalculateProgramSize(code)}; @@ -683,7 +680,7 @@ Shader ShaderCacheOpenGL::GetComputeKernel(GPUVAddr code_addr) { } // No kernel found - create a new one - const auto code{GetShaderCode(memory_manager, code_addr, host_ptr)}; + auto code{GetShaderCode(memory_manager, code_addr, host_ptr)}; const auto unique_identifier{GetUniqueIdentifier(ProgramType::Compute, code, {})}; const auto cpu_addr{*memory_manager.GpuToCpuAddress(code_addr)}; const ShaderParameters params{disk_cache, precompiled_programs, device, cpu_addr, diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h index 7d84ffbab..5e86c6648 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_cache.h @@ -55,14 +55,14 @@ class CachedShader final : public RasterizerCacheObject { public: static Shader CreateStageFromMemory(const ShaderParameters& params, Maxwell::ShaderProgram program_type, - const ProgramCode& program_code, - const ProgramCode& program_code_b); + ProgramCode&& program_code, + ProgramCode&& program_code_b); static Shader CreateStageFromCache(const ShaderParameters& params, Maxwell::ShaderProgram program_type, GLShader::ProgramResult result); - static Shader CreateKernelFromMemory(const ShaderParameters& params, const ProgramCode& code); + static Shader CreateKernelFromMemory(const ShaderParameters& params, ProgramCode&& code); static Shader CreateKernelFromCache(const ShaderParameters& params, GLShader::ProgramResult result); diff --git a/src/video_core/renderer_opengl/gl_shader_util.cpp b/src/video_core/renderer_opengl/gl_shader_util.cpp index bab7d1a49..9e74eda0d 100644 --- a/src/video_core/renderer_opengl/gl_shader_util.cpp +++ b/src/video_core/renderer_opengl/gl_shader_util.cpp @@ -11,7 +11,7 @@ namespace OpenGL::GLShader { namespace { -constexpr const char* GetStageDebugName(GLenum type) { +const char* GetStageDebugName(GLenum type) { switch (type) { case GL_VERTEX_SHADER: return "vertex"; @@ -21,9 +21,9 @@ constexpr const char* GetStageDebugName(GLenum type) { return "fragment"; case GL_COMPUTE_SHADER: return "compute"; - default: - UNREACHABLE(); } + UNIMPLEMENTED(); + return "unknown"; } } // Anonymous namespace |