Implement textureQueryLevels (#1007)

This commit is contained in:
gdkchan 2020-03-22 18:31:31 -03:00 committed by GitHub
parent 31b94f4641
commit 49d7b1c7d8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 3 deletions

View file

@ -15,11 +15,10 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
public static void Declare(CodeGenContext context, StructuredProgramInfo info) public static void Declare(CodeGenContext context, StructuredProgramInfo info)
{ {
context.AppendLine("#version 420 core"); context.AppendLine("#version 430 core");
context.AppendLine("#extension GL_ARB_gpu_shader_int64 : enable"); context.AppendLine("#extension GL_ARB_gpu_shader_int64 : enable");
context.AppendLine("#extension GL_ARB_shader_ballot : enable"); context.AppendLine("#extension GL_ARB_shader_ballot : enable");
context.AppendLine("#extension GL_ARB_shader_group_vote : enable"); context.AppendLine("#extension GL_ARB_shader_group_vote : enable");
context.AppendLine("#extension GL_ARB_shader_storage_buffer_object : enable");
if (context.Config.Stage == ShaderStage.Compute) if (context.Config.Stage == ShaderStage.Compute)
{ {

View file

@ -494,7 +494,14 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions
string lodExpr = GetSoureExpr(context, lod, GetSrcVarType(operation.Inst, lodSrcIndex)); string lodExpr = GetSoureExpr(context, lod, GetSrcVarType(operation.Inst, lodSrcIndex));
return $"textureSize({samplerName}, {lodExpr}){GetMask(texOp.Index)}"; if (texOp.Index == 3)
{
return $"textureQueryLevels({samplerName})";
}
else
{
return $"textureSize({samplerName}, {lodExpr}){GetMask(texOp.Index)}";
}
} }
private static string GetStorageBufferAccessor(string slotExpr, string offsetExpr, ShaderStage stage) private static string GetStorageBufferAccessor(string slotExpr, string offsetExpr, ShaderStage stage)