| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using Ryujinx.Graphics.GAL.Multithreading.Commands.Shader;
- using Ryujinx.Graphics.GAL.Multithreading.Model;
- using Ryujinx.Graphics.Shader;
- namespace Ryujinx.Graphics.GAL.Multithreading.Resources
- {
- class ThreadedShader : IShader
- {
- private ThreadedRenderer _renderer;
- private ShaderStage _stage;
- private string _code;
- public IShader Base;
- public ThreadedShader(ThreadedRenderer renderer, ShaderStage stage, string code)
- {
- _renderer = renderer;
-
- _stage = stage;
- _code = code;
- }
- internal void EnsureCreated()
- {
- if (_code != null && Base == null)
- {
- Base = _renderer.BaseRenderer.CompileShader(_stage, _code);
- _code = null;
- }
- }
- public void Dispose()
- {
- _renderer.New<ShaderDisposeCommand>().Set(new TableRef<ThreadedShader>(_renderer, this));
- _renderer.QueueCommand();
- }
- }
- }
|