-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Kristian Høgsberg wrote:
> 2010/2/12 Ian Romanick <i...@freedesktop.org>:
> Kristian Høgsberg wrote:
>>>> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
>>>> index 0e6f69f..475aeab 100644
>>>> --- a/src/mesa/main/fbobject.c
>>>> +++ b/src/mesa/main/fbobject.c
>>>> @@ -1008,6 +1008,30 @@ renderbuffer_storage(GLenum target, GLenum 
>>>> internalFormat,
>>>>      */
>>>>  }
>>>>
>>>> +#if FEATURE_OES_EGL_image
>>>> +void GLAPIENTRY
>>>> +_mesa_EGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES 
>>>> image)
>>>> +{
>>>> +   GET_CURRENT_CONTEXT(ctx);
>>>> +   ASSERT_OUTSIDE_BEGIN_END(ctx);
>>>> +   struct gl_renderbuffer *rb;
>>>> +
>>>> +   if (target != GL_RENDERBUFFER_EXT) {
> New uses of these enums should use the undecorated versions.
> 
>> That means GL_RENDERBUFFER, right?

Yes.  Over the years, as things go into core GL, we start using the
non-extension names.  We don't typically go back and change the existing
occurances of the extension names.  That's generally in the same
category as whitespace cleanup.

>>>> +      _mesa_error(ctx, GL_INVALID_ENUM, 
>>>> "EGLImageTargetRenderbufferStorageOES");
>>>> +      return;
>>>> +   }
>>>> +
>>>> +   rb = ctx->CurrentRenderbuffer;
>>>> +   if (!rb) {
>>>> +      _mesa_error(ctx, GL_INVALID_OPERATION, 
>>>> "EGLImageTargetRenderbufferStorageOES");
>>>> +      return;
>>>> +   }
>>>> +
> Is there any sort of generic validation of the image that could be done
> here?  I suspect not, but I'd hate to see the same validation code
> duplicated in every driver.  Maybe that would better belong in a utility
> function in src/mesa/drivers/dri/common.  Hmm...
> 
>> I know what you're saying, but there isn't.  The EGLImage is an EGL
>> type and in our implementation it's a struct _egl_image,  but we don't
>> know anything about that here.  However, when the driver looks up the
>> EGLImage to get the __DRIimage, we do some basic validation in the
>> lookup function.  When the driver finally gets the __DRIimage in hand,
>> there isn't a lot of checking to do; it's just a struct intel_region.
>> I don't worry that this will lead to a lot of code duplication.

Okay.

>>>> +   FLUSH_VERTICES(ctx, _NEW_BUFFERS);
>>>> +
>>>> +   ctx->Driver.EGLImageTargetRenderbufferStorage(ctx, rb, image);
>>>> +}
>>>> +#endif
>>>>
>>>>  /**
>>>>   * Helper function for _mesa_GetRenderbufferParameterivEXT() and
>>>> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
>>>> index da3c6f9..6b15c40 100644
>>>> --- a/src/mesa/main/teximage.c
>>>> +++ b/src/mesa/main/teximage.c
>>>> @@ -2448,6 +2448,47 @@ _mesa_TexImage3DEXT( GLenum target, GLint level, 
>>>> GLenum internalFormat,
>>>>  }
>>>>
>>>>
>>>> +#if FEATURE_OES_EGL_image
>>>> +void GLAPIENTRY
>>>> +_mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
>>>> +{
>>>> +   GET_CURRENT_CONTEXT(ctx);
>>>> +   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
>>>> +   struct gl_texture_object *texObj;
>>>> +   struct gl_texture_image *texImage;
>>>> +
>>>> +   if (target != GL_TEXTURE_2D) {
>>>> +      _mesa_error(ctx, GL_INVALID_ENUM, "glCompressedTexImage1D(target)");
> That's probably the wrong error message. :)  Cut-and-paste for the lose.
> 
>> Oops, fiedx.
> 
>>>> +      return;
>>>> +   }
>>>> +
>>>> +   if (ctx->NewState & _MESA_NEW_TRANSFER_STATE)
>>>> +      _mesa_update_state(ctx);
>>>> +
>>>> +   texObj = _mesa_get_current_tex_object(ctx, target);
>>>> +   _mesa_lock_texture(ctx, texObj);
>>>> +
>>>> +   texImage = _mesa_get_tex_image(ctx, texObj, target, 0);
>>>> +   if (!texImage) {
>>>> +      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
> That's probably the wrong error message. :)  Cut-and-paste for the lose.
> 
>> Oops, fiedx.

lol.

>>>> +   } else {
>>>> +      if (texImage->Data)
>>>> +      ctx->Driver.FreeTexImageData( ctx, texImage );
>>>> +
>>>> +      ASSERT(texImage->Data == NULL);
>>>> +      //clear_teximage_fields(texImage); /* not really needed, but 
>>>> helpful */
>>>> +      ctx->Driver.EGLImageTargetTexture2D(ctx, target,
>>>> +                                       texObj, texImage, image);
>>>> +
>>>> +      /* state update */
>>>> +      texObj->_Complete = GL_FALSE;
>>>> +      ctx->NewState |= _NEW_TEXTURE;
>>>> +   }
>>>> +   _mesa_unlock_texture(ctx, texObj);
>>>> +
>>>> +}
>>>> +#endif
>>>> +
>>>>
>>>>  void GLAPIENTRY
>>>>  _mesa_TexSubImage1D( GLenum target, GLint level,

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkt9l6cACgkQX1gOwKyEAw+wQwCdGDLFH9WNw5rAAjqwzNo5S/PH
dTAAn1bbI/xNrW7sMiNbOVG/LM0//Wls
=w5df
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to