Skip to content

Commit

Permalink
[//gpu] Remove TexImage2DSharedImageCHROMIUM()
Browse files Browse the repository at this point in the history
This API is problematic [1], and we will not be pursuing its usage.

[1] https://bugs.chromium.org/p/chromium/issues/detail?id=1410164#c61

Bug: 1410164
Change-Id: Ifa3d57c319141308a4b0c3a0b608c88e7b042497
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4976133
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1215972}
  • Loading branch information
colinblundell authored and Chromium LUCI CQ committed Oct 27, 2023
1 parent 63a05c4 commit f81ec60
Show file tree
Hide file tree
Showing 22 changed files with 34 additions and 361 deletions.
24 changes: 0 additions & 24 deletions gpu/GLES2/extensions/CHROMIUM/CHROMIUM_shared_image.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,30 +22,6 @@ Overview

New Procedures and Functions

The command

GLuint glTexImage2DSharedImageCHROMIUM (GLunit texture, const GLbyte *mailbox)

takes two arguments:

texture - A client-side texture.
mailbox - the mailbox referring to the SharedImage to assign to the
first level of the texture.

This function maps `texture` to the texture object of the SharedImage
represented by the mailbox and ensures that if `texture` is bound to a
target, the service-side texture gets bound to that target.

On success, this function extends the lifetime of the SharedImage
referenced by mailbox by taking a ref. The texture object is deleted and
the ref released once the calling context deletes the texture name
associated with the texture object, and detaches it from all framebuffer
objects as well as texture unit bindings.

INVALID_OPERATION is generated if <mailbox> is not associated with a
texture object. In this case `texture` becomes unbound. It is
treated in the same way as a new texture name returned by GenTextures.

The command

GLuint glCreateAndTexStorage2DSharedImageCHROMIUM (const GLbyte *mailbox)
Expand Down
2 changes: 0 additions & 2 deletions gpu/GLES2/gl2chromium_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -364,8 +364,6 @@
#define glFramebufferTextureMultiviewOVR \
GLES2_GET_FUN(FramebufferTextureMultiviewOVR)
#define glMaxShaderCompilerThreadsKHR GLES2_GET_FUN(MaxShaderCompilerThreadsKHR)
#define glTexImage2DSharedImageCHROMIUM \
GLES2_GET_FUN(TexImage2DSharedImageCHROMIUM)
#define glCreateAndTexStorage2DSharedImageCHROMIUM \
GLES2_GET_FUN(CreateAndTexStorage2DSharedImageCHROMIUM)
#define glBeginSharedImageAccessDirectCHROMIUM \
Expand Down
8 changes: 0 additions & 8 deletions gpu/command_buffer/build_gles2_cmd_buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -4022,14 +4022,6 @@
'extension': 'KHRParallelShaderCompile',
'extension_flag': 'khr_parallel_shader_compile',
},
'TexImage2DSharedImageCHROMIUM': {
'decoder_func': 'DoTexImage2DSharedImageCHROMIUM',
'type': 'PUT',
'extension': "CHROMIUM_shared_image",
'count': 16, # GL_MAILBOX_SIZE_CHROMIUM
'unit_test': False,
'trace_level': 2,
},
'CreateAndTexStorage2DSharedImageCHROMIUM': {
'type': 'NoCommand',
'extension': "CHROMIUM_shared_image",
Expand Down
8 changes: 0 additions & 8 deletions gpu/command_buffer/client/gles2_c_lib_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -1642,10 +1642,6 @@ void GL_APIENTRY GLES2FramebufferTextureMultiviewOVR(GLenum target,
void GL_APIENTRY GLES2MaxShaderCompilerThreadsKHR(GLuint count) {
gles2::GetGLContext()->MaxShaderCompilerThreadsKHR(count);
}
void GL_APIENTRY GLES2TexImage2DSharedImageCHROMIUM(GLuint texture,
const GLbyte* mailbox) {
gles2::GetGLContext()->TexImage2DSharedImageCHROMIUM(texture, mailbox);
}
GLuint GL_APIENTRY
GLES2CreateAndTexStorage2DSharedImageCHROMIUM(const GLbyte* mailbox) {
return gles2::GetGLContext()->CreateAndTexStorage2DSharedImageCHROMIUM(
Expand Down Expand Up @@ -3198,10 +3194,6 @@ extern const NameToFunc g_gles2_function_table[] = {
"glMaxShaderCompilerThreadsKHR",
reinterpret_cast<GLES2FunctionPointer>(glMaxShaderCompilerThreadsKHR),
},
{
"glTexImage2DSharedImageCHROMIUM",
reinterpret_cast<GLES2FunctionPointer>(glTexImage2DSharedImageCHROMIUM),
},
{
"glCreateAndTexStorage2DSharedImageCHROMIUM",
reinterpret_cast<GLES2FunctionPointer>(
Expand Down
12 changes: 0 additions & 12 deletions gpu/command_buffer/client/gles2_cmd_helper_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -3136,18 +3136,6 @@ void MaxShaderCompilerThreadsKHR(GLuint count) {
}
}

void TexImage2DSharedImageCHROMIUMImmediate(GLuint texture,
const GLbyte* mailbox) {
const uint32_t size =
gles2::cmds::TexImage2DSharedImageCHROMIUMImmediate::ComputeSize();
gles2::cmds::TexImage2DSharedImageCHROMIUMImmediate* c =
GetImmediateCmdSpaceTotalSize<
gles2::cmds::TexImage2DSharedImageCHROMIUMImmediate>(size);
if (c) {
c->Init(texture, mailbox);
}
}

void CreateAndTexStorage2DSharedImageINTERNALImmediate(GLuint texture,
const GLbyte* mailbox) {
const uint32_t size = gles2::cmds::
Expand Down
3 changes: 0 additions & 3 deletions gpu/command_buffer/client/gles2_implementation_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -1155,9 +1155,6 @@ void FramebufferTextureMultiviewOVR(GLenum target,

void MaxShaderCompilerThreadsKHR(GLuint count) override;

void TexImage2DSharedImageCHROMIUM(GLuint texture,
const GLbyte* mailbox) override;

GLuint CreateAndTexStorage2DSharedImageCHROMIUM(const GLbyte* mailbox) override;

void BeginSharedImageAccessDirectCHROMIUM(GLuint texture, GLenum mode) override;
Expand Down
14 changes: 0 additions & 14 deletions gpu/command_buffer/client/gles2_implementation_impl_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -3486,20 +3486,6 @@ void GLES2Implementation::MaxShaderCompilerThreadsKHR(GLuint count) {
CheckGLError();
}

void GLES2Implementation::TexImage2DSharedImageCHROMIUM(GLuint texture,
const GLbyte* mailbox) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexImage2DSharedImageCHROMIUM("
<< texture << ", " << static_cast<const void*>(mailbox)
<< ")");
uint32_t count = 16;
for (uint32_t ii = 0; ii < count; ++ii) {
GPU_CLIENT_LOG("value[" << ii << "]: " << mailbox[ii]);
}
helper_->TexImage2DSharedImageCHROMIUMImmediate(texture, mailbox);
CheckGLError();
}

void GLES2Implementation::BeginSharedImageAccessDirectCHROMIUM(GLuint texture,
GLenum mode) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
Expand Down
16 changes: 0 additions & 16 deletions gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -2995,22 +2995,6 @@ TEST_F(GLES2ImplementationTest, FramebufferTextureMultiviewOVR) {
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}

TEST_F(GLES2ImplementationTest, TexImage2DSharedImageCHROMIUM) {
GLbyte data[16] = {0};
struct Cmds {
cmds::TexImage2DSharedImageCHROMIUMImmediate cmd;
GLbyte data[16];
};

for (int jj = 0; jj < 16; ++jj) {
data[jj] = static_cast<GLbyte>(jj);
}
Cmds expected;
expected.cmd.Init(1, &data[0]);
gl_->TexImage2DSharedImageCHROMIUM(1, &data[0]);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}

TEST_F(GLES2ImplementationTest, EndSharedImageAccessDirectCHROMIUM) {
struct Cmds {
cmds::EndSharedImageAccessDirectCHROMIUM cmd;
Expand Down
2 changes: 0 additions & 2 deletions gpu/command_buffer/client/gles2_interface_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -855,8 +855,6 @@ virtual void FramebufferTextureMultiviewOVR(GLenum target,
GLint baseViewIndex,
GLsizei numViews) = 0;
virtual void MaxShaderCompilerThreadsKHR(GLuint count) = 0;
virtual void TexImage2DSharedImageCHROMIUM(GLuint texture,
const GLbyte* mailbox) = 0;
virtual GLuint CreateAndTexStorage2DSharedImageCHROMIUM(
const GLbyte* mailbox) = 0;
virtual void BeginSharedImageAccessDirectCHROMIUM(GLuint texture,
Expand Down
2 changes: 0 additions & 2 deletions gpu/command_buffer/client/gles2_interface_stub_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -829,8 +829,6 @@ void FramebufferTextureMultiviewOVR(GLenum target,
GLint baseViewIndex,
GLsizei numViews) override;
void MaxShaderCompilerThreadsKHR(GLuint count) override;
void TexImage2DSharedImageCHROMIUM(GLuint texture,
const GLbyte* mailbox) override;
GLuint CreateAndTexStorage2DSharedImageCHROMIUM(const GLbyte* mailbox) override;
void BeginSharedImageAccessDirectCHROMIUM(GLuint texture, GLenum mode) override;
void EndSharedImageAccessDirectCHROMIUM(GLuint texture) override;
Expand Down
3 changes: 0 additions & 3 deletions gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -1121,9 +1121,6 @@ void GLES2InterfaceStub::FramebufferTextureMultiviewOVR(
GLint /* baseViewIndex */,
GLsizei /* numViews */) {}
void GLES2InterfaceStub::MaxShaderCompilerThreadsKHR(GLuint /* count */) {}
void GLES2InterfaceStub::TexImage2DSharedImageCHROMIUM(
GLuint /* texture */,
const GLbyte* /* mailbox */) {}
GLuint GLES2InterfaceStub::CreateAndTexStorage2DSharedImageCHROMIUM(
const GLbyte* /* mailbox */) {
return 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -829,8 +829,6 @@ void FramebufferTextureMultiviewOVR(GLenum target,
GLint baseViewIndex,
GLsizei numViews) override;
void MaxShaderCompilerThreadsKHR(GLuint count) override;
void TexImage2DSharedImageCHROMIUM(GLuint texture,
const GLbyte* mailbox) override;
GLuint CreateAndTexStorage2DSharedImageCHROMIUM(const GLbyte* mailbox) override;
void BeginSharedImageAccessDirectCHROMIUM(GLuint texture, GLenum mode) override;
void EndSharedImageAccessDirectCHROMIUM(GLuint texture) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2384,14 +2384,6 @@ void GLES2TraceImplementation::MaxShaderCompilerThreadsKHR(GLuint count) {
gl_->MaxShaderCompilerThreadsKHR(count);
}

void GLES2TraceImplementation::TexImage2DSharedImageCHROMIUM(
GLuint texture,
const GLbyte* mailbox) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu",
"GLES2Trace::TexImage2DSharedImageCHROMIUM");
gl_->TexImage2DSharedImageCHROMIUM(texture, mailbox);
}

GLuint GLES2TraceImplementation::CreateAndTexStorage2DSharedImageCHROMIUM(
const GLbyte* mailbox) {
TRACE_EVENT_BINARY_EFFICIENT0(
Expand Down
41 changes: 0 additions & 41 deletions gpu/command_buffer/common/gles2_cmd_format_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -15456,47 +15456,6 @@ static_assert(offsetof(MaxShaderCompilerThreadsKHR, header) == 0,
static_assert(offsetof(MaxShaderCompilerThreadsKHR, count) == 4,
"offset of MaxShaderCompilerThreadsKHR count should be 4");

struct TexImage2DSharedImageCHROMIUMImmediate {
typedef TexImage2DSharedImageCHROMIUMImmediate ValueType;
static const CommandId kCmdId = kTexImage2DSharedImageCHROMIUMImmediate;
static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(2);

static uint32_t ComputeDataSize() {
return static_cast<uint32_t>(sizeof(GLbyte) * 16);
}

static uint32_t ComputeSize() {
return static_cast<uint32_t>(sizeof(ValueType) + ComputeDataSize());
}

void SetHeader() { header.SetCmdByTotalSize<ValueType>(ComputeSize()); }

void Init(GLuint _texture, const GLbyte* _mailbox) {
SetHeader();
texture = _texture;
memcpy(ImmediateDataAddress(this), _mailbox, ComputeDataSize());
}

void* Set(void* cmd, GLuint _texture, const GLbyte* _mailbox) {
static_cast<ValueType*>(cmd)->Init(_texture, _mailbox);
const uint32_t size = ComputeSize();
return NextImmediateCmdAddressTotalSize<ValueType>(cmd, size);
}

gpu::CommandHeader header;
uint32_t texture;
};

static_assert(sizeof(TexImage2DSharedImageCHROMIUMImmediate) == 8,
"size of TexImage2DSharedImageCHROMIUMImmediate should be 8");
static_assert(
offsetof(TexImage2DSharedImageCHROMIUMImmediate, header) == 0,
"offset of TexImage2DSharedImageCHROMIUMImmediate header should be 0");
static_assert(
offsetof(TexImage2DSharedImageCHROMIUMImmediate, texture) == 4,
"offset of TexImage2DSharedImageCHROMIUMImmediate texture should be 4");

struct CreateAndTexStorage2DSharedImageINTERNALImmediate {
typedef CreateAndTexStorage2DSharedImageINTERNALImmediate ValueType;
static const CommandId kCmdId =
Expand Down
33 changes: 0 additions & 33 deletions gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -5111,39 +5111,6 @@ TEST_F(GLES2FormatTest, MaxShaderCompilerThreadsKHR) {
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}

TEST_F(GLES2FormatTest, TexImage2DSharedImageCHROMIUMImmediate) {
const int kSomeBaseValueToTestWith = 51;
static GLbyte data[] = {
static_cast<GLbyte>(kSomeBaseValueToTestWith + 0),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 1),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 2),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 3),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 4),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 5),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 6),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 7),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 8),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 9),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 10),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 11),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 12),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 13),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 14),
static_cast<GLbyte>(kSomeBaseValueToTestWith + 15),
};
cmds::TexImage2DSharedImageCHROMIUMImmediate& cmd =
*GetBufferAs<cmds::TexImage2DSharedImageCHROMIUMImmediate>();
void* next_cmd = cmd.Set(&cmd, static_cast<GLuint>(11), data);
EXPECT_EQ(static_cast<uint32_t>(
cmds::TexImage2DSharedImageCHROMIUMImmediate::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)),
cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLuint>(11), cmd.texture);
CheckBytesWrittenMatchesExpectedSize(
next_cmd, sizeof(cmd) + RoundSizeToMultipleOfEntries(sizeof(data)));
}

TEST_F(GLES2FormatTest, CreateAndTexStorage2DSharedImageINTERNALImmediate) {
const int kSomeBaseValueToTestWith = 51;
static GLbyte data[] = {
Expand Down
69 changes: 34 additions & 35 deletions gpu/command_buffer/common/gles2_cmd_ids_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,41 +324,40 @@
OP(SetReadbackBufferShadowAllocationINTERNAL) /* 565 */ \
OP(FramebufferTextureMultiviewOVR) /* 566 */ \
OP(MaxShaderCompilerThreadsKHR) /* 567 */ \
OP(TexImage2DSharedImageCHROMIUMImmediate) /* 568 */ \
OP(CreateAndTexStorage2DSharedImageINTERNALImmediate) /* 569 */ \
OP(BeginSharedImageAccessDirectCHROMIUM) /* 570 */ \
OP(EndSharedImageAccessDirectCHROMIUM) /* 571 */ \
OP(ConvertRGBAToYUVAMailboxesINTERNALImmediate) /* 572 */ \
OP(ConvertYUVAMailboxesToRGBINTERNALImmediate) /* 573 */ \
OP(ConvertYUVAMailboxesToTextureINTERNALImmediate) /* 574 */ \
OP(CopySharedImageINTERNALImmediate) /* 575 */ \
OP(CopySharedImageToTextureINTERNALImmediate) /* 576 */ \
OP(ReadbackARGBImagePixelsINTERNAL) /* 577 */ \
OP(WritePixelsYUVINTERNAL) /* 578 */ \
OP(EnableiOES) /* 579 */ \
OP(DisableiOES) /* 580 */ \
OP(BlendEquationiOES) /* 581 */ \
OP(BlendEquationSeparateiOES) /* 582 */ \
OP(BlendFunciOES) /* 583 */ \
OP(BlendFuncSeparateiOES) /* 584 */ \
OP(ColorMaskiOES) /* 585 */ \
OP(IsEnablediOES) /* 586 */ \
OP(ProvokingVertexANGLE) /* 587 */ \
OP(FramebufferMemorylessPixelLocalStorageANGLE) /* 588 */ \
OP(FramebufferTexturePixelLocalStorageANGLE) /* 589 */ \
OP(FramebufferPixelLocalClearValuefvANGLEImmediate) /* 590 */ \
OP(FramebufferPixelLocalClearValueivANGLEImmediate) /* 591 */ \
OP(FramebufferPixelLocalClearValueuivANGLEImmediate) /* 592 */ \
OP(BeginPixelLocalStorageANGLEImmediate) /* 593 */ \
OP(EndPixelLocalStorageANGLEImmediate) /* 594 */ \
OP(PixelLocalStorageBarrierANGLE) /* 595 */ \
OP(FramebufferPixelLocalStorageInterruptANGLE) /* 596 */ \
OP(FramebufferPixelLocalStorageRestoreANGLE) /* 597 */ \
OP(GetFramebufferPixelLocalStorageParameterfvANGLE) /* 598 */ \
OP(GetFramebufferPixelLocalStorageParameterivANGLE) /* 599 */ \
OP(ClipControlEXT) /* 600 */ \
OP(PolygonModeANGLE) /* 601 */ \
OP(PolygonOffsetClampEXT) /* 602 */
OP(CreateAndTexStorage2DSharedImageINTERNALImmediate) /* 568 */ \
OP(BeginSharedImageAccessDirectCHROMIUM) /* 569 */ \
OP(EndSharedImageAccessDirectCHROMIUM) /* 570 */ \
OP(ConvertRGBAToYUVAMailboxesINTERNALImmediate) /* 571 */ \
OP(ConvertYUVAMailboxesToRGBINTERNALImmediate) /* 572 */ \
OP(ConvertYUVAMailboxesToTextureINTERNALImmediate) /* 573 */ \
OP(CopySharedImageINTERNALImmediate) /* 574 */ \
OP(CopySharedImageToTextureINTERNALImmediate) /* 575 */ \
OP(ReadbackARGBImagePixelsINTERNAL) /* 576 */ \
OP(WritePixelsYUVINTERNAL) /* 577 */ \
OP(EnableiOES) /* 578 */ \
OP(DisableiOES) /* 579 */ \
OP(BlendEquationiOES) /* 580 */ \
OP(BlendEquationSeparateiOES) /* 581 */ \
OP(BlendFunciOES) /* 582 */ \
OP(BlendFuncSeparateiOES) /* 583 */ \
OP(ColorMaskiOES) /* 584 */ \
OP(IsEnablediOES) /* 585 */ \
OP(ProvokingVertexANGLE) /* 586 */ \
OP(FramebufferMemorylessPixelLocalStorageANGLE) /* 587 */ \
OP(FramebufferTexturePixelLocalStorageANGLE) /* 588 */ \
OP(FramebufferPixelLocalClearValuefvANGLEImmediate) /* 589 */ \
OP(FramebufferPixelLocalClearValueivANGLEImmediate) /* 590 */ \
OP(FramebufferPixelLocalClearValueuivANGLEImmediate) /* 591 */ \
OP(BeginPixelLocalStorageANGLEImmediate) /* 592 */ \
OP(EndPixelLocalStorageANGLEImmediate) /* 593 */ \
OP(PixelLocalStorageBarrierANGLE) /* 594 */ \
OP(FramebufferPixelLocalStorageInterruptANGLE) /* 595 */ \
OP(FramebufferPixelLocalStorageRestoreANGLE) /* 596 */ \
OP(GetFramebufferPixelLocalStorageParameterfvANGLE) /* 597 */ \
OP(GetFramebufferPixelLocalStorageParameterivANGLE) /* 598 */ \
OP(ClipControlEXT) /* 599 */ \
OP(PolygonModeANGLE) /* 600 */ \
OP(PolygonOffsetClampEXT) /* 601 */

enum CommandId {
kOneBeforeStartPoint =
Expand Down
1 change: 0 additions & 1 deletion gpu/command_buffer/gles2_cmd_buffer_functions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,6 @@ GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum tar
GL_APICALL void GL_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);

// Extension CHROMIUM_shared_image
GL_APICALL void GL_APIENTRY glTexImage2DSharedImageCHROMIUM (GLuint texture, const GLbyte* mailbox);
GL_APICALL GLuint GL_APIENTRY glCreateAndTexStorage2DSharedImageCHROMIUM (const GLbyte* mailbox);
GL_APICALL void GL_APIENTRY glCreateAndTexStorage2DSharedImageINTERNAL (GLuint texture, const GLbyte* mailbox);
GL_APICALL void GL_APIENTRY glBeginSharedImageAccessDirectCHROMIUM (GLuint texture, GLenumSharedImageAccessMode mode);
Expand Down

0 comments on commit f81ec60

Please sign in to comment.