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

moving-triangles fails when run-em-all is run twice #18

Open
metayan opened this issue Oct 12, 2020 · 1 comment
Open

moving-triangles fails when run-em-all is run twice #18

metayan opened this issue Oct 12, 2020 · 1 comment

Comments

@metayan
Copy link

metayan commented Oct 12, 2020

Running (cepl.examples::run-em-all) twice in succession results in moving-triangles failing with

Error Linking Program
ERROR: Could not find transform feedback binding for '_FROM_VERTEX_STAGE_._VERTEX_STAGE_OUT_1.'

To run:

(ql:quickload :cepl.examples)
(cepl:repl 800 600)
(load (asdf:system-relative-pathname :cepl.examples "pre-release-run.lisp"))
(cepl.examples::run-em-all)
(cepl.examples::run-em-all)

Details:


Compiled-stages:

 // vertex-stage
#version 410

layout(location = 0)  in vec4 POSITION;

uniform float I;
uniform float _42LOOP42;

vec4 CALC_POS(vec4 V_POS, float ID);

vec4 CALC_POS(vec4 V_POS, float ID)
{
    vec4 POS = vec4((V_POS.xyz * 0.3f),1.0f);
    float I0 = (ID / 2.0f);
    return (POS + vec4(sin((I0 + _42LOOP42)),cos((3.0f * (tan(I0) + _42LOOP42))),0.0f,0.0f));
}

void main()
{
    gl_Position = CALC_POS(POSITION,I);
    return;
}



 // fragment-stage
#version 410

layout(location = 0)  out vec4 _FRAGMENT_STAGE_OUT_0;

uniform float _42LOOP42;

void main()
{
    _FRAGMENT_STAGE_OUT_0 = vec4(cos(_42LOOP42),sin(_42LOOP42),0.4f,1.0f);
    return;
}

Backtrace:

  0: (CEPL.PIPELINES::LINK-SHADERS (26 27) 8 (#<VARJO.INTERNALS:COMPILED-VERTEX-STAGE {1009B60AC3}> #<VARJO.INTERNALS:COMPILED-FRAGMENT-STAGE {1009B96553}>) NIL NIL)
      Locals:
        COMPILED-STAGES = (#<VARJO.INTERNALS:COMPILED-VERTEX-STAGE {1009B60AC3}> #<VARJO.INTERNALS:COMPILED-FRAGMENT-STAGE {1009B96553}>)
        PROG-ID = 8
        SHADERS = (26 27)
        TRANSFORM-FEEDBACK-MODE = NIL
        TRANSFORM-FEEDBACK-NAMES = NIL
  1: (CEPL.PIPELINES::%COMPILE-LINK-AND-UPLOAD CEPL.EXAMPLES::PROG-1 #<VARJO.INTERNALS:TRIANGLES {1007075023}> ((:VERTEX . #<CEPL.PIPELINES::GPU-FUNC-SPEC {100609F403}>) (:FRAGMENT . #<CEPL.PIPELINES::GPU-..
      Locals:
        COMPILED-STAGES = (#<VARJO.INTERNALS:COMPILED-VERTEX-STAGE {1009B60AC3}> #<VARJO.INTERNALS:COMPILED-FRAGMENT-STAGE {1009B96553}>)
        NAME = CEPL.EXAMPLES::PROG-1
        PRIMITIVE = #<VARJO.INTERNALS:TRIANGLES {1007075023}>
        PROG-ID = 8
        PROG-IDS = #(8 4294967295 4294967295 4294967295 4294967295 4294967295 ...)
        STAGE-PAIRS = ((:VERTEX . #<CEPL.PIPELINES::GPU-FUNC-SPEC {100609F403}>) (:FRAGMENT . #<CEPL.PIPELINES::GPU-FUNC-SPEC {1006E9FDE3}>))
        TFB-GROUP-COUNT = 0
  2: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN CEPL.HIDDEN::CEPL.EXAMPLES.PROG-1.INIT))
      [No Locals]
  3: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-THREAD::CALL-WITH-MUTEX))
  4: (SB-THREAD::CALL-WITH-MUTEX #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK :IN CEPL.HIDDEN::CEPL.EXAMPLES.PROG-1.INIT) {A2F615B}> #<SB-THREAD:MUTEX "Anonymous lock" owner: #<SB-THREAD:THREAD "main thread..
  5: (CEPL.HIDDEN::CEPL.EXAMPLES.PROG-1.INIT #S(CEPL.PIPELINES::PIPELINE-STATE :DIFF-TAG 1288 :PROG-IDS #(8 4294967295 4294967295 4294967295 4294967295 4294967295 ...) :IMPLICIT-UNIFORM-UPLOAD-FUNC #<FUNCT..
      Locals:
        CEPL.PIPELINES::STATE = #S(CEPL.PIPELINES::PIPELINE-STATE ..)
  6: (CEPL.EXAMPLES::PROG-1 #<CEPL-CONTEXT #<THREAD "main thread" RUNNING {1000B880E3}>> #<CEPL:BUFFER-STREAM (33) :LENGTH 3> NIL :I 0.0)
      Locals:
        #:.DEFAULTING-TEMP. = 0.0
        CEPL.PIPELINES::DRAW-ARRAY = NIL
        CEPL.PIPELINES::MAPG-CONTEXT = #<CEPL-CONTEXT #<THREAD "main thread" RUNNING {1000B880E3}>>
        STREAM = #<CEPL:BUFFER-STREAM (33) :LENGTH 3>
  7: (CEPL.EXAMPLES::STEP-DEMO)
  8: (CEPL.EXAMPLES::RUN-LOOP)
@metayan
Copy link
Author

metayan commented Oct 12, 2020

The transform-feedback and moving-triangles examples both name the pipeline prog-1, and if transform-feedback is run first, the issue appears afterwards in moving-triangles.

It seems that once a transform-feedback is used in a pipeline, it is not possible to get rid of it.

Could it be that with-transform-feedback or %unbind-tfs-arrays isn't behaving right?

How to trigger the issue:

(ql:quickload :cepl.examples)
(in-package :cepl.examples)
(repl 800 600)

(load (asdf:system-relative-pathname :cepl.examples "examples/transform-feedback.lisp"))
(run-loop)
(stop-loop)

(load (asdf:system-relative-pathname :cepl.examples "examples/moving-triangles.lisp"))
(run-loop)

A trivial solution is to rename the pipeline in one of the examples, but that would only remove the symptom of the underlying issue.

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

No branches or pull requests

1 participant