mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-23 23:16:31 +00:00
Implement dirtying or referencing the whole state object at a time
This commit is contained in:
@@ -457,6 +457,8 @@ class WrappedOpenGL : public IFrameCapturer
|
||||
void AddDebugMessage(DebugMessage msg) { if(m_State < WRITING) m_DebugMessages.push_back(msg); }
|
||||
void AddDebugMessage(DebugMessageCategory c, DebugMessageSeverity sv, DebugMessageSource src, std::string d);
|
||||
|
||||
void AddMissingTrack(ResourceId id) { m_MissingTracks.insert(id); }
|
||||
|
||||
// replay interface
|
||||
void Initialise(GLInitParams ¶ms);
|
||||
void ReplayLog(uint32_t frameID, uint32_t startEventID, uint32_t endEventID, ReplayLogType replayType);
|
||||
|
||||
@@ -175,6 +175,7 @@ class GLResourceManager : public ResourceManager<GLResource, GLResourceRecord>
|
||||
|
||||
void MarkResourceFrameReferenced(GLResource res, FrameRefType refType)
|
||||
{
|
||||
if(res.name == 0) return;
|
||||
ResourceManager::MarkResourceFrameReferenced(GetID(res), refType);
|
||||
}
|
||||
|
||||
|
||||
@@ -290,6 +290,231 @@ GLRenderState::~GLRenderState()
|
||||
{
|
||||
}
|
||||
|
||||
void GLRenderState::MarkReferenced(WrappedOpenGL *gl, bool initial) const
|
||||
{
|
||||
GLResourceManager *manager = gl->GetResourceManager();
|
||||
|
||||
void *ctx = gl->GetCtx();
|
||||
|
||||
for(GLuint i=0; i < (GLuint)ARRAY_COUNT(Tex2D); i++)
|
||||
{
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex1D[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex2D[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex3D[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex1DArray[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex2DArray[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, TexCubeArray[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, TexRect[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, TexBuffer[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, TexCube[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex2DMS[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(TextureRes(ctx, Tex2DMSArray[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(SamplerRes(ctx, Samplers[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
}
|
||||
|
||||
for(GLuint i=0; i < (GLuint)ARRAY_COUNT(Images); i++)
|
||||
{
|
||||
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->MarkResourceFrameReferenced(FeedbackRes(ctx, FeedbackObj), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
manager->MarkResourceFrameReferenced(ProgramRes(ctx, Program), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
manager->MarkResourceFrameReferenced(ProgramPipeRes(ctx, Pipeline), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(BufferBindings); i++)
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, BufferBindings[i]), initial ? eFrameRef_Unknown : eFrameRef_Read);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(AtomicCounter); i++)
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, AtomicCounter[i].name), initial ? eFrameRef_Unknown : eFrameRef_ReadBeforeWrite);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(ShaderStorage); i++)
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, ShaderStorage[i].name), initial ? eFrameRef_Unknown : eFrameRef_ReadBeforeWrite);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(TransformFeedback); i++)
|
||||
manager->MarkResourceFrameReferenced(BufferRes(ctx, TransformFeedback[i].name), initial ? eFrameRef_Unknown : eFrameRef_ReadBeforeWrite);
|
||||
|
||||
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 };
|
||||
|
||||
// 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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GLRenderState::MarkDirty(WrappedOpenGL *gl)
|
||||
{
|
||||
GLResourceManager *manager = gl->GetResourceManager();
|
||||
|
||||
void *ctx = gl->GetCtx();
|
||||
|
||||
GLint maxCount = 0;
|
||||
m_Real->glGetIntegerv(eGL_MAX_IMAGE_UNITS, &maxCount);
|
||||
|
||||
GLuint name = 0;
|
||||
|
||||
for(GLint i=0; i < maxCount; i++)
|
||||
{
|
||||
name = 0;
|
||||
|
||||
m_Real->glGetIntegeri_v(eGL_IMAGE_BINDING_NAME, i, (GLint*)&name);
|
||||
|
||||
if(name)
|
||||
manager->MarkDirtyResource(TextureRes(ctx, name));
|
||||
}
|
||||
|
||||
m_Real->glGetIntegerv(eGL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, &maxCount);
|
||||
|
||||
for(GLint i=0; i < maxCount; i++)
|
||||
{
|
||||
m_Real->glGetIntegeri_v(eGL_TRANSFORM_FEEDBACK_BUFFER_BINDING, i, (GLint*)&name);
|
||||
|
||||
if(name)
|
||||
manager->MarkDirtyResource(BufferRes(ctx, name));
|
||||
}
|
||||
|
||||
m_Real->glGetIntegerv(eGL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, &maxCount);
|
||||
|
||||
for(GLint i=0; i < maxCount; i++)
|
||||
{
|
||||
m_Real->glGetIntegeri_v(eGL_ATOMIC_COUNTER_BUFFER_BINDING, i, (GLint*)&name);
|
||||
|
||||
if(name)
|
||||
manager->MarkDirtyResource(BufferRes(ctx, name));
|
||||
}
|
||||
|
||||
m_Real->glGetIntegerv(eGL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, &maxCount);
|
||||
|
||||
for(GLint i=0; i < maxCount; i++)
|
||||
{
|
||||
m_Real->glGetIntegeri_v(eGL_SHADER_STORAGE_BUFFER_BINDING, i, (GLint*)&name);
|
||||
|
||||
if(name)
|
||||
manager->MarkDirtyResource(BufferRes(ctx, name));
|
||||
}
|
||||
|
||||
m_Real->glGetIntegerv(eGL_MAX_COLOR_ATTACHMENTS, &maxCount);
|
||||
|
||||
m_Real->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&name);
|
||||
|
||||
if(name)
|
||||
{
|
||||
GLenum type = eGL_TEXTURE;
|
||||
for(GLint i=0; i < maxCount; i++)
|
||||
{
|
||||
m_Real->glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
m_Real->glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, GLenum(eGL_COLOR_ATTACHMENT0+i), eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
manager->MarkDirtyResource(RenderbufferRes(ctx, name));
|
||||
else
|
||||
manager->MarkDirtyResource(TextureRes(ctx, name));
|
||||
}
|
||||
}
|
||||
|
||||
m_Real->glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
m_Real->glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
manager->MarkDirtyResource(RenderbufferRes(ctx, name));
|
||||
else
|
||||
manager->MarkDirtyResource(TextureRes(ctx, name));
|
||||
}
|
||||
|
||||
m_Real->glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, (GLint*)&name);
|
||||
m_Real->glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_STENCIL_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, (GLint*)&type);
|
||||
|
||||
if(name)
|
||||
{
|
||||
if(type == eGL_RENDERBUFFER)
|
||||
manager->MarkDirtyResource(RenderbufferRes(ctx, name));
|
||||
else
|
||||
manager->MarkDirtyResource(TextureRes(ctx, name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
|
||||
{
|
||||
GLint boolread = 0;
|
||||
@@ -362,7 +587,20 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
|
||||
}
|
||||
|
||||
m_Real->glGetIntegerv(eGL_ACTIVE_TEXTURE, (GLint *)&ActiveTexture);
|
||||
|
||||
|
||||
RDCCOMPILE_ASSERT(sizeof(Tex1D) == sizeof(Tex2D) &&
|
||||
sizeof(Tex2D) == sizeof(Tex3D) &&
|
||||
sizeof(Tex3D) == sizeof(Tex1DArray) &&
|
||||
sizeof(Tex1DArray) == sizeof(Tex2DArray) &&
|
||||
sizeof(Tex2DArray) == sizeof(TexCubeArray) &&
|
||||
sizeof(TexCubeArray) == sizeof(TexRect) &&
|
||||
sizeof(TexRect) == sizeof(TexBuffer) &&
|
||||
sizeof(TexBuffer) == sizeof(TexCube) &&
|
||||
sizeof(TexCube) == sizeof(Tex2DMS) &&
|
||||
sizeof(Tex2DMS) == sizeof(Tex2DMSArray) &&
|
||||
sizeof(Tex2DMSArray) == sizeof(Samplers),
|
||||
"All texture arrays should be identically sized");
|
||||
|
||||
for(GLuint i=0; i < (GLuint)ARRAY_COUNT(Tex2D); i++)
|
||||
{
|
||||
m_Real->glActiveTexture(GLenum(eGL_TEXTURE0 + i));
|
||||
|
||||
@@ -62,7 +62,7 @@ struct GLRenderState
|
||||
void Serialise(LogState state, void *ctx, WrappedOpenGL *gl);
|
||||
|
||||
void MarkReferenced(WrappedOpenGL *gl, bool initial) const;
|
||||
void MarkDirty(GLResourceManager *manager, void *ctx, WrappedOpenGL *gl);
|
||||
void MarkDirty(WrappedOpenGL *gl);
|
||||
|
||||
enum
|
||||
{
|
||||
|
||||
@@ -93,7 +93,7 @@ void WrappedOpenGL::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y,
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ void WrappedOpenGL::glDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint nu
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ void WrappedOpenGL::glDispatchComputeIndirect(GLintptr indirect)
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -398,7 +398,7 @@ void WrappedOpenGL::glDrawTransformFeedback(GLenum mode, GLuint id)
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,7 +463,7 @@ void WrappedOpenGL::glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLs
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -528,7 +528,7 @@ void WrappedOpenGL::glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -594,7 +594,7 @@ void WrappedOpenGL::glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint i
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -660,7 +660,7 @@ void WrappedOpenGL::glDrawArrays(GLenum mode, GLint first, GLsizei count)
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -728,7 +728,7 @@ void WrappedOpenGL::glDrawArraysIndirect(GLenum mode, const void *indirect)
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -795,7 +795,7 @@ void WrappedOpenGL::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei coun
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -864,7 +864,7 @@ void WrappedOpenGL::glDrawArraysInstancedBaseInstance(GLenum mode, GLint first,
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1012,7 +1012,7 @@ void WrappedOpenGL::glDrawElements(GLenum mode, GLsizei count, GLenum type, cons
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1089,7 +1089,7 @@ void WrappedOpenGL::glDrawElementsIndirect(GLenum mode, GLenum type, const void
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1168,7 +1168,7 @@ void WrappedOpenGL::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, G
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1249,7 +1249,7 @@ void WrappedOpenGL::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLu
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1328,7 +1328,7 @@ void WrappedOpenGL::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1407,7 +1407,7 @@ void WrappedOpenGL::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum t
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1488,7 +1488,7 @@ void WrappedOpenGL::glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei cou
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1569,7 +1569,7 @@ void WrappedOpenGL::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1652,7 +1652,7 @@ void WrappedOpenGL::glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, G
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1783,7 +1783,7 @@ void WrappedOpenGL::glMultiDrawArrays(GLenum mode, const GLint *first, const GLs
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1938,7 +1938,7 @@ void WrappedOpenGL::glMultiDrawElements(GLenum mode, const GLsizei *count, GLenu
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2104,7 +2104,7 @@ void WrappedOpenGL::glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *co
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2258,7 +2258,7 @@ void WrappedOpenGL::glMultiDrawArraysIndirect(GLenum mode, const void *indirect,
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2422,7 +2422,7 @@ void WrappedOpenGL::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2588,7 +2588,7 @@ void WrappedOpenGL::glMultiDrawArraysIndirectCountARB(GLenum mode, GLintptr indi
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2763,7 +2763,7 @@ void WrappedOpenGL::glMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2877,7 +2877,7 @@ void WrappedOpenGL::glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer,
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
state.MarkDirty(GetResourceManager(), GetCtx(), this);
|
||||
state.MarkDirty(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user