f1d1670b0b
* Implement HLE macro for DrawElementsIndirect * Shader cache version bump * Use GL_ARB_shader_draw_parameters extension on OpenGL * Fix DrawIndexedIndirectCount on Vulkan when extension is not supported * Implement DrawIndex * Alignment * Fix some validation errors * Rename BaseIds to DrawParameters * Fix incorrect index buffer and vertex buffer size in some cases * Add HLE macros for DrawArraysInstanced and DrawElementsInstanced * Perform a regular draw when indirect data is not modified * Use non-indirect draw methods if indirect buffer was not GPU modified * Only check if draw parameters match if the shader actually uses them * Expose Macro HLE setting on GUI * Reset FirstVertex and FirstInstance after draw * Update shader cache version again since some people already tested this * PR feedback Co-authored-by: riperiperi <rhy3756547@hotmail.com>
45 lines
No EOL
1.5 KiB
C#
45 lines
No EOL
1.5 KiB
C#
using System;
|
|
using System.Collections.ObjectModel;
|
|
|
|
namespace Ryujinx.Graphics.Shader
|
|
{
|
|
public class ShaderProgramInfo
|
|
{
|
|
public ReadOnlyCollection<BufferDescriptor> CBuffers { get; }
|
|
public ReadOnlyCollection<BufferDescriptor> SBuffers { get; }
|
|
public ReadOnlyCollection<TextureDescriptor> Textures { get; }
|
|
public ReadOnlyCollection<TextureDescriptor> Images { get; }
|
|
|
|
public ShaderStage Stage { get; }
|
|
public bool UsesInstanceId { get; }
|
|
public bool UsesDrawParameters { get; }
|
|
public bool UsesRtLayer { get; }
|
|
public byte ClipDistancesWritten { get; }
|
|
public int FragmentOutputMap { get; }
|
|
|
|
public ShaderProgramInfo(
|
|
BufferDescriptor[] cBuffers,
|
|
BufferDescriptor[] sBuffers,
|
|
TextureDescriptor[] textures,
|
|
TextureDescriptor[] images,
|
|
ShaderStage stage,
|
|
bool usesInstanceId,
|
|
bool usesDrawParameters,
|
|
bool usesRtLayer,
|
|
byte clipDistancesWritten,
|
|
int fragmentOutputMap)
|
|
{
|
|
CBuffers = Array.AsReadOnly(cBuffers);
|
|
SBuffers = Array.AsReadOnly(sBuffers);
|
|
Textures = Array.AsReadOnly(textures);
|
|
Images = Array.AsReadOnly(images);
|
|
|
|
Stage = stage;
|
|
UsesInstanceId = usesInstanceId;
|
|
UsesDrawParameters = usesDrawParameters;
|
|
UsesRtLayer = usesRtLayer;
|
|
ClipDistancesWritten = clipDistancesWritten;
|
|
FragmentOutputMap = fragmentOutputMap;
|
|
}
|
|
}
|
|
} |