summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/texobj.c
diff options
context:
space:
mode:
authorPierre-Eric Pelloux-Prayer <[email protected]>2019-06-04 15:47:05 +0200
committerMarek Olšák <[email protected]>2019-06-28 15:41:32 -0400
commit29194648a6afc2cd681e3f5d1643ca49220b7975 (patch)
treec7ad1137fb7553ed27c882f0043edb596c3ad605 /src/mesa/main/texobj.c
parent274104ec381ebb1505e0e078959f94724b51ec58 (diff)
mesa: extend _mesa_lookup_or_create_texture to support EXT_dsa
Adds a boolean to implement EXT_dsa specifics. Reviewed-by: Marek Olšák <[email protected]> Signed-off-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/mesa/main/texobj.c')
-rw-r--r--src/mesa/main/texobj.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 6dbe56fa19c..5d49ce7924c 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -1705,12 +1705,28 @@ _mesa_bind_texture(struct gl_context *ctx, GLenum target,
struct gl_texture_object *
_mesa_lookup_or_create_texture(struct gl_context *ctx, GLenum target,
- GLuint texName, bool no_error,
+ GLuint texName, bool no_error, bool is_ext_dsa,
const char *caller)
{
struct gl_texture_object *newTexObj = NULL;
int targetIndex;
+ if (is_ext_dsa) {
+ if (_mesa_is_proxy_texture(target)) {
+ /* EXT_dsa allows proxy targets only when texName is 0 */
+ if (texName != 0) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(target = %s)", caller,
+ _mesa_enum_to_string(target));
+ return NULL;
+ }
+ return _mesa_get_current_tex_object(ctx, target);
+ }
+ if (GL_TEXTURE_CUBE_MAP_POSITIVE_X <= target &&
+ target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z) {
+ target = GL_TEXTURE_CUBE_MAP;
+ }
+ }
+
targetIndex = _mesa_tex_target_to_index(ctx, target);
if (!no_error && targetIndex < 0) {
_mesa_error(ctx, GL_INVALID_ENUM, "%s(target = %s)", caller,
@@ -1780,7 +1796,7 @@ bind_texture(struct gl_context *ctx, GLenum target, GLuint texName,
GLenum texunit, bool no_error, const char *caller)
{
struct gl_texture_object *newTexObj =
- _mesa_lookup_or_create_texture(ctx, target, texName, no_error,
+ _mesa_lookup_or_create_texture(ctx, target, texName, no_error, false,
"glBindTexture");
if (!newTexObj)
return;