Use TransformFeedbackID in place of GLuint handle

Bug: angleproject:3804
Change-Id: Ib8fbec89f28645790df98a184f47303f4a8d64c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1779343
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
This commit is contained in:
Jiacheng Lu 2019-08-30 15:00:52 -06:00 коммит произвёл Commit Bot
Родитель feb8507f4b
Коммит c3f7873b9a
34 изменённых файлов: 1275 добавлений и 1121 удалений

Просмотреть файл

@ -4,7 +4,7 @@
"scripts/egl_angle_ext.xml":
"fc2e249239fb1365f6d145cdf1a3cfcf",
"scripts/entry_point_packed_gl_enums.json":
"53963b4a4f5cac8fcfbaa77ee0573f4c",
"5550f249db54a698036d5d9aa65e043b",
"scripts/generate_entry_points.py":
"00dc8410ad87e122314ac58579445188",
"scripts/gl.xml":
@ -40,11 +40,11 @@
"src/libANGLE/Context_gl_3_3_autogen.h":
"b7b4c2cb4ed98e35b176dca69fdb99e0",
"src/libANGLE/Context_gl_4_0_autogen.h":
"705747dd674f10cbdc5b32cc8fc0348b",
"b4e36aa1bad2089a19c9242ce2e0e987",
"src/libANGLE/Context_gl_4_1_autogen.h":
"70d3e9df0ed7bf67cc83a97b93263803",
"src/libANGLE/Context_gl_4_2_autogen.h":
"4ca9c02624ba930d7f81d6a72c4c3574",
"a9ec9401726ec6c0a85374c8f24e91f1",
"src/libANGLE/Context_gl_4_3_autogen.h":
"b28ecd6043c07a9d902ec4311afd8188",
"src/libANGLE/Context_gl_4_4_autogen.h":
@ -58,7 +58,7 @@
"src/libANGLE/Context_gles_2_0_autogen.h":
"f243d85c9d1c94c0d7302e0a57af56b6",
"src/libANGLE/Context_gles_3_0_autogen.h":
"49231f9a98736a31f3e84586bcdadd83",
"7254debb6acecdd915cc8a5bc266adc6",
"src/libANGLE/Context_gles_3_1_autogen.h":
"8aef8ceb87eed9cc7e9586f6c98796e3",
"src/libANGLE/Context_gles_ext_autogen.h":
@ -72,9 +72,9 @@
"src/libANGLE/capture_gles_2_0_autogen.h":
"1d7c76f7dfcb666161bc4675932511c5",
"src/libANGLE/capture_gles_3_0_autogen.cpp":
"0342167a9578ec32d4aed57d21ec6719",
"0ccdb5401c2630ecc2bbd0bcbc1559f0",
"src/libANGLE/capture_gles_3_0_autogen.h":
"98df5f3d3bb76f34f6417b2d5b66e62d",
"47530c15422e03b9cc224533eed1f2f7",
"src/libANGLE/capture_gles_3_1_autogen.cpp":
"1de6bb30272e7b4b29e508a64c7d2e63",
"src/libANGLE/capture_gles_3_1_autogen.h":
@ -88,11 +88,11 @@
"src/libANGLE/entry_points_enum_autogen.h":
"f028ca107fe86e586e676a32863d2167",
"src/libANGLE/frame_capture_replay_autogen.cpp":
"97b8d0380f51e3f3baf5ef450cf939b1",
"1e4e55ea044ff8fc3764622a2f1cf240",
"src/libANGLE/frame_capture_utils_autogen.cpp":
"f25628b32cebb72f7ef831cbb27f5daf",
"7465f826ea0196541bddd95540b0f599",
"src/libANGLE/frame_capture_utils_autogen.h":
"aa6e389c20a70b9ba20bafabd5d552aa",
"4d16f676a1f5f70a882161fcb585db5b",
"src/libANGLE/validationES1_autogen.h":
"8d3131d2bf2e6f521f46b44e64a6bff9",
"src/libANGLE/validationES2_autogen.h":
@ -100,7 +100,7 @@
"src/libANGLE/validationES31_autogen.h":
"9bf34098be328bee8f9fc04d1afbdfde",
"src/libANGLE/validationES3_autogen.h":
"ecc93502fd279ef2343de2dc1eb35bfc",
"1b470a8e190aa007f093f1f13f3b1a8c",
"src/libANGLE/validationESEXT_autogen.h":
"be09aaed9df3427c782ea788c1327025",
"src/libANGLE/validationGL11_autogen.h":
@ -130,7 +130,7 @@
"src/libANGLE/validationGL41_autogen.h":
"b5028bd55850579cabd6a687f1904616",
"src/libANGLE/validationGL42_autogen.h":
"ab583998d8116efd22e001149c6a479e",
"0b6dc77764f5361aa3e29964694545f7",
"src/libANGLE/validationGL43_autogen.h":
"9ccf805631c9ee51440a07f232efb3e8",
"src/libANGLE/validationGL44_autogen.h":
@ -140,7 +140,7 @@
"src/libANGLE/validationGL46_autogen.h":
"08a145cbeb4ea627ce94c65cd881cc5d",
"src/libANGLE/validationGL4_autogen.h":
"e99c17ac2dc2fb59707514888099cd18",
"b5c8218b206e1862b329e061ece1a5ef",
"src/libGL/entry_points_gl_1_0_autogen.cpp":
"bf3679cbb617daced44bca2f8ca011a0",
"src/libGL/entry_points_gl_1_0_autogen.h":
@ -190,7 +190,7 @@
"src/libGL/entry_points_gl_3_3_autogen.h":
"2151c64b03364111ad1455609243caba",
"src/libGL/entry_points_gl_4_0_autogen.cpp":
"a93dac2bbe4f76e6f0f38f808680bcae",
"daa6a5284562847cc5802589a9396deb",
"src/libGL/entry_points_gl_4_0_autogen.h":
"c5a258322ee6de37ffdbb6f40d5703a2",
"src/libGL/entry_points_gl_4_1_autogen.cpp":
@ -198,7 +198,7 @@
"src/libGL/entry_points_gl_4_1_autogen.h":
"ea1e18bf5ed2bd1063c940bd793cb50c",
"src/libGL/entry_points_gl_4_2_autogen.cpp":
"5e1aad849cfd617673dca8a9932729aa",
"fa5d4f69bf45bc75ce07b9551c2484b5",
"src/libGL/entry_points_gl_4_2_autogen.h":
"e6b93e1c3028230ebf5ba8a09f5f4aca",
"src/libGL/entry_points_gl_4_3_autogen.cpp":
@ -230,7 +230,7 @@
"src/libGLESv2/entry_points_gles_2_0_autogen.h":
"3bbaf1cf42fba5d675e5b54cd1d14df7",
"src/libGLESv2/entry_points_gles_3_0_autogen.cpp":
"55b9cd11f35b58f83b0baf3f211fb43b",
"e0ec5aae2046f3cb7de9d51594024fe9",
"src/libGLESv2/entry_points_gles_3_0_autogen.h":
"395f6978219abd5182bbe80cc367e40c",
"src/libGLESv2/entry_points_gles_3_1_autogen.cpp":
@ -238,7 +238,7 @@
"src/libGLESv2/entry_points_gles_3_1_autogen.h":
"043d09a964c740067bf4279e0b544aed",
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
"74e9c751a445934646d20b78e0168c10",
"891cbeff3ee5e5eee5d476a5a1a41eae",
"src/libGLESv2/entry_points_gles_ext_autogen.h":
"fea36fa137e55dd2f244dbb49d31cc41",
"src/libGLESv2/libGLESv2_autogen.cpp":

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -381,7 +381,7 @@ struct BufferID
GLuint value;
};
struct ProgramPipelineID
struct FenceNVID
{
GLuint value;
};
@ -391,17 +391,22 @@ struct FramebufferID
GLuint value;
};
struct SemaphoreID
{
GLuint value;
};
struct MemoryObjectID
{
GLuint value;
};
struct VertexArrayID
struct PathID
{
GLuint value;
};
struct ProgramPipelineID
{
GLuint value;
};
struct QueryID
{
GLuint value;
};
@ -411,7 +416,12 @@ struct RenderbufferID
GLuint value;
};
struct PathID
struct SamplerID
{
GLuint value;
};
struct SemaphoreID
{
GLuint value;
};
@ -426,17 +436,12 @@ struct TextureID
GLuint value;
};
struct SamplerID
struct TransformFeedbackID
{
GLuint value;
};
struct FenceNVID
{
GLuint value;
};
struct QueryID
struct VertexArrayID
{
GLuint value;
};

Просмотреть файл

@ -455,7 +455,7 @@ void Context::initialize()
// In the initial state, a default transform feedback object is bound and treated as
// a transform feedback object with a name of zero. That object is bound any time
// BindTransformFeedback is called with id of zero
bindTransformFeedback(GL_TRANSFORM_FEEDBACK, 0);
bindTransformFeedback(GL_TRANSFORM_FEEDBACK, {0});
}
for (auto type : angle::AllEnums<BufferBinding>())
@ -994,7 +994,7 @@ Sampler *Context::getSampler(SamplerID handle) const
return mState.mSamplerManager->getSampler(handle);
}
TransformFeedback *Context::getTransformFeedback(GLuint handle) const
TransformFeedback *Context::getTransformFeedback(TransformFeedbackID handle) const
{
return mTransformFeedbackMap.query(handle);
}
@ -1019,7 +1019,7 @@ gl::LabeledObject *Context::getLabeledObject(GLenum identifier, GLuint name) con
case GL_QUERY:
return getQuery({name});
case GL_TRANSFORM_FEEDBACK:
return getTransformFeedback(name);
return getTransformFeedback({name});
case GL_SAMPLER:
return getSampler({name});
case GL_TEXTURE:
@ -1178,7 +1178,7 @@ void Context::useProgramStages(ProgramPipelineID pipeline,
UNIMPLEMENTED();
}
void Context::bindTransformFeedback(GLenum target, GLuint transformFeedbackHandle)
void Context::bindTransformFeedback(GLenum target, TransformFeedbackID transformFeedbackHandle)
{
ASSERT(target == GL_TRANSFORM_FEEDBACK);
TransformFeedback *transformFeedback =
@ -2763,7 +2763,8 @@ VertexArray *Context::checkVertexArrayAllocation(VertexArrayID vertexArrayHandle
return vertexArray;
}
TransformFeedback *Context::checkTransformFeedbackAllocation(GLuint transformFeedbackHandle)
TransformFeedback *Context::checkTransformFeedbackAllocation(
TransformFeedbackID transformFeedbackHandle)
{
// Only called after a prior call to Gen.
TransformFeedback *transformFeedback = getTransformFeedback(transformFeedbackHandle);
@ -2784,9 +2785,9 @@ bool Context::isVertexArrayGenerated(VertexArrayID vertexArray)
return mVertexArrayMap.contains(vertexArray);
}
bool Context::isTransformFeedbackGenerated(GLuint transformFeedback)
bool Context::isTransformFeedbackGenerated(TransformFeedbackID transformFeedback)
{
ASSERT(mTransformFeedbackMap.contains(0));
ASSERT(mTransformFeedbackMap.contains({0}));
return mTransformFeedbackMap.contains(transformFeedback);
}
@ -2854,7 +2855,7 @@ void Context::detachVertexArray(VertexArrayID vertexArray)
}
}
void Context::detachTransformFeedback(GLuint transformFeedback)
void Context::detachTransformFeedback(TransformFeedbackID transformFeedback)
{
// Transform feedback detachment is handled by Context, because 0 is a valid
// transform feedback, and a pointer to it must be passed from Context to State at
@ -2865,7 +2866,7 @@ void Context::detachTransformFeedback(GLuint transformFeedback)
// VAOs and FBOs and set the current bound transform feedback back to 0.
if (mState.removeTransformFeedbackBinding(this, transformFeedback))
{
bindTransformFeedback(GL_TRANSFORM_FEEDBACK, 0);
bindTransformFeedback(GL_TRANSFORM_FEEDBACK, {0});
}
}
@ -6842,12 +6843,12 @@ void Context::getTransformFeedbackVarying(ShaderProgramID program,
programObject->getTransformFeedbackVarying(index, bufSize, length, size, type, name);
}
void Context::deleteTransformFeedbacks(GLsizei n, const GLuint *ids)
void Context::deleteTransformFeedbacks(GLsizei n, const TransformFeedbackID *ids)
{
for (int i = 0; i < n; i++)
{
GLuint transformFeedback = ids[i];
if (transformFeedback == 0)
TransformFeedbackID transformFeedback = ids[i];
if (transformFeedback.value == 0)
{
continue;
}
@ -6861,24 +6862,24 @@ void Context::deleteTransformFeedbacks(GLsizei n, const GLuint *ids)
transformFeedbackObject->release(this);
}
mTransformFeedbackHandleAllocator.release(transformFeedback);
mTransformFeedbackHandleAllocator.release(transformFeedback.value);
}
}
}
void Context::genTransformFeedbacks(GLsizei n, GLuint *ids)
void Context::genTransformFeedbacks(GLsizei n, TransformFeedbackID *ids)
{
for (int i = 0; i < n; i++)
{
GLuint transformFeedback = mTransformFeedbackHandleAllocator.allocate();
TransformFeedbackID transformFeedback = {mTransformFeedbackHandleAllocator.allocate()};
mTransformFeedbackMap.assign(transformFeedback, nullptr);
ids[i] = transformFeedback;
}
}
GLboolean Context::isTransformFeedback(GLuint id)
GLboolean Context::isTransformFeedback(TransformFeedbackID id)
{
if (id == 0)
if (id.value == 0)
{
// The 3.0.4 spec [section 6.1.11] states that if ID is zero, IsTransformFeedback
// returns FALSE

Просмотреть файл

@ -385,7 +385,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
Sampler *getSampler(SamplerID handle) const;
Query *getQuery(QueryID handle, bool create, QueryType type);
Query *getQuery(QueryID handle) const;
TransformFeedback *getTransformFeedback(GLuint handle) const;
TransformFeedback *getTransformFeedback(TransformFeedbackID handle) const;
ProgramPipeline *getProgramPipeline(ProgramPipelineID handle) const;
MemoryObject *getMemoryObject(MemoryObjectID handle) const;
Semaphore *getSemaphore(SemaphoreID handle) const;
@ -397,7 +397,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
Compiler *getCompiler() const;
bool isVertexArrayGenerated(VertexArrayID vertexArray);
bool isTransformFeedbackGenerated(GLuint vertexArray);
bool isTransformFeedbackGenerated(TransformFeedbackID transformFeedback);
void getBooleanvImpl(GLenum pname, GLboolean *params);
void getFloatvImpl(GLenum pname, GLfloat *params);
@ -591,7 +591,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
angle::Result syncStateForPathOperation();
VertexArray *checkVertexArrayAllocation(VertexArrayID vertexArrayHandle);
TransformFeedback *checkTransformFeedbackAllocation(GLuint transformFeedback);
TransformFeedback *checkTransformFeedbackAllocation(TransformFeedbackID transformFeedback);
angle::Result onProgramLink(Program *programObject);
@ -600,7 +600,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
void detachFramebuffer(FramebufferID framebuffer);
void detachRenderbuffer(RenderbufferID renderbuffer);
void detachVertexArray(VertexArrayID vertexArray);
void detachTransformFeedback(GLuint transformFeedback);
void detachTransformFeedback(TransformFeedbackID transformFeedback);
void detachSampler(SamplerID sampler);
void detachProgramPipeline(ProgramPipelineID pipeline);
@ -658,7 +658,7 @@ class Context final : public egl::LabeledObject, angle::NonCopyable, public angl
ResourceMap<VertexArray, VertexArrayID> mVertexArrayMap;
HandleAllocator mVertexArrayHandleAllocator;
ResourceMap<TransformFeedback> mTransformFeedbackMap;
ResourceMap<TransformFeedback, TransformFeedbackID> mTransformFeedbackMap;
HandleAllocator mTransformFeedbackHandleAllocator;
const char *mVersionString;

Просмотреть файл

@ -2292,12 +2292,12 @@ void Context::blendFunci(GLuint buf, GLenum src, GLenum dst)
UNIMPLEMENTED();
}
void Context::drawTransformFeedback(GLenum mode, GLuint id)
void Context::drawTransformFeedback(GLenum mode, TransformFeedbackID id)
{
UNIMPLEMENTED();
}
void Context::drawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream)
void Context::drawTransformFeedbackStream(GLenum mode, TransformFeedbackID id, GLuint stream)
{
UNIMPLEMENTED();
}
@ -2761,13 +2761,15 @@ void Context::drawElementsInstancedBaseInstance(GLenum mode,
UNIMPLEMENTED();
}
void Context::drawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount)
void Context::drawTransformFeedbackInstanced(GLenum mode,
TransformFeedbackID id,
GLsizei instancecount)
{
UNIMPLEMENTED();
}
void Context::drawTransformFeedbackStreamInstanced(GLenum mode,
GLuint id,
TransformFeedbackID id,
GLuint stream,
GLsizei instancecount)
{

Просмотреть файл

@ -17,8 +17,8 @@
void blendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, \
GLenum dstAlpha); \
void blendFunci(GLuint buf, GLenum src, GLenum dst); \
void drawTransformFeedback(GLenum mode, GLuint id); \
void drawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); \
void drawTransformFeedback(GLenum mode, TransformFeedbackID idPacked); \
void drawTransformFeedbackStream(GLenum mode, TransformFeedbackID idPacked, GLuint stream); \
void endQueryIndexed(GLenum target, GLuint index); \
void getActiveSubroutineName(ShaderProgramID programPacked, GLenum shadertype, GLuint index, \
GLsizei bufsize, GLsizei *length, GLchar *name); \

Просмотреть файл

@ -14,9 +14,10 @@
void drawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, \
const void *indices, GLsizei instancecount, \
GLuint baseinstance); \
void drawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); \
void drawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, \
GLsizei instancecount); \
void drawTransformFeedbackInstanced(GLenum mode, TransformFeedbackID idPacked, \
GLsizei instancecount); \
void drawTransformFeedbackStreamInstanced(GLenum mode, TransformFeedbackID idPacked, \
GLuint stream, GLsizei instancecount); \
void getActiveAtomicCounterBufferiv(ShaderProgramID programPacked, GLuint bufferIndex, \
GLenum pname, GLint *params);

Просмотреть файл

@ -17,7 +17,7 @@
void bindBufferRange(BufferBinding targetPacked, GLuint index, BufferID bufferPacked, \
GLintptr offset, GLsizeiptr size); \
void bindSampler(GLuint unit, SamplerID samplerPacked); \
void bindTransformFeedback(GLenum target, GLuint id); \
void bindTransformFeedback(GLenum target, TransformFeedbackID idPacked); \
void bindVertexArray(VertexArrayID arrayPacked); \
void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, \
GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); \
@ -40,7 +40,7 @@
void deleteQueries(GLsizei n, const QueryID *idsPacked); \
void deleteSamplers(GLsizei count, const SamplerID *samplersPacked); \
void deleteSync(GLsync sync); \
void deleteTransformFeedbacks(GLsizei n, const GLuint *ids); \
void deleteTransformFeedbacks(GLsizei n, const TransformFeedbackID *idsPacked); \
void deleteVertexArrays(GLsizei n, const VertexArrayID *arraysPacked); \
void drawArraysInstanced(PrimitiveMode modePacked, GLint first, GLsizei count, \
GLsizei instancecount); \
@ -58,7 +58,7 @@
GLint level, GLint layer); \
void genQueries(GLsizei n, QueryID *idsPacked); \
void genSamplers(GLsizei count, SamplerID *samplersPacked); \
void genTransformFeedbacks(GLsizei n, GLuint *ids); \
void genTransformFeedbacks(GLsizei n, TransformFeedbackID *idsPacked); \
void genVertexArrays(GLsizei n, VertexArrayID *arraysPacked); \
void getActiveUniformBlockName(ShaderProgramID programPacked, GLuint uniformBlockIndex, \
GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); \
@ -97,7 +97,7 @@
GLboolean isQuery(QueryID idPacked); \
GLboolean isSampler(SamplerID samplerPacked); \
GLboolean isSync(GLsync sync); \
GLboolean isTransformFeedback(GLuint id); \
GLboolean isTransformFeedback(TransformFeedbackID idPacked); \
GLboolean isVertexArray(VertexArrayID arrayPacked); \
void *mapBufferRange(BufferBinding targetPacked, GLintptr offset, GLsizeiptr length, \
GLbitfield access); \

Просмотреть файл

@ -854,17 +854,15 @@ template <>
void WriteParamValueToStream<ParamType::TGLDEBUGPROC>(std::ostream &os, GLDEBUGPROC value)
{}
// TODO(jmadill): Use buffer ID map. http://anglebug.com/3611
// TODO(jmadill): Use resource ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TBufferID>(std::ostream &os, gl::BufferID value)
{
os << value.value;
}
// TODO(jmadill): Use program pipeline ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TProgramPipelineID>(std::ostream &os,
gl::ProgramPipelineID value)
void WriteParamValueToStream<ParamType::TFenceNVID>(std::ostream &os, gl::FenceNVID value)
{
os << value.value;
}
@ -875,12 +873,6 @@ void WriteParamValueToStream<ParamType::TFramebufferID>(std::ostream &os, gl::Fr
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TSemaphoreID>(std::ostream &os, gl::SemaphoreID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TMemoryObjectID>(std::ostream &os, gl::MemoryObjectID value)
{
@ -888,38 +880,42 @@ void WriteParamValueToStream<ParamType::TMemoryObjectID>(std::ostream &os, gl::M
}
template <>
void WriteParamValueToStream<ParamType::TVertexArrayID>(std::ostream &os, gl::VertexArrayID value)
void WriteParamValueToStream<ParamType::TPathID>(std::ostream &os, gl::PathID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TProgramPipelineID>(std::ostream &os,
gl::ProgramPipelineID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TQueryID>(std::ostream &os, gl::QueryID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TRenderbufferID>(std::ostream &os, gl::RenderbufferID value)
{
os << "gRenderbufferMap[" << value.value << "]";
}
// TODO(jmadill): Use path ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TPathID>(std::ostream &os, gl::PathID value)
{
os << value.value;
}
// TODO(jmadill): Use texture ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TTextureID>(std::ostream &os, gl::TextureID value)
{
os << value.value;
}
// TODO(jmadill): Use sampler ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TSamplerID>(std::ostream &os, gl::SamplerID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TSemaphoreID>(std::ostream &os, gl::SemaphoreID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TShaderProgramID>(std::ostream &os,
gl::ShaderProgramID value)
@ -927,16 +923,21 @@ void WriteParamValueToStream<ParamType::TShaderProgramID>(std::ostream &os,
os << value.value;
}
// TODO(jmadill): Use FenceNV ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TFenceNVID>(std::ostream &os, gl::FenceNVID value)
void WriteParamValueToStream<ParamType::TTextureID>(std::ostream &os, gl::TextureID value)
{
os << value.value;
}
// TODO(jmadill): Use query ID map. http://anglebug.com/3611
template <>
void WriteParamValueToStream<ParamType::TQueryID>(std::ostream &os, gl::QueryID value)
void WriteParamValueToStream<ParamType::TTransformFeedbackID>(std::ostream &os,
gl::TransformFeedbackID value)
{
os << value.value;
}
template <>
void WriteParamValueToStream<ParamType::TVertexArrayID>(std::ostream &os, gl::VertexArrayID value)
{
os << value.value;
}

Просмотреть файл

@ -262,45 +262,49 @@ void WriteParamValueToStream<ParamType::TGLDEBUGPROC>(std::ostream &os, GLDEBUGP
template <>
void WriteParamValueToStream<ParamType::TBufferID>(std::ostream &os, gl::BufferID value);
template <>
void WriteParamValueToStream<ParamType::TFenceNVID>(std::ostream &os, gl::FenceNVID value);
template <>
void WriteParamValueToStream<ParamType::TFramebufferID>(std::ostream &os, gl::FramebufferID value);
template <>
void WriteParamValueToStream<ParamType::TProgramPipelineID>(std::ostream &os,
gl::ProgramPipelineID value);
template <>
void WriteParamValueToStream<ParamType::TShaderProgramID>(std::ostream &os,
gl::ShaderProgramID value);
template <>
void WriteParamValueToStream<ParamType::TSemaphoreID>(std::ostream &os, gl::SemaphoreID value);
template <>
void WriteParamValueToStream<ParamType::TMemoryObjectID>(std::ostream &os,
gl::MemoryObjectID value);
template <>
void WriteParamValueToStream<ParamType::TVertexArrayID>(std::ostream &os, gl::VertexArrayID value);
void WriteParamValueToStream<ParamType::TPathID>(std::ostream &os, gl::PathID value);
template <>
void WriteParamValueToStream<ParamType::TProgramPipelineID>(std::ostream &os,
gl::ProgramPipelineID value);
template <>
void WriteParamValueToStream<ParamType::TQueryID>(std::ostream &os, gl::QueryID value);
template <>
void WriteParamValueToStream<ParamType::TRenderbufferID>(std::ostream &os,
gl::RenderbufferID value);
template <>
void WriteParamValueToStream<ParamType::TPathID>(std::ostream &os, gl::PathID value);
void WriteParamValueToStream<ParamType::TSamplerID>(std::ostream &os, gl::SamplerID value);
template <>
void WriteParamValueToStream<ParamType::TSemaphoreID>(std::ostream &os, gl::SemaphoreID value);
template <>
void WriteParamValueToStream<ParamType::TShaderProgramID>(std::ostream &os,
gl::ShaderProgramID value);
template <>
void WriteParamValueToStream<ParamType::TTextureID>(std::ostream &os, gl::TextureID value);
template <>
void WriteParamValueToStream<ParamType::TSamplerID>(std::ostream &os, gl::SamplerID value);
void WriteParamValueToStream<ParamType::TTransformFeedbackID>(std::ostream &os,
gl::TransformFeedbackID value);
template <>
void WriteParamValueToStream<ParamType::TFenceNVID>(std::ostream &os, gl::FenceNVID value);
template <>
void WriteParamValueToStream<ParamType::TQueryID>(std::ostream &os, gl::QueryID value);
void WriteParamValueToStream<ParamType::TVertexArrayID>(std::ostream &os, gl::VertexArrayID value);
// General fallback for any unspecific type.
template <ParamType ParamT, typename T>

Просмотреть файл

@ -1487,9 +1487,10 @@ void State::setTransformFeedbackBinding(const Context *context,
mDirtyBits.set(DIRTY_BIT_TRANSFORM_FEEDBACK_BINDING);
}
bool State::removeTransformFeedbackBinding(const Context *context, GLuint transformFeedback)
bool State::removeTransformFeedbackBinding(const Context *context,
TransformFeedbackID transformFeedback)
{
if (mTransformFeedback.id() == transformFeedback)
if (mTransformFeedback.id() == transformFeedback.value)
{
if (mTransformFeedback.get())
mTransformFeedback->onBindingChanged(context, false);

Просмотреть файл

@ -316,7 +316,8 @@ class State : angle::NonCopyable
!curTransformFeedback->isPaused();
}
bool removeTransformFeedbackBinding(const Context *context, GLuint transformFeedback);
bool removeTransformFeedbackBinding(const Context *context,
TransformFeedbackID transformFeedback);
// Query binding manipulation
bool isQueryActive(QueryType type) const;

Просмотреть файл

@ -84,8 +84,10 @@ GLsizeiptr TransformFeedbackState::getPrimitivesDrawn() const
}
}
TransformFeedback::TransformFeedback(rx::GLImplFactory *implFactory, GLuint id, const Caps &caps)
: RefCountObject(id),
TransformFeedback::TransformFeedback(rx::GLImplFactory *implFactory,
TransformFeedbackID id,
const Caps &caps)
: RefCountObject(id.value),
mState(caps.maxTransformFeedbackSeparateAttributes),
mImplementation(implFactory->createTransformFeedback(mState))
{

Просмотреть файл

@ -60,7 +60,7 @@ class TransformFeedbackState final : angle::NonCopyable
class TransformFeedback final : public RefCountObject, public LabeledObject
{
public:
TransformFeedback(rx::GLImplFactory *implFactory, GLuint id, const Caps &caps);
TransformFeedback(rx::GLImplFactory *implFactory, TransformFeedbackID id, const Caps &caps);
~TransformFeedback() override;
void onDestroy(const Context *context) override;

Просмотреть файл

@ -41,7 +41,7 @@ class TransformFeedbackTest : public testing::Test
// Set a reasonable number of tf attributes
mCaps.maxTransformFeedbackSeparateAttributes = 8;
mFeedback = new gl::TransformFeedback(&mMockFactory, 1, mCaps);
mFeedback = new gl::TransformFeedback(&mMockFactory, gl::TransformFeedbackID{1}, mCaps);
mFeedback->addRef();
mImpl = rx::GetImplAs<rx::MockTransformFeedbackImpl>(mFeedback);

Просмотреть файл

@ -95,13 +95,13 @@ CallCapture CaptureBindSampler(const Context *context,
CallCapture CaptureBindTransformFeedback(const Context *context,
bool isCallValid,
GLenum target,
GLuint id)
TransformFeedbackID idPacked)
{
ParamBuffer paramBuffer;
paramBuffer.addEnumParam("target", GLenumGroup::BindTransformFeedbackTarget, ParamType::TGLenum,
target);
paramBuffer.addValueParam("id", ParamType::TGLuint, id);
paramBuffer.addValueParam("idPacked", ParamType::TTransformFeedbackID, idPacked);
return CallCapture(gl::EntryPoint::BindTransformFeedback, std::move(paramBuffer));
}
@ -404,16 +404,16 @@ CallCapture CaptureDeleteSync(const Context *context, bool isCallValid, GLsync s
CallCapture CaptureDeleteTransformFeedbacks(const Context *context,
bool isCallValid,
GLsizei n,
const GLuint *ids)
const TransformFeedbackID *idsPacked)
{
ParamBuffer paramBuffer;
paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
ParamCapture idsParam("ids", ParamType::TGLuintConstPointer);
InitParamValue(ParamType::TGLuintConstPointer, ids, &idsParam.value);
CaptureDeleteTransformFeedbacks_ids(context, isCallValid, n, ids, &idsParam);
paramBuffer.addParam(std::move(idsParam));
ParamCapture idsPackedParam("idsPacked", ParamType::TTransformFeedbackIDConstPointer);
InitParamValue(ParamType::TTransformFeedbackIDConstPointer, idsPacked, &idsPackedParam.value);
CaptureDeleteTransformFeedbacks_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
paramBuffer.addParam(std::move(idsPackedParam));
return CallCapture(gl::EntryPoint::DeleteTransformFeedbacks, std::move(paramBuffer));
}
@ -629,16 +629,16 @@ CallCapture CaptureGenSamplers(const Context *context,
CallCapture CaptureGenTransformFeedbacks(const Context *context,
bool isCallValid,
GLsizei n,
GLuint *ids)
TransformFeedbackID *idsPacked)
{
ParamBuffer paramBuffer;
paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
ParamCapture idsParam("ids", ParamType::TGLuintPointer);
InitParamValue(ParamType::TGLuintPointer, ids, &idsParam.value);
CaptureGenTransformFeedbacks_ids(context, isCallValid, n, ids, &idsParam);
paramBuffer.addParam(std::move(idsParam));
ParamCapture idsPackedParam("idsPacked", ParamType::TTransformFeedbackIDPointer);
InitParamValue(ParamType::TTransformFeedbackIDPointer, idsPacked, &idsPackedParam.value);
CaptureGenTransformFeedbacks_idsPacked(context, isCallValid, n, idsPacked, &idsPackedParam);
paramBuffer.addParam(std::move(idsPackedParam));
return CallCapture(gl::EntryPoint::GenTransformFeedbacks, std::move(paramBuffer));
}
@ -1295,12 +1295,12 @@ CallCapture CaptureIsSync(const Context *context,
CallCapture CaptureIsTransformFeedback(const Context *context,
bool isCallValid,
GLuint id,
TransformFeedbackID idPacked,
GLboolean returnValue)
{
ParamBuffer paramBuffer;
paramBuffer.addValueParam("id", ParamType::TGLuint, id);
paramBuffer.addValueParam("idPacked", ParamType::TTransformFeedbackID, idPacked);
ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);

Просмотреть файл

@ -46,7 +46,7 @@ angle::CallCapture CaptureBindSampler(const Context *context,
angle::CallCapture CaptureBindTransformFeedback(const Context *context,
bool isCallValid,
GLenum target,
GLuint id);
TransformFeedbackID idPacked);
angle::CallCapture CaptureBindVertexArray(const Context *context,
bool isCallValid,
VertexArrayID arrayPacked);
@ -143,7 +143,7 @@ angle::CallCapture CaptureDeleteSync(const Context *context, bool isCallValid, G
angle::CallCapture CaptureDeleteTransformFeedbacks(const Context *context,
bool isCallValid,
GLsizei n,
const GLuint *ids);
const TransformFeedbackID *idsPacked);
angle::CallCapture CaptureDeleteVertexArrays(const Context *context,
bool isCallValid,
GLsizei n,
@ -205,7 +205,7 @@ angle::CallCapture CaptureGenSamplers(const Context *context,
angle::CallCapture CaptureGenTransformFeedbacks(const Context *context,
bool isCallValid,
GLsizei n,
GLuint *ids);
TransformFeedbackID *idsPacked);
angle::CallCapture CaptureGenVertexArrays(const Context *context,
bool isCallValid,
GLsizei n,
@ -368,7 +368,7 @@ angle::CallCapture CaptureIsSync(const Context *context,
GLboolean returnValue);
angle::CallCapture CaptureIsTransformFeedback(const Context *context,
bool isCallValid,
GLuint id,
TransformFeedbackID idPacked,
GLboolean returnValue);
angle::CallCapture CaptureIsVertexArray(const Context *context,
bool isCallValid,
@ -650,11 +650,11 @@ void CaptureDeleteSamplers_samplersPacked(const Context *context,
GLsizei count,
const SamplerID *samplersPacked,
angle::ParamCapture *paramCapture);
void CaptureDeleteTransformFeedbacks_ids(const Context *context,
bool isCallValid,
GLsizei n,
const GLuint *ids,
angle::ParamCapture *paramCapture);
void CaptureDeleteTransformFeedbacks_idsPacked(const Context *context,
bool isCallValid,
GLsizei n,
const TransformFeedbackID *idsPacked,
angle::ParamCapture *paramCapture);
void CaptureDeleteVertexArrays_arraysPacked(const Context *context,
bool isCallValid,
GLsizei n,
@ -692,11 +692,11 @@ void CaptureGenSamplers_samplersPacked(const Context *context,
GLsizei count,
SamplerID *samplersPacked,
angle::ParamCapture *paramCapture);
void CaptureGenTransformFeedbacks_ids(const Context *context,
bool isCallValid,
GLsizei n,
GLuint *ids,
angle::ParamCapture *paramCapture);
void CaptureGenTransformFeedbacks_idsPacked(const Context *context,
bool isCallValid,
GLsizei n,
TransformFeedbackID *idsPacked,
angle::ParamCapture *paramCapture);
void CaptureGenVertexArrays_arraysPacked(const Context *context,
bool isCallValid,
GLsizei n,

Просмотреть файл

@ -94,11 +94,11 @@ void CaptureDeleteSamplers_samplersPacked(const Context *context,
UNIMPLEMENTED();
}
void CaptureDeleteTransformFeedbacks_ids(const Context *context,
bool isCallValid,
GLsizei n,
const GLuint *ids,
ParamCapture *paramCapture)
void CaptureDeleteTransformFeedbacks_idsPacked(const Context *context,
bool isCallValid,
GLsizei n,
const TransformFeedbackID *ids,
ParamCapture *paramCapture)
{
UNIMPLEMENTED();
}
@ -164,11 +164,11 @@ void CaptureGenSamplers_samplersPacked(const Context *context,
UNIMPLEMENTED();
}
void CaptureGenTransformFeedbacks_ids(const Context *context,
bool isCallValid,
GLsizei n,
GLuint *ids,
ParamCapture *paramCapture)
void CaptureGenTransformFeedbacks_idsPacked(const Context *context,
bool isCallValid,
GLsizei n,
TransformFeedbackID *ids,
ParamCapture *paramCapture)
{
UNIMPLEMENTED();
}

Просмотреть файл

@ -151,7 +151,8 @@ void FrameCapture::ReplayCall(gl::Context *context,
case gl::EntryPoint::BindTransformFeedback:
context->bindTransformFeedback(
params.getParam("target", ParamType::TGLenum, 0).value.GLenumVal,
params.getParam("id", ParamType::TGLuint, 1).value.GLuintVal);
params.getParam("idPacked", ParamType::TTransformFeedbackID, 1)
.value.TransformFeedbackIDVal);
break;
case gl::EntryPoint::BindVertexArray:
context->bindVertexArray(params.getParam("arrayPacked", ParamType::TVertexArrayID, 0)
@ -544,8 +545,8 @@ void FrameCapture::ReplayCall(gl::Context *context,
case gl::EntryPoint::DeleteTransformFeedbacks:
context->deleteTransformFeedbacks(
params.getParam("n", ParamType::TGLsizei, 0).value.GLsizeiVal,
replayContext->getAsConstPointer<const GLuint *>(
params.getParam("ids", ParamType::TGLuintConstPointer, 1)));
replayContext->getAsConstPointer<const TransformFeedbackID *>(
params.getParam("idsPacked", ParamType::TTransformFeedbackIDConstPointer, 1)));
break;
case gl::EntryPoint::DeleteVertexArrays:
context->deleteVertexArrays(
@ -850,8 +851,8 @@ void FrameCapture::ReplayCall(gl::Context *context,
case gl::EntryPoint::GenTransformFeedbacks:
context->genTransformFeedbacks(
params.getParam("n", ParamType::TGLsizei, 0).value.GLsizeiVal,
replayContext->getReadBufferPointer<GLuint *>(
params.getParam("ids", ParamType::TGLuintPointer, 1)));
replayContext->getReadBufferPointer<TransformFeedbackID *>(
params.getParam("idsPacked", ParamType::TTransformFeedbackIDPointer, 1)));
break;
case gl::EntryPoint::GenVertexArrays:
context->genVertexArrays(
@ -1650,7 +1651,8 @@ void FrameCapture::ReplayCall(gl::Context *context,
break;
case gl::EntryPoint::IsTransformFeedback:
context->isTransformFeedback(
params.getParam("id", ParamType::TGLuint, 0).value.GLuintVal);
params.getParam("idPacked", ParamType::TTransformFeedbackID, 0)
.value.TransformFeedbackIDVal);
break;
case gl::EntryPoint::IsVertexArray:
context->isVertexArray(params.getParam("arrayPacked", ParamType::TVertexArrayID, 0)

Просмотреть файл

@ -394,6 +394,18 @@ void WriteParamTypeToStream(std::ostream &os, ParamType paramType, const ParamVa
case ParamType::TTextureType:
WriteParamValueToStream<ParamType::TTextureType>(os, paramValue.TextureTypeVal);
break;
case ParamType::TTransformFeedbackID:
WriteParamValueToStream<ParamType::TTransformFeedbackID>(
os, paramValue.TransformFeedbackIDVal);
break;
case ParamType::TTransformFeedbackIDConstPointer:
WriteParamValueToStream<ParamType::TTransformFeedbackIDConstPointer>(
os, paramValue.TransformFeedbackIDConstPointerVal);
break;
case ParamType::TTransformFeedbackIDPointer:
WriteParamValueToStream<ParamType::TTransformFeedbackIDPointer>(
os, paramValue.TransformFeedbackIDPointerVal);
break;
case ParamType::TVertexArrayID:
WriteParamValueToStream<ParamType::TVertexArrayID>(os, paramValue.VertexArrayIDVal);
break;
@ -652,6 +664,12 @@ const char *ParamTypeToString(ParamType paramType)
return "GLenum";
case ParamType::TTextureType:
return "GLenum";
case ParamType::TTransformFeedbackID:
return "GLuint";
case ParamType::TTransformFeedbackIDConstPointer:
return "const GLuint *";
case ParamType::TTransformFeedbackIDPointer:
return "GLuint *";
case ParamType::TVertexArrayID:
return "GLuint";
case ParamType::TVertexArrayIDConstPointer:

Просмотреть файл

@ -126,6 +126,9 @@ enum class ParamType
TTextureIDPointer,
TTextureTarget,
TTextureType,
TTransformFeedbackID,
TTransformFeedbackIDConstPointer,
TTransformFeedbackIDPointer,
TVertexArrayID,
TVertexArrayIDConstPointer,
TVertexArrayIDPointer,
@ -247,6 +250,9 @@ union ParamValue
gl::TextureID *TextureIDPointerVal;
gl::TextureTarget TextureTargetVal;
gl::TextureType TextureTypeVal;
gl::TransformFeedbackID TransformFeedbackIDVal;
const gl::TransformFeedbackID *TransformFeedbackIDConstPointerVal;
gl::TransformFeedbackID *TransformFeedbackIDPointerVal;
gl::VertexArrayID VertexArrayIDVal;
const gl::VertexArrayID *VertexArrayIDConstPointerVal;
gl::VertexArrayID *VertexArrayIDPointerVal;
@ -981,6 +987,28 @@ inline gl::TextureType GetParamVal<ParamType::TTextureType, gl::TextureType>(
return value.TextureTypeVal;
}
template <>
inline gl::TransformFeedbackID
GetParamVal<ParamType::TTransformFeedbackID, gl::TransformFeedbackID>(const ParamValue &value)
{
return value.TransformFeedbackIDVal;
}
template <>
inline const gl::TransformFeedbackID *
GetParamVal<ParamType::TTransformFeedbackIDConstPointer, const gl::TransformFeedbackID *>(
const ParamValue &value)
{
return value.TransformFeedbackIDConstPointerVal;
}
template <>
inline gl::TransformFeedbackID *GetParamVal<ParamType::TTransformFeedbackIDPointer,
gl::TransformFeedbackID *>(const ParamValue &value)
{
return value.TransformFeedbackIDPointerVal;
}
template <>
inline gl::VertexArrayID GetParamVal<ParamType::TVertexArrayID, gl::VertexArrayID>(
const ParamValue &value)
@ -1264,6 +1292,12 @@ T AccessParamValue(ParamType paramType, const ParamValue &value)
return GetParamVal<ParamType::TTextureTarget, T>(value);
case ParamType::TTextureType:
return GetParamVal<ParamType::TTextureType, T>(value);
case ParamType::TTransformFeedbackID:
return GetParamVal<ParamType::TTransformFeedbackID, T>(value);
case ParamType::TTransformFeedbackIDConstPointer:
return GetParamVal<ParamType::TTransformFeedbackIDConstPointer, T>(value);
case ParamType::TTransformFeedbackIDPointer:
return GetParamVal<ParamType::TTransformFeedbackIDPointer, T>(value);
case ParamType::TVertexArrayID:
return GetParamVal<ParamType::TVertexArrayID, T>(value);
case ParamType::TVertexArrayIDConstPointer:
@ -1986,6 +2020,28 @@ inline void SetParamVal<ParamType::TTextureType>(gl::TextureType valueIn, ParamV
valueOut->TextureTypeVal = valueIn;
}
template <>
inline void SetParamVal<ParamType::TTransformFeedbackID>(gl::TransformFeedbackID valueIn,
ParamValue *valueOut)
{
valueOut->TransformFeedbackIDVal = valueIn;
}
template <>
inline void SetParamVal<ParamType::TTransformFeedbackIDConstPointer>(
const gl::TransformFeedbackID *valueIn,
ParamValue *valueOut)
{
valueOut->TransformFeedbackIDConstPointerVal = valueIn;
}
template <>
inline void SetParamVal<ParamType::TTransformFeedbackIDPointer>(gl::TransformFeedbackID *valueIn,
ParamValue *valueOut)
{
valueOut->TransformFeedbackIDPointerVal = valueIn;
}
template <>
inline void SetParamVal<ParamType::TVertexArrayID>(gl::VertexArrayID valueIn, ParamValue *valueOut)
{
@ -2376,6 +2432,15 @@ void InitParamValue(ParamType paramType, T valueIn, ParamValue *valueOut)
case ParamType::TTextureType:
SetParamVal<ParamType::TTextureType>(valueIn, valueOut);
break;
case ParamType::TTransformFeedbackID:
SetParamVal<ParamType::TTransformFeedbackID>(valueIn, valueOut);
break;
case ParamType::TTransformFeedbackIDConstPointer:
SetParamVal<ParamType::TTransformFeedbackIDConstPointer>(valueIn, valueOut);
break;
case ParamType::TTransformFeedbackIDPointer:
SetParamVal<ParamType::TTransformFeedbackIDPointer>(valueIn, valueOut);
break;
case ParamType::TVertexArrayID:
SetParamVal<ParamType::TVertexArrayID>(valueIn, valueOut);
break;

Просмотреть файл

@ -37,125 +37,125 @@
- (id)initWithSharedState:(rx::SharedSwapState *)swapState
withContext:(CGLContextObj)displayContext
withFunctions:(const rx::FunctionsGL *)functions
{
self = [super init];
if (self != nil)
{
self = [super init];
if (self != nil)
self.asynchronous = YES;
mDisplayContext = displayContext;
initialized = false;
mSwapState = swapState;
mFunctions = functions;
[self setFrame:CGRectMake(0, 0, mSwapState->textures[0].width,
mSwapState->textures[0].height)];
}
return self;
}
- (CGLPixelFormatObj)copyCGLPixelFormatForDisplayMask:(uint32_t)mask
{
CGLPixelFormatAttribute attribs[] = {
kCGLPFADisplayMask, static_cast<CGLPixelFormatAttribute>(mask), kCGLPFAOpenGLProfile,
static_cast<CGLPixelFormatAttribute>(kCGLOGLPVersion_3_2_Core),
static_cast<CGLPixelFormatAttribute>(0)};
CGLPixelFormatObj pixelFormat = nullptr;
GLint numFormats = 0;
CGLChoosePixelFormat(attribs, &pixelFormat, &numFormats);
return pixelFormat;
}
- (CGLContextObj)copyCGLContextForPixelFormat:(CGLPixelFormatObj)pixelFormat
{
CGLContextObj context = nullptr;
CGLCreateContext(pixelFormat, mDisplayContext, &context);
return context;
}
- (BOOL)canDrawInCGLContext:(CGLContextObj)glContext
pixelFormat:(CGLPixelFormatObj)pixelFormat
forLayerTime:(CFTimeInterval)timeInterval
displayTime:(const CVTimeStamp *)timeStamp
{
BOOL result = NO;
pthread_mutex_lock(&mSwapState->mutex);
{
if (mSwapState->lastRendered->swapId > mSwapState->beingPresented->swapId)
{
self.asynchronous = YES;
mDisplayContext = displayContext;
initialized = false;
mSwapState = swapState;
mFunctions = functions;
[self setFrame:CGRectMake(0, 0, mSwapState->textures[0].width,
mSwapState->textures[0].height)];
std::swap(mSwapState->lastRendered, mSwapState->beingPresented);
result = YES;
}
return self;
}
pthread_mutex_unlock(&mSwapState->mutex);
return result;
}
- (void)drawInCGLContext:(CGLContextObj)glContext
pixelFormat:(CGLPixelFormatObj)pixelFormat
forLayerTime:(CFTimeInterval)timeInterval
displayTime:(const CVTimeStamp *)timeStamp
{
CGLSetCurrentContext(glContext);
if (!initialized)
{
initialized = true;
mFunctions->genFramebuffers(1, &mReadFramebuffer);
}
- (CGLPixelFormatObj)copyCGLPixelFormatForDisplayMask:(uint32_t)mask
const auto &texture = *mSwapState->beingPresented;
if ([self frame].size.width != texture.width || [self frame].size.height != texture.height)
{
CGLPixelFormatAttribute attribs[] = {
kCGLPFADisplayMask, static_cast<CGLPixelFormatAttribute>(mask), kCGLPFAOpenGLProfile,
static_cast<CGLPixelFormatAttribute>(kCGLOGLPVersion_3_2_Core),
static_cast<CGLPixelFormatAttribute>(0)};
[self setFrame:CGRectMake(0, 0, texture.width, texture.height)];
CGLPixelFormatObj pixelFormat = nullptr;
GLint numFormats = 0;
CGLChoosePixelFormat(attribs, &pixelFormat, &numFormats);
return pixelFormat;
// Without this, the OSX compositor / window system doesn't see the resize.
[self setNeedsDisplay];
}
- (CGLContextObj)copyCGLContextForPixelFormat:(CGLPixelFormatObj)pixelFormat
{
CGLContextObj context = nullptr;
CGLCreateContext(pixelFormat, mDisplayContext, &context);
return context;
}
// TODO(cwallez) support 2.1 contexts too that don't have blitFramebuffer nor the
// GL_DRAW_FRAMEBUFFER_BINDING query
GLint drawFBO;
mFunctions->getIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &drawFBO);
- (BOOL)canDrawInCGLContext:(CGLContextObj)glContext
pixelFormat:(CGLPixelFormatObj)pixelFormat
forLayerTime:(CFTimeInterval)timeInterval
displayTime:(const CVTimeStamp *)timeStamp
{
BOOL result = NO;
mFunctions->bindFramebuffer(GL_FRAMEBUFFER, mReadFramebuffer);
mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
texture.texture, 0);
pthread_mutex_lock(&mSwapState->mutex);
{
if (mSwapState->lastRendered->swapId > mSwapState->beingPresented->swapId)
{
std::swap(mSwapState->lastRendered, mSwapState->beingPresented);
result = YES;
}
}
pthread_mutex_unlock(&mSwapState->mutex);
mFunctions->bindFramebuffer(GL_READ_FRAMEBUFFER, mReadFramebuffer);
mFunctions->bindFramebuffer(GL_DRAW_FRAMEBUFFER, drawFBO);
mFunctions->blitFramebuffer(0, 0, texture.width, texture.height, 0, 0, texture.width,
texture.height, GL_COLOR_BUFFER_BIT, GL_NEAREST);
return result;
}
// Call the super method to flush the context
[super drawInCGLContext:glContext
pixelFormat:pixelFormat
forLayerTime:timeInterval
displayTime:timeStamp];
}
@end
- (void)drawInCGLContext:(CGLContextObj)glContext
pixelFormat:(CGLPixelFormatObj)pixelFormat
forLayerTime:(CFTimeInterval)timeInterval
displayTime:(const CVTimeStamp *)timeStamp
{
CGLSetCurrentContext(glContext);
if (!initialized)
{
initialized = true;
namespace rx
{
mFunctions->genFramebuffers(1, &mReadFramebuffer);
}
const auto &texture = *mSwapState->beingPresented;
if ([self frame].size.width != texture.width || [self frame].size.height != texture.height)
{
[self setFrame:CGRectMake(0, 0, texture.width, texture.height)];
// Without this, the OSX compositor / window system doesn't see the resize.
[self setNeedsDisplay];
}
// TODO(cwallez) support 2.1 contexts too that don't have blitFramebuffer nor the
// GL_DRAW_FRAMEBUFFER_BINDING query
GLint drawFBO;
mFunctions->getIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &drawFBO);
mFunctions->bindFramebuffer(GL_FRAMEBUFFER, mReadFramebuffer);
mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
texture.texture, 0);
mFunctions->bindFramebuffer(GL_READ_FRAMEBUFFER, mReadFramebuffer);
mFunctions->bindFramebuffer(GL_DRAW_FRAMEBUFFER, drawFBO);
mFunctions->blitFramebuffer(0, 0, texture.width, texture.height, 0, 0, texture.width,
texture.height, GL_COLOR_BUFFER_BIT, GL_NEAREST);
// Call the super method to flush the context
[super drawInCGLContext:glContext
pixelFormat:pixelFormat
forLayerTime:timeInterval
displayTime:timeStamp];
}
@end
namespace rx
{
WindowSurfaceCGL::WindowSurfaceCGL(const egl::SurfaceState &state,
RendererGL *renderer,
EGLNativeWindowType layer,
CGLContextObj context)
: SurfaceGL(state),
mSwapLayer(nil),
mCurrentSwapId(0),
mLayer(reinterpret_cast<CALayer *>(layer)),
mContext(context),
mFunctions(renderer->getFunctions()),
mStateManager(renderer->getStateManager()),
mDSRenderbuffer(0)
{
pthread_mutex_init(&mSwapState.mutex, nullptr);
WindowSurfaceCGL::WindowSurfaceCGL(const egl::SurfaceState &state,
RendererGL *renderer,
EGLNativeWindowType layer,
CGLContextObj context)
: SurfaceGL(state),
mSwapLayer(nil),
mCurrentSwapId(0),
mLayer(reinterpret_cast<CALayer *>(layer)),
mContext(context),
mFunctions(renderer->getFunctions()),
mStateManager(renderer->getStateManager()),
mDSRenderbuffer(0)
{
pthread_mutex_init(&mSwapState.mutex, nullptr);
}
WindowSurfaceCGL::~WindowSurfaceCGL()

Просмотреть файл

@ -2447,7 +2447,7 @@ static bool ValidateObjectIdentifierAndName(Context *context, GLenum identifier,
return true;
case GL_TRANSFORM_FEEDBACK:
if (context->getTransformFeedback(name) == nullptr)
if (context->getTransformFeedback({name}) == nullptr)
{
context->validationError(GL_INVALID_VALUE, kInvalidTransformFeedbackName);
return false;

Просмотреть файл

@ -2426,12 +2426,12 @@ bool ValidateDeleteSamplers(Context *context, GLint count, const SamplerID *samp
return ValidateGenOrDeleteCountES3(context, count);
}
bool ValidateGenTransformFeedbacks(Context *context, GLint n, GLuint *)
bool ValidateGenTransformFeedbacks(Context *context, GLint n, TransformFeedbackID *ids)
{
return ValidateGenOrDeleteES3(context, n);
}
bool ValidateDeleteTransformFeedbacks(Context *context, GLint n, const GLuint *ids)
bool ValidateDeleteTransformFeedbacks(Context *context, GLint n, const TransformFeedbackID *ids)
{
if (!ValidateGenOrDeleteES3(context, n))
{
@ -3601,7 +3601,7 @@ bool ValidateGetTransformFeedbackVarying(Context *context,
return true;
}
bool ValidateBindTransformFeedback(Context *context, GLenum target, GLuint id)
bool ValidateBindTransformFeedback(Context *context, GLenum target, TransformFeedbackID id)
{
if (context->getClientMajorVersion() < 3)
{
@ -3639,7 +3639,7 @@ bool ValidateBindTransformFeedback(Context *context, GLenum target, GLuint id)
return true;
}
bool ValidateIsTransformFeedback(Context *context, GLuint id)
bool ValidateIsTransformFeedback(Context *context, TransformFeedbackID id)
{
if (context->getClientMajorVersion() < 3)
{

Просмотреть файл

@ -30,7 +30,7 @@ bool ValidateBindBufferRange(Context *context,
GLintptr offset,
GLsizeiptr size);
bool ValidateBindSampler(Context *context, GLuint unit, SamplerID samplerPacked);
bool ValidateBindTransformFeedback(Context *context, GLenum target, GLuint id);
bool ValidateBindTransformFeedback(Context *context, GLenum target, TransformFeedbackID idPacked);
bool ValidateBindVertexArray(Context *context, VertexArrayID arrayPacked);
bool ValidateBlitFramebuffer(Context *context,
GLint srcX0,
@ -93,7 +93,9 @@ bool ValidateCopyTexSubImage3D(Context *context,
bool ValidateDeleteQueries(Context *context, GLsizei n, const QueryID *idsPacked);
bool ValidateDeleteSamplers(Context *context, GLsizei count, const SamplerID *samplersPacked);
bool ValidateDeleteSync(Context *context, GLsync sync);
bool ValidateDeleteTransformFeedbacks(Context *context, GLsizei n, const GLuint *ids);
bool ValidateDeleteTransformFeedbacks(Context *context,
GLsizei n,
const TransformFeedbackID *idsPacked);
bool ValidateDeleteVertexArrays(Context *context, GLsizei n, const VertexArrayID *arraysPacked);
bool ValidateDrawArraysInstanced(Context *context,
PrimitiveMode modePacked,
@ -129,7 +131,7 @@ bool ValidateFramebufferTextureLayer(Context *context,
GLint layer);
bool ValidateGenQueries(Context *context, GLsizei n, QueryID *idsPacked);
bool ValidateGenSamplers(Context *context, GLsizei count, SamplerID *samplersPacked);
bool ValidateGenTransformFeedbacks(Context *context, GLsizei n, GLuint *ids);
bool ValidateGenTransformFeedbacks(Context *context, GLsizei n, TransformFeedbackID *idsPacked);
bool ValidateGenVertexArrays(Context *context, GLsizei n, VertexArrayID *arraysPacked);
bool ValidateGetActiveUniformBlockName(Context *context,
ShaderProgramID programPacked,
@ -228,7 +230,7 @@ bool ValidateInvalidateSubFramebuffer(Context *context,
bool ValidateIsQuery(Context *context, QueryID idPacked);
bool ValidateIsSampler(Context *context, SamplerID samplerPacked);
bool ValidateIsSync(Context *context, GLsync sync);
bool ValidateIsTransformFeedback(Context *context, GLuint id);
bool ValidateIsTransformFeedback(Context *context, TransformFeedbackID idPacked);
bool ValidateIsVertexArray(Context *context, VertexArrayID arrayPacked);
bool ValidateMapBufferRange(Context *context,
BufferBinding targetPacked,

Просмотреть файл

@ -41,12 +41,15 @@ bool ValidateBlendFunci(Context *context, GLuint buf, GLenum src, GLenum dst)
return true;
}
bool ValidateDrawTransformFeedback(Context *context, GLenum mode, GLuint id)
bool ValidateDrawTransformFeedback(Context *context, GLenum mode, TransformFeedbackID id)
{
return true;
}
bool ValidateDrawTransformFeedbackStream(Context *context, GLenum mode, GLuint id, GLuint stream)
bool ValidateDrawTransformFeedbackStream(Context *context,
GLenum mode,
TransformFeedbackID id,
GLuint stream)
{
return true;
}

Просмотреть файл

@ -46,7 +46,7 @@ bool ValidateDrawElementsInstancedBaseVertexBaseInstance(Context *context,
bool ValidateDrawTransformFeedbackInstanced(Context *context,
GLenum mode,
GLuint id,
TransformFeedbackID id,
GLsizei instancecount)
{
return true;
@ -54,7 +54,7 @@ bool ValidateDrawTransformFeedbackInstanced(Context *context,
bool ValidateDrawTransformFeedbackStreamInstanced(Context *context,
GLenum mode,
GLuint id,
TransformFeedbackID id,
GLuint stream,
GLsizei instancecount)
{

Просмотреть файл

@ -40,11 +40,11 @@ bool ValidateDrawElementsInstancedBaseVertexBaseInstance(Context *context,
GLuint baseinstance);
bool ValidateDrawTransformFeedbackInstanced(Context *context,
GLenum mode,
GLuint id,
TransformFeedbackID idPacked,
GLsizei instancecount);
bool ValidateDrawTransformFeedbackStreamInstanced(Context *context,
GLenum mode,
GLuint id,
TransformFeedbackID idPacked,
GLuint stream,
GLsizei instancecount);
bool ValidateGetActiveAtomicCounterBufferiv(Context *context,

Просмотреть файл

@ -27,8 +27,11 @@ bool ValidateBlendFuncSeparatei(Context *context,
GLenum srcAlpha,
GLenum dstAlpha);
bool ValidateBlendFunci(Context *context, GLuint buf, GLenum src, GLenum dst);
bool ValidateDrawTransformFeedback(Context *context, GLenum mode, GLuint id);
bool ValidateDrawTransformFeedbackStream(Context *context, GLenum mode, GLuint id, GLuint stream);
bool ValidateDrawTransformFeedback(Context *context, GLenum mode, TransformFeedbackID idPacked);
bool ValidateDrawTransformFeedbackStream(Context *context,
GLenum mode,
TransformFeedbackID idPacked,
GLuint stream);
bool ValidateEndQueryIndexed(Context *context, GLenum target, GLuint index);
bool ValidateGetActiveSubroutineName(Context *context,
ShaderProgramID programPacked,

Просмотреть файл

@ -55,14 +55,15 @@ void GL_APIENTRY BindTransformFeedback(GLenum target, GLuint id)
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateBindTransformFeedback(context, target, id));
(context->skipValidation() || ValidateBindTransformFeedback(context, target, idPacked));
if (isCallValid)
{
context->bindTransformFeedback(target, id);
context->bindTransformFeedback(target, idPacked);
}
ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, id);
ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, idPacked);
}
}
@ -162,14 +163,15 @@ void GL_APIENTRY DeleteTransformFeedbacks(GLsizei n, const GLuint *ids)
if (context)
{
const TransformFeedbackID *idsPacked = FromGL<const TransformFeedbackID *>(ids);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, ids));
(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, idsPacked));
if (isCallValid)
{
context->deleteTransformFeedbacks(n, ids);
context->deleteTransformFeedbacks(n, idsPacked);
}
ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, ids);
ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, idsPacked);
}
}
@ -227,14 +229,15 @@ void GL_APIENTRY DrawTransformFeedback(GLenum mode, GLuint id)
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateDrawTransformFeedback(context, mode, id));
(context->skipValidation() || ValidateDrawTransformFeedback(context, mode, idPacked));
if (isCallValid)
{
context->drawTransformFeedback(mode, id);
context->drawTransformFeedback(mode, idPacked);
}
ANGLE_CAPTURE(DrawTransformFeedback, isCallValid, context, mode, id);
ANGLE_CAPTURE(DrawTransformFeedback, isCallValid, context, mode, idPacked);
}
}
@ -247,14 +250,15 @@ void GL_APIENTRY DrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stre
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid = (context->skipValidation() ||
ValidateDrawTransformFeedbackStream(context, mode, id, stream));
ValidateDrawTransformFeedbackStream(context, mode, idPacked, stream));
if (isCallValid)
{
context->drawTransformFeedbackStream(mode, id, stream);
context->drawTransformFeedbackStream(mode, idPacked, stream);
}
ANGLE_CAPTURE(DrawTransformFeedbackStream, isCallValid, context, mode, id, stream);
ANGLE_CAPTURE(DrawTransformFeedbackStream, isCallValid, context, mode, idPacked, stream);
}
}
@ -286,14 +290,15 @@ void GL_APIENTRY GenTransformFeedbacks(GLsizei n, GLuint *ids)
if (context)
{
TransformFeedbackID *idsPacked = FromGL<TransformFeedbackID *>(ids);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, ids));
(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, idsPacked));
if (isCallValid)
{
context->genTransformFeedbacks(n, ids);
context->genTransformFeedbacks(n, idsPacked);
}
ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, ids);
ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, idsPacked);
}
}
@ -560,17 +565,19 @@ GLboolean GL_APIENTRY IsTransformFeedback(GLuint id)
GLboolean returnValue;
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid = (context->skipValidation() || ValidateIsTransformFeedback(context, id));
bool isCallValid =
(context->skipValidation() || ValidateIsTransformFeedback(context, idPacked));
if (isCallValid)
{
returnValue = context->isTransformFeedback(id);
returnValue = context->isTransformFeedback(idPacked);
}
else
{
returnValue = GetDefaultReturnValue<EntryPoint::IsTransformFeedback, GLboolean>();
}
ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, id, returnValue);
ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, idPacked, returnValue);
}
else
{

Просмотреть файл

@ -164,14 +164,16 @@ void GL_APIENTRY DrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid = (context->skipValidation() || ValidateDrawTransformFeedbackInstanced(
context, mode, id, instancecount));
bool isCallValid =
(context->skipValidation() ||
ValidateDrawTransformFeedbackInstanced(context, mode, idPacked, instancecount));
if (isCallValid)
{
context->drawTransformFeedbackInstanced(mode, id, instancecount);
context->drawTransformFeedbackInstanced(mode, idPacked, instancecount);
}
ANGLE_CAPTURE(DrawTransformFeedbackInstanced, isCallValid, context, mode, id,
ANGLE_CAPTURE(DrawTransformFeedbackInstanced, isCallValid, context, mode, idPacked,
instancecount);
}
}
@ -190,16 +192,17 @@ void GL_APIENTRY DrawTransformFeedbackStreamInstanced(GLenum mode,
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateDrawTransformFeedbackStreamInstanced(
context, mode, id, stream, instancecount));
context, mode, idPacked, stream, instancecount));
if (isCallValid)
{
context->drawTransformFeedbackStreamInstanced(mode, id, stream, instancecount);
context->drawTransformFeedbackStreamInstanced(mode, idPacked, stream, instancecount);
}
ANGLE_CAPTURE(DrawTransformFeedbackStreamInstanced, isCallValid, context, mode, id, stream,
instancecount);
ANGLE_CAPTURE(DrawTransformFeedbackStreamInstanced, isCallValid, context, mode, idPacked,
stream, instancecount);
}
}

Просмотреть файл

@ -138,14 +138,15 @@ void GL_APIENTRY BindTransformFeedback(GLenum target, GLuint id)
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateBindTransformFeedback(context, target, id));
(context->skipValidation() || ValidateBindTransformFeedback(context, target, idPacked));
if (isCallValid)
{
context->bindTransformFeedback(target, id);
context->bindTransformFeedback(target, idPacked);
}
ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, id);
ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, idPacked);
}
}
@ -533,14 +534,15 @@ void GL_APIENTRY DeleteTransformFeedbacks(GLsizei n, const GLuint *ids)
if (context)
{
const TransformFeedbackID *idsPacked = FromGL<const TransformFeedbackID *>(ids);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, ids));
(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, idsPacked));
if (isCallValid)
{
context->deleteTransformFeedbacks(n, ids);
context->deleteTransformFeedbacks(n, idsPacked);
}
ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, ids);
ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, idsPacked);
}
}
@ -831,14 +833,15 @@ void GL_APIENTRY GenTransformFeedbacks(GLsizei n, GLuint *ids)
if (context)
{
TransformFeedbackID *idsPacked = FromGL<TransformFeedbackID *>(ids);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, ids));
(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, idsPacked));
if (isCallValid)
{
context->genTransformFeedbacks(n, ids);
context->genTransformFeedbacks(n, idsPacked);
}
ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, ids);
ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, idsPacked);
}
}
@ -1593,17 +1596,19 @@ GLboolean GL_APIENTRY IsTransformFeedback(GLuint id)
GLboolean returnValue;
if (context)
{
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid = (context->skipValidation() || ValidateIsTransformFeedback(context, id));
bool isCallValid =
(context->skipValidation() || ValidateIsTransformFeedback(context, idPacked));
if (isCallValid)
{
returnValue = context->isTransformFeedback(id);
returnValue = context->isTransformFeedback(idPacked);
}
else
{
returnValue = GetDefaultReturnValue<EntryPoint::IsTransformFeedback, GLboolean>();
}
ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, id, returnValue);
ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, idPacked, returnValue);
}
else
{

Просмотреть файл

@ -7643,14 +7643,15 @@ void GL_APIENTRY BindTransformFeedbackContextANGLE(GLeglContext ctx, GLenum targ
if (context)
{
ASSERT(context == GetValidGlobalContext());
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateBindTransformFeedback(context, target, id));
(context->skipValidation() || ValidateBindTransformFeedback(context, target, idPacked));
if (isCallValid)
{
context->bindTransformFeedback(target, id);
context->bindTransformFeedback(target, idPacked);
}
ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, id);
ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, idPacked);
}
}
@ -9560,14 +9561,15 @@ void GL_APIENTRY DeleteTransformFeedbacksContextANGLE(GLeglContext ctx,
if (context)
{
ASSERT(context == GetValidGlobalContext());
const TransformFeedbackID *idsPacked = FromGL<const TransformFeedbackID *>(ids);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, ids));
(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, idsPacked));
if (isCallValid)
{
context->deleteTransformFeedbacks(n, ids);
context->deleteTransformFeedbacks(n, idsPacked);
}
ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, ids);
ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, idsPacked);
}
}
@ -11399,14 +11401,15 @@ void GL_APIENTRY GenTransformFeedbacksContextANGLE(GLeglContext ctx, GLsizei n,
if (context)
{
ASSERT(context == GetValidGlobalContext());
TransformFeedbackID *idsPacked = FromGL<TransformFeedbackID *>(ids);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid =
(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, ids));
(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, idsPacked));
if (isCallValid)
{
context->genTransformFeedbacks(n, ids);
context->genTransformFeedbacks(n, idsPacked);
}
ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, ids);
ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, idsPacked);
}
}
@ -15074,17 +15077,19 @@ GLboolean GL_APIENTRY IsTransformFeedbackContextANGLE(GLeglContext ctx, GLuint i
if (context)
{
ASSERT(context == GetValidGlobalContext());
TransformFeedbackID idPacked = FromGL<TransformFeedbackID>(id);
std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
bool isCallValid = (context->skipValidation() || ValidateIsTransformFeedback(context, id));
bool isCallValid =
(context->skipValidation() || ValidateIsTransformFeedback(context, idPacked));
if (isCallValid)
{
returnValue = context->isTransformFeedback(id);
returnValue = context->isTransformFeedback(idPacked);
}
else
{
returnValue = GetDefaultReturnValue<EntryPoint::IsTransformFeedback, GLboolean>();
}
ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, id, returnValue);
ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, idPacked, returnValue);
}
else
{