mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-26 16:36:31 +00:00
Make sure any time VAOs/FBOs are ref'd, we also ref the child objects
* By the logic that means we need to iterate into the VAO/FBO bound objects on frame start, we also need to do for bound VAOs and FBOs later in the frame. * Also FBO state needs to include the actual attached objects and their attachment parameters, since this information is lost when we stop tracking FBOs.
This commit is contained in:
@@ -65,11 +65,36 @@ struct FeedbackInitialData
|
||||
uint64_t Size[4];
|
||||
};
|
||||
|
||||
struct FramebufferAttachmentData
|
||||
{
|
||||
bool renderbuffer;
|
||||
bool layered;
|
||||
int32_t layer;
|
||||
int32_t level;
|
||||
ResourceId obj;
|
||||
};
|
||||
|
||||
struct FramebufferInitialData
|
||||
{
|
||||
bool valid;
|
||||
FramebufferAttachmentData Attachments[10];
|
||||
GLenum DrawBuffers[8];
|
||||
GLenum ReadBuffer;
|
||||
|
||||
static const GLenum attachmentNames[10];
|
||||
};
|
||||
|
||||
const GLenum FramebufferInitialData::attachmentNames[10] = {
|
||||
eGL_COLOR_ATTACHMENT0,
|
||||
eGL_COLOR_ATTACHMENT1,
|
||||
eGL_COLOR_ATTACHMENT2,
|
||||
eGL_COLOR_ATTACHMENT3,
|
||||
eGL_COLOR_ATTACHMENT4,
|
||||
eGL_COLOR_ATTACHMENT5,
|
||||
eGL_COLOR_ATTACHMENT6,
|
||||
eGL_COLOR_ATTACHMENT7,
|
||||
eGL_DEPTH_ATTACHMENT,
|
||||
eGL_STENCIL_ATTACHMENT,
|
||||
};
|
||||
|
||||
template<>
|
||||
@@ -105,12 +130,25 @@ void Serialiser::Serialise(const char *name, FeedbackInitialData &el)
|
||||
Serialise<4>("Size", el.Size);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, FramebufferAttachmentData &el)
|
||||
{
|
||||
ScopedContext scope(this, this, name, "FramebufferAttachmentData", 0, true);
|
||||
Serialise("renderbuffer", el.renderbuffer);
|
||||
Serialise("layered", el.layered);
|
||||
Serialise("layer", el.layer);
|
||||
Serialise("level", el.level);
|
||||
Serialise("obj", el.obj);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, FramebufferInitialData &el)
|
||||
{
|
||||
ScopedContext scope(this, this, name, "FramebufferInitialData", 0, true);
|
||||
Serialise("valid", el.valid);
|
||||
Serialise<8>("DrawBuffers", el.DrawBuffers);
|
||||
for(size_t i=0; i < ARRAY_COUNT(el.Attachments); i++)
|
||||
Serialise("Attachments", el.Attachments[i]);
|
||||
Serialise("ReadBuffer", el.ReadBuffer);
|
||||
}
|
||||
|
||||
@@ -156,6 +194,79 @@ void Serialiser::Serialise(const char *name, TextureStateInitialData &el)
|
||||
Serialise("texBufSize", el.texBufSize);
|
||||
}
|
||||
|
||||
void GLResourceManager::MarkVAOReferenced(GLResource res, FrameRefType ref)
|
||||
{
|
||||
const GLHookSet &gl = m_GL->m_Real;
|
||||
|
||||
if(res.name)
|
||||
{
|
||||
MarkResourceFrameReferenced(res, ref == eFrameRef_Unknown ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
GLint numVBufferBindings = 16;
|
||||
gl.glGetIntegerv(eGL_MAX_VERTEX_ATTRIB_BINDINGS, &numVBufferBindings);
|
||||
|
||||
for(GLuint i=0; i < (GLuint)numVBufferBindings; i++)
|
||||
{
|
||||
GLuint buffer = GetBoundVertexBuffer(gl, i);
|
||||
|
||||
MarkResourceFrameReferenced(BufferRes(res.Context, buffer), ref);
|
||||
}
|
||||
|
||||
GLuint ibuffer = 0;
|
||||
gl.glGetIntegerv(eGL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint*)&ibuffer);
|
||||
MarkResourceFrameReferenced(BufferRes(res.Context, ibuffer), ref);
|
||||
}
|
||||
}
|
||||
|
||||
void GLResourceManager::MarkFBOReferenced(GLResource res, FrameRefType ref)
|
||||
{
|
||||
if(res.name == 0)
|
||||
return;
|
||||
|
||||
MarkResourceFrameReferenced(res, ref == eFrameRef_Unknown ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
const GLHookSet &gl = m_GL->m_Real;
|
||||
|
||||
GLint numCols = 8;
|
||||
gl.glGetIntegerv(eGL_MAX_COLOR_ATTACHMENTS, &numCols);
|
||||
|
||||
GLenum type = eGL_TEXTURE;
|
||||
GLuint name = 0;
|
||||
|
||||
for(int c=0; c < numCols; c++)
|
||||
{
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, GLenum(eGL_COLOR_ATTACHMENT0+c), eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, GLenum(eGL_COLOR_ATTACHMENT0+c), eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
MarkResourceFrameReferenced(RenderbufferRes(res.Context, name), ref);
|
||||
else
|
||||
MarkResourceFrameReferenced(TextureRes(res.Context, name), ref);
|
||||
}
|
||||
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
MarkResourceFrameReferenced(RenderbufferRes(res.Context, name), ref);
|
||||
else
|
||||
MarkResourceFrameReferenced(TextureRes(res.Context, name), ref);
|
||||
}
|
||||
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
MarkResourceFrameReferenced(RenderbufferRes(res.Context, name), ref);
|
||||
else
|
||||
MarkResourceFrameReferenced(TextureRes(res.Context, name), ref);
|
||||
}
|
||||
}
|
||||
|
||||
bool GLResourceManager::SerialisableResource(ResourceId id, GLResourceRecord *record)
|
||||
{
|
||||
if(id == m_GL->GetContextResourceID())
|
||||
@@ -185,6 +296,25 @@ bool GLResourceManager::Prepare_InitialState(GLResource res, byte *blob)
|
||||
gl.glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, res.name);
|
||||
gl.glBindFramebuffer(eGL_READ_FRAMEBUFFER, res.name);
|
||||
|
||||
//need to serialise out which objects are bound
|
||||
GLenum type;
|
||||
GLuint object;
|
||||
GLint layered;
|
||||
for(int i=0; i < (int)ARRAY_COUNT(data->Attachments); i++)
|
||||
{
|
||||
FramebufferAttachmentData &a = data->Attachments[i];
|
||||
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, data->attachmentNames[i], eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&object);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, data->attachmentNames[i], eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, data->attachmentNames[i], eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, &a.level);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, data->attachmentNames[i], eGL_FRAMEBUFFER_ATTACHMENT_LAYERED, &layered);
|
||||
gl.glGetNamedFramebufferAttachmentParameterivEXT(res.name, data->attachmentNames[i], eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, &a.layer);
|
||||
|
||||
a.layered = (layered != 0);
|
||||
a.renderbuffer = (type == eGL_RENDERBUFFER);
|
||||
a.obj = GetID(a.renderbuffer ? RenderbufferRes(res.Context, object) : TextureRes(res.Context, object));
|
||||
}
|
||||
|
||||
for(int i=0; i < (int)ARRAY_COUNT(data->DrawBuffers); i++)
|
||||
gl.glGetIntegerv(GLenum(eGL_DRAW_BUFFER0 + i), (GLint *)&data->DrawBuffers[i]);
|
||||
|
||||
@@ -1476,6 +1606,29 @@ void GLResourceManager::Apply_InitialState(GLResource live, InitialContentData i
|
||||
gl.glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, live.name);
|
||||
gl.glBindFramebuffer(eGL_READ_FRAMEBUFFER, live.name);
|
||||
|
||||
for(int i=0; i < (int)ARRAY_COUNT(data->Attachments); i++)
|
||||
{
|
||||
FramebufferAttachmentData &a = data->Attachments[i];
|
||||
|
||||
GLuint obj = a.obj == ResourceId() ? 0 : GetLiveResource(a.obj).name;
|
||||
|
||||
if(a.renderbuffer && obj)
|
||||
{
|
||||
gl.glNamedFramebufferRenderbufferEXT(live.name, data->attachmentNames[i], eGL_RENDERBUFFER, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(a.layered && obj)
|
||||
{
|
||||
gl.glNamedFramebufferTextureLayerEXT(live.name, data->attachmentNames[i], obj, a.level, a.layer);
|
||||
}
|
||||
else
|
||||
{
|
||||
gl.glNamedFramebufferTextureEXT(live.name, data->attachmentNames[i], obj, a.level);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// set invalid caps to GL_COLOR_ATTACHMENT0
|
||||
for(int i=0; i < (int)ARRAY_COUNT(data->DrawBuffers); i++)
|
||||
if(data->DrawBuffers[i] == eGL_BACK || data->DrawBuffers[i] == eGL_FRONT)
|
||||
|
||||
@@ -211,6 +211,14 @@ class GLResourceManager : public ResourceManager<GLResource, GLResourceRecord>
|
||||
{
|
||||
return m_SyncIDs[sync];
|
||||
}
|
||||
|
||||
// we need to find all the children bound to VAOs/FBOs and mark them referenced. The reason for this
|
||||
// is that say a VAO became high traffic and we stopped serialising buffer binds, but then it is never
|
||||
// modified in a frame and none of the buffers are ever referenced. They would be eliminated from
|
||||
// the log and the VAO initial state that tries to bind them would fail.
|
||||
// Normally this would be handled by record parenting, but that would be a nightmare to track.
|
||||
void MarkVAOReferenced(GLResource res, FrameRefType ref);
|
||||
void MarkFBOReferenced(GLResource res, FrameRefType ref);
|
||||
|
||||
bool Prepare_InitialState(GLResource res, byte *blob);
|
||||
bool Serialise_InitialState(GLResource res);
|
||||
|
||||
@@ -317,30 +317,8 @@ void GLRenderState::MarkReferenced(WrappedOpenGL *gl, bool initial) const
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Images[i].name), initial ? eFrameRef_Unknown : eFrameRef_ReadBeforeWrite);
|
||||
gl->AddMissingTrack(manager->GetID(TextureRes(ctx, Images[i].name)));
|
||||
}
|
||||
|
||||
manager->MarkResourceFrameReferenced(VertexArrayRes(ctx, VAO), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
// we need to find all the buffers bound to the VAO and mark them referenced to. The reason for this
|
||||
// is that say a VAO became high traffic and we stopped serialising buffer binds, but then it is never
|
||||
// modified in this frame and none of the buffers are ever referenced. They would be eliminated from
|
||||
// the log and the VAO initial state that tries to bind them would fail.
|
||||
// Normally this would be handled by record parenting, but that would be a nightmare to track for VAOs.
|
||||
if(VAO)
|
||||
{
|
||||
GLint numVBufferBindings = 16;
|
||||
gl->glGetIntegerv(eGL_MAX_VERTEX_ATTRIB_BINDINGS, &numVBufferBindings);
|
||||
|
||||
for(GLuint i=0; i < (GLuint)numVBufferBindings; i++)
|
||||
{
|
||||
GLuint buffer = GetBoundVertexBuffer(*m_Real, i);
|
||||
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, buffer), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
}
|
||||
|
||||
GLuint ibuffer = 0;
|
||||
gl->glGetIntegerv(eGL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint*)&ibuffer);
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, ibuffer), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
}
|
||||
manager->MarkVAOReferenced(VertexArrayRes(ctx, VAO), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
manager->MarkResourceFrameReferenced(FeedbackRes(ctx, FeedbackObj), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
@@ -367,62 +345,12 @@ void GLRenderState::MarkReferenced(WrappedOpenGL *gl, bool initial) const
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(UniformBinding); i++)
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, UniformBinding[i].name), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
GLint numCols = 8;
|
||||
gl->glGetIntegerv(eGL_MAX_COLOR_ATTACHMENTS, &numCols);
|
||||
|
||||
// for the same reason as VAOs above, we need to find all the renderbuffers/textures bound to the FBOs
|
||||
GLuint fbos[] = { ReadFBO, DrawFBO };
|
||||
GLenum tgts[] = { eGL_READ_FRAMEBUFFER, eGL_DRAW_FRAMEBUFFER };
|
||||
FrameRefType refs[] = { eFrameRef_Read, eFrameRef_ReadBeforeWrite };
|
||||
manager->MarkFBOReferenced(FramebufferRes(ctx, DrawFBO), initial ? eFrameRef_Unknown : eFrameRef_ReadBeforeWrite);
|
||||
|
||||
// if same FBO is bound to both targets, treat it as draw only
|
||||
if(ReadFBO == DrawFBO)
|
||||
fbos[0] = 0;
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(fbos); i++)
|
||||
{
|
||||
manager->MarkResourceFrameReferenced(FramebufferRes(ctx, fbos[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
if(fbos[i])
|
||||
{
|
||||
GLenum type = eGL_TEXTURE;
|
||||
GLuint name = 0;
|
||||
|
||||
for(int c=0; c < numCols; c++)
|
||||
{
|
||||
gl->glGetFramebufferAttachmentParameteriv(tgts[i], GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
gl->glGetFramebufferAttachmentParameteriv(tgts[i], GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
manager->MarkResourceFrameReferenced(RenderbufferRes(ctx, name), initial ? eFrameRef_Unknown : refs[i]);
|
||||
else
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, name), initial ? eFrameRef_Unknown : refs[i]);
|
||||
}
|
||||
|
||||
gl->glGetFramebufferAttachmentParameteriv(tgts[i], eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
gl->glGetFramebufferAttachmentParameteriv(tgts[i], eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
manager->MarkResourceFrameReferenced(RenderbufferRes(ctx, name), initial ? eFrameRef_Unknown : refs[i]);
|
||||
else
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, name), initial ? eFrameRef_Unknown : refs[i]);
|
||||
}
|
||||
|
||||
gl->glGetFramebufferAttachmentParameteriv(tgts[i], eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
gl->glGetFramebufferAttachmentParameteriv(tgts[i], eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
manager->MarkResourceFrameReferenced(RenderbufferRes(ctx, name), initial ? eFrameRef_Unknown : refs[i]);
|
||||
else
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, name), initial ? eFrameRef_Unknown : refs[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(ReadFBO != DrawFBO)
|
||||
manager->MarkFBOReferenced(FramebufferRes(ctx, ReadFBO), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
}
|
||||
|
||||
void GLRenderState::MarkDirty(WrappedOpenGL *gl)
|
||||
|
||||
@@ -2705,7 +2705,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buff
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -2735,7 +2735,7 @@ void WrappedOpenGL::glVertexAttribPointer(GLuint index, GLint size, GLenum type,
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -2800,7 +2800,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buf
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -2830,7 +2830,7 @@ void WrappedOpenGL::glVertexAttribIPointer(GLuint index, GLint size, GLenum type
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -2895,7 +2895,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buf
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -2925,7 +2925,7 @@ void WrappedOpenGL::glVertexAttribLPointer(GLuint index, GLint size, GLenum type
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -2968,7 +2968,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint att
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBBINDING);
|
||||
@@ -2995,7 +2995,7 @@ void WrappedOpenGL::glVertexAttribBinding(GLuint attribindex, GLuint bindinginde
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBBINDING);
|
||||
@@ -3041,7 +3041,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attr
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBFORMAT);
|
||||
@@ -3068,7 +3068,7 @@ void WrappedOpenGL::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBFORMAT);
|
||||
@@ -3113,7 +3113,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint att
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBIFORMAT);
|
||||
@@ -3140,7 +3140,7 @@ void WrappedOpenGL::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBIFORMAT);
|
||||
@@ -3185,7 +3185,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint att
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBLFORMAT);
|
||||
@@ -3212,7 +3212,7 @@ void WrappedOpenGL::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBLFORMAT);
|
||||
@@ -3267,7 +3267,7 @@ void WrappedOpenGL::glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint ind
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBDIVISOR);
|
||||
@@ -3294,7 +3294,7 @@ void WrappedOpenGL::glVertexAttribDivisor(GLuint index, GLuint divisor)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBDIVISOR);
|
||||
@@ -3346,7 +3346,7 @@ void WrappedOpenGL::glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(ENABLEVERTEXATTRIBARRAY);
|
||||
@@ -3373,7 +3373,7 @@ void WrappedOpenGL::glEnableVertexAttribArray(GLuint index)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(ENABLEVERTEXATTRIBARRAY);
|
||||
@@ -3425,7 +3425,7 @@ void WrappedOpenGL::glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(DISABLEVERTEXATTRIBARRAY);
|
||||
@@ -3452,7 +3452,7 @@ void WrappedOpenGL::glDisableVertexAttribArray(GLuint index)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(DISABLEVERTEXATTRIBARRAY);
|
||||
@@ -3611,7 +3611,7 @@ void WrappedOpenGL::glBindVertexArray(GLuint array)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
if(record)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkVAOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3656,7 +3656,7 @@ void WrappedOpenGL::glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -3708,7 +3708,7 @@ void WrappedOpenGL::glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindin
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -3738,7 +3738,7 @@ void WrappedOpenGL::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLint
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
if(m_State == WRITING_CAPFRAME && bufrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(bufrecord->GetResourceID(), eFrameRef_Read);
|
||||
|
||||
@@ -3822,7 +3822,7 @@ void WrappedOpenGL::glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsiz
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(BIND_VERTEXBUFFERS);
|
||||
@@ -3862,7 +3862,7 @@ void WrappedOpenGL::glBindVertexBuffers(GLuint first, GLsizei count, const GLuin
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(BIND_VERTEXBUFFERS);
|
||||
@@ -3918,7 +3918,7 @@ void WrappedOpenGL::glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bi
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXBINDINGDIVISOR);
|
||||
@@ -3945,7 +3945,7 @@ void WrappedOpenGL::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
|
||||
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
|
||||
return;
|
||||
if(m_State == WRITING_CAPFRAME && varecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkVAOReferenced(varecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(VERTEXBINDINGDIVISOR);
|
||||
|
||||
@@ -194,7 +194,8 @@ void WrappedOpenGL::glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum atta
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -250,7 +251,8 @@ void WrappedOpenGL::glFramebufferTexture(GLenum target, GLenum attachment, GLuin
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -322,7 +324,8 @@ void WrappedOpenGL::glNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum at
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -378,7 +381,8 @@ void WrappedOpenGL::glFramebufferTexture1D(GLenum target, GLenum attachment, GLe
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -450,7 +454,8 @@ void WrappedOpenGL::glNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum at
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -506,7 +511,8 @@ void WrappedOpenGL::glFramebufferTexture2D(GLenum target, GLenum attachment, GLe
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -579,7 +585,8 @@ void WrappedOpenGL::glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum at
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -635,7 +642,8 @@ void WrappedOpenGL::glFramebufferTexture3D(GLenum target, GLenum attachment, GLe
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -696,7 +704,8 @@ void WrappedOpenGL::glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(RenderbufferRes(GetCtx(), renderbuffer), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -743,7 +752,8 @@ void WrappedOpenGL::glFramebufferRenderbuffer(GLenum target, GLenum attachment,
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(RenderbufferRes(GetCtx(), renderbuffer), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -815,7 +825,8 @@ void WrappedOpenGL::glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -871,7 +882,8 @@ void WrappedOpenGL::glFramebufferTextureLayer(GLenum target, GLenum attachment,
|
||||
else
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(record->GetResourceID(), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(record->Resource, eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(TextureRes(GetCtx(), texture), eFrameRef_Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -972,7 +984,7 @@ void WrappedOpenGL::glFramebufferReadBufferEXT(GLuint framebuffer, GLenum buf)
|
||||
Serialise_glFramebufferReadBufferEXT(framebuffer, buf);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
else if(m_State == WRITING_IDLE && framebuffer != 0)
|
||||
{
|
||||
@@ -996,7 +1008,7 @@ void WrappedOpenGL::glReadBuffer(GLenum mode)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
if(readrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(readrecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(readrecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1037,7 +1049,7 @@ void WrappedOpenGL::glBindFramebuffer(GLenum target, GLuint framebuffer)
|
||||
Serialise_glBindFramebuffer(target, framebuffer);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
|
||||
if(framebuffer == 0 && m_State < WRITING)
|
||||
@@ -1088,7 +1100,7 @@ void WrappedOpenGL::glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum buf)
|
||||
Serialise_glFramebufferDrawBufferEXT(framebuffer, buf);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
else if(m_State == WRITING_IDLE && framebuffer != 0)
|
||||
{
|
||||
@@ -1112,7 +1124,7 @@ void WrappedOpenGL::glDrawBuffer(GLenum buf)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
if(drawrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(drawrecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(drawrecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1159,7 +1171,7 @@ void WrappedOpenGL::glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, c
|
||||
Serialise_glFramebufferDrawBuffersEXT(framebuffer, n, bufs);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), framebuffer), eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
else if(m_State == WRITING_IDLE && framebuffer != 0)
|
||||
{
|
||||
@@ -1186,7 +1198,7 @@ void WrappedOpenGL::glDrawBuffers(GLsizei n, const GLenum *bufs)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
if(drawrecord)
|
||||
GetResourceManager()->MarkResourceFrameReferenced(drawrecord->GetResourceID(), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(drawrecord->Resource, eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1396,8 +1408,8 @@ void WrappedOpenGL::glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFr
|
||||
Serialise_glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), readFramebuffer), eFrameRef_Read);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), drawFramebuffer), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), readFramebuffer), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), drawFramebuffer), eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
@@ -1422,8 +1434,8 @@ void WrappedOpenGL::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLi
|
||||
Serialise_glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), readFramebuffer), eFrameRef_Read);
|
||||
GetResourceManager()->MarkResourceFrameReferenced(FramebufferRes(GetCtx(), drawFramebuffer), eFrameRef_Read);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), readFramebuffer), eFrameRef_ReadBeforeWrite);
|
||||
GetResourceManager()->MarkFBOReferenced(FramebufferRes(GetCtx(), drawFramebuffer), eFrameRef_ReadBeforeWrite);
|
||||
}
|
||||
|
||||
m_Real.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
|
||||
Reference in New Issue
Block a user