Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix an issue of missing handling DecorationComponent #2770

Closed
wants to merge 1 commit into from

Conversation

amdrexu
Copy link
Contributor

@amdrexu amdrexu commented Oct 18, 2023

We forgot to handle DecorationComponent when calling LGC CreateReadGenericInput. This issue is not caught by normal CTS testing because we enable GS-FS packing. This issue occurs on GS-FS unpacking path. The GLSL is as follow:

GS:

layout(location = 0, component = 0, xfb_...) out float f0;
layout(location = 0, component = 1) out float f1; // not xfb
layout(location = 0, component = 2, xfb_...) out float f1;

FS:

layout(location = 0, component = 0) in float f0;
layout(location = 0, component = 1) in float f1;
layout(location = 0, component = 2) in float f1;

During in-out matching, GS doesn't add f1 to active output list because FS forgets to record the component value of f1 (it is always component 0). GS couldn't find a matching FS input of f1. Meanwhile, f1 is not a xfb output. As a result, GS doesn't export f1 to FS and treats it to be an inactive output, leading to the final missing attribute export.

We forgot to handle DecorationComponent when calling LGC
CreateReadGenericInput. This issue is not caught by normal CTS testing
because we enable GS-FS packing. This issue occurs on GS-FS unpacking
path. The GLSL is as follow:

GS:

layout(location = 0, component = 0, xfb_...) out float f0;
layout(location = 0, component = 1) out float f1; // not xfb
layout(location = 0, component = 2, xfb_...) out float f1;

FS:

layout(location = 0, component = 0) in float f0;
layout(location = 0, component = 1) in float f1;
layout(location = 0, component = 2) in float f1;

During in-out matching, GS doesn't add f1 to active output list because
FS forgets to record the component value of f1 (it is always component 0).
GS couldn't find a matching FS input of f1. Meanwhile, f1 is not a
xfb output. As a result, GS doesn't export f1 to FS and treats it to be
an inactive output, leading to the final missing attribute export.
@amdrexu amdrexu requested a review from a team as a code owner October 18, 2023 04:14
@amdrexu amdrexu closed this Oct 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant