All of lore.kernel.org
 help / color / mirror / Atom feed
From: SpliFF <spliff-nc9XehmSRdrhF+sknpXCvw@public.gmane.org>
To: Ian Romanick <idr-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org>
Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	radeonhd-stAJ6ESoqRxg9hUCZPvPmw@public.gmane.org,
	mesa3d-dev-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: Status of s3tc patent in respect to open-source drivers and workarounds
Date: Mon, 29 Mar 2010 19:20:20 +1100	[thread overview]
Message-ID: <4BB062C4.1030006@warriorhut.org> (raw)
In-Reply-To: <4BB04371.5020301-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org>

On 03/29/10 17:06, Ian Romanick wrote:
> SpliFF wrote:
> > So to clarify, you're saying a partial implementation (decoder only)
> > isn't an option at all? If you expose an extension it must be complete?
>
> See the documentation for glGetCompressedTexImage.

That does not appear to imply a run-time encoder. It seems to imply the
data is already compressed - which could (and really should) be done
prior to distribution (via the nvidia tools for example). The
documentation does quite clearly state that the application should
verify the texture really was compressed so you're only going to run
into issues when the programmer made assumptions about the supported
hardware. Not saying that's impossible, just that that's the
programmers' responsibility, not the drivers.

Runtime compression is actually performed by glTexImage2D with its
internalFormat set to a supported *_S3TC_* value, however the 2.1 spec says:

"If no corresponding internal format is available, or the GL can not
compress that image for any reason, the internal format is instead
replaced with a corresponding base internal format."

For S3TC textures that is:

GL_COMPRESSED_RGB_S3TC_DXT1_EXT  -> RGB
GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ->  RGBA
GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ->  RGBA
GL_COMPRESSED_RGBA_S3TC_DXT5_EXT ->  RGBA

So the spec specifically says you don't need runtime compression to be
compliant, you can fall back to uncompressed and hide the distinction
from the application (or expose it via glGetTexLevelParameteriv). Also,
for the purpose of mesa3d software rendering, why would you really want
to compress an image intended for system RAM? Chances are you'd lose
significantly on rendering performance. The way I see it the worst case
scenario is you use more memory than the developer intended but at least
you're displaying the textures. I know from experience that any normal
game rendered entirely without textures is basically unplayable.

So really, what I'd like clarification on is whether anyone knows of
potential non-infringing workarounds for the independent claims of the
s3tc decoding process only (claims 5, 16, 21 and 22 in the patent). The
rest (encoding) isn't as important as there are already free licensed
tools available for that part (not to mention existing compressed assets
to be rendered).

Finally, if anyone on the nouveau/radeonhd lists would prefer I stop
posting there please email me privately and I'll comply. If hardware
passthrough of s3tc textures is in fact supported by those drivers (and
the user has compatible hardware) then s3tc decoding is less relevant
for that purpose and the discussion is really only relevant to mesa3d
software rendering. I'm new to these lists and I didn't come here just
to make people upset. I don't know how much crossover exists between the
groups and who is getting three copies of these posts.

SpliFF

  parent reply	other threads:[~2010-03-29  8:20 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-28 11:47 Status of s3tc patent in respect to open-source drivers and workarounds SpliFF
     [not found] ` <4BAF41C0.5010201-nc9XehmSRdrhF+sknpXCvw@public.gmane.org>
2010-03-28 16:44   ` [Mesa3d-dev] " Luca Barbieri
2010-03-29  0:07   ` Corbin Simpson
     [not found]     ` <e7bd23c31003281707v4d8107a8ka4330ce69ba5b322-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-29  1:39       ` [radeonhd] " SpliFF
     [not found]         ` <4BB004EB.5080109-nc9XehmSRdrhF+sknpXCvw@public.gmane.org>
2010-03-29  4:34           ` Corbin Simpson
     [not found]             ` <e7bd23c31003282134o32a5ec11ua6c7814fd5f3a7f5-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-29  6:01               ` SpliFF
     [not found]                 ` <4BB04245.8020202-nc9XehmSRdrhF+sknpXCvw@public.gmane.org>
2010-03-29  6:06                   ` [Mesa3d-dev] " Ian Romanick
     [not found]                     ` <4BB04371.5020301-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org>
2010-03-29  8:20                       ` SpliFF [this message]
     [not found]                         ` <4BB062C4.1030006-nc9XehmSRdrhF+sknpXCvw@public.gmane.org>
2010-03-29 18:05                           ` Ian Romanick
2010-03-29  4:53           ` [radeonhd] Re: [Mesa3d-dev] " Stephane Marchesin
     [not found]             ` <6a89f9d51003282153l2c20b049s38d94c9691531efa-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-29  6:05               ` [Mesa3d-dev] [Nouveau] " Ian Romanick
     [not found]                 ` <4BB04324.2070206-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org>
2010-03-29  7:10                   ` Luca Barbieri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BB062C4.1030006@warriorhut.org \
    --to=spliff-nc9xehmsrdrhf+sknpxcvw@public.gmane.org \
    --cc=idr-CC+yJ3UmIYqDUpFQwHEjaQ@public.gmane.org \
    --cc=mesa3d-dev-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=radeonhd-stAJ6ESoqRxg9hUCZPvPmw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.