Re: [Mesa3d-dev] regression in r600g with a22aba4eae9b29db731487bce90e8292f7e82c72

2011-04-23 Thread Marek Olšák
On Sun, Apr 24, 2011 at 1:15 AM, Dave Airlie airl...@gmail.com wrote:

 Hi Brian,

 st/mesa: check image size before copy_image_data_to_texture()

 This causes a regression with NPOT textures in fbo-generate-mipmaps on
 r600g.


FWIW r300g and softpipe are broken too. The issue seems to be
driver-independent.

Marek
--
Fulfilling the Lean Software Promise
Lean software platforms are now widely adopted and the benefits have been 
demonstrated beyond question. Learn why your peers are replacing JEE 
containers with lightweight application servers - and what you can gain 
from the move. http://p.sf.net/sfu/vmware-sfemails___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [Mesa-dev] [PATCH 0/6] ARB_texture_float

2011-04-01 Thread Marek Olšák
There won't be any other way. It should be the Linux distributors' decision
whether their users can use it or not.

Marek

On Fri, Apr 1, 2011 at 5:14 PM, Philipp Klaus Krause p...@spth.de wrote:

 Am 01.04.2011 15:56, schrieb Marek Olšák:
  Hi,
 
  please read on.
 
  This patch series adds the last pieces of ARB_texture_float support
  to Mesa and Gallium.
 
  The thing is Mesa and Gallium more or less already support float
  textures and renderbuffers in master. Gallium has full floating-point
  support in the interface and if it was a public API, people could
  just expose it and not care. There is clearly a need for a configure
  switch which can hide float renderbuffers from any interface, public
  or private, and driver developers should use such a switch.

 Would there be a way to make this switch easier to flip by the user? As
 you state it this looks like a lot of work to users that want to have it
 enabled, at least when compared to the effort to get S3TC support.

 Philipp

--
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH 0/6] [RFC] Formalization of the Gallium shader semantics linkage model

2010-12-17 Thread Marek Olšák
On Fri, Dec 17, 2010 at 4:32 PM, Brian Paul bri...@vmware.com wrote:

 Christoph,

 I don't see a patch for the st/mesa program translation code to check
 that we don't exceed the limit.  Were you doing to take care of that too?

 I guess we're assuming that the max number of generic inputs == max
 number of generic outputs.  I think that's OK until a counter case
 appears.


The way I understand it is that the max number of generic outputs is equal
to the max number of generic inputs in the next shader stage (the same logic
applies to some other shader caps too). I guess we need to use get_param to
determine which shader stages are supported by the driver to know which one
is next. The name *PIPE_SHADER_CAP_MAX_GENERIC_INPUT_INDEX* would be less
ambiguous (still not perfect though).

However I don't believe in usefulness of this new cap, at least not without
some serious state tracker work. I don't consider failing to translate a
shader if some CAP is too low particularly useful.

(posting to mesa-dev as well)

Marek


 -Brian


 On 12/17/2010 05:28 AM, Keith Whitwell wrote:
  Christoph,
 
  This looks good.  Thanks for bringing this back to life.
 
  Keith
 
  On Thu, 2010-12-16 at 07:47 -0800, Christoph Bumiller wrote:
  On 12/14/2010 12:36 PM, Keith Whitwell wrote:
  On Mon, 2010-12-13 at 12:01 -0800, Christoph Bumiller wrote:
  I want to warm this up again adding nvc0 and
  GL_ARB_separate_shader_objects to the picture.
 
  The latter extends GL_EXT_separate_shader_objects to support user
  defined varyings and guarantees well defined behaviour only if
  - varyings are declared inside the gl_PerVertex/gl_PerFragment block
 the
  blocks match exactly in name, type, qualification, and (most
  significantly) declaration order.
  - varyings are assigned matching location qualifiers:
  like: layout(location = 3) in vec4 normal
  The number of input locations available to a shader is limited.
 
  So, I propose to (loosely) identify GENERIC semantic indices with
 these
  location qualifiers and let the pipe driver set a limit on the allowed
  maximum (e.g PIPE_SHADER_CAP_MAX_INPUTS, and not demand to at least
  support 219 of them - nvc0 offsers 0x200 bytes for generic
 inputs/outputs).
 
  This sounds fine actually.  We kicked this around before  I was
  basically ok with the last iteration of the proposal, but this seems ok
  too.
 
  As far as I can tell from a gallium perspective you're really just
  proposing a new pipe cap _MAX_INPUTS (actually _MAX_GENERIC_INDEX would
  be clearer), which the state tracker thereafter has to respect?
 
  That would be fine with me.
  First attempt at a patch introducing such a cap attached.
 
 
  My motivation is mostly that the hardware routing table for shader
  varyings that was present on nv50 has been removed with nvc0 (Fermi).
  And I'm glad, because filling 4 routing tables (since we have 5 shader
  types now) is somewhat annoying. And so applying relocations to
 shaders
  - it can be done, it's probably not too time consuming, but it's just
  plain *unnecessary* (and thus stupid) for OpenGL.
 
  Now about d3d9 ...
  1. don't care, I don't see a d3d9 state tracker
  2. http://msdn.microsoft.com/en-us/library/bb509647%28v=VS.85%29.aspx
  says n is an optional integer between 0 and the number of resources
  supported - what supported means here isn't clear to me, but, I
  didn't find any example where someone used something OpenGL doesn't
 have
  (like COLOR2).
  3.
 
 http://msdn.microsoft.com/en-us/library/bb944006%28v=vs.85%29.aspx#Varying_Shader_Inputs_and_Semantics
  says Input semantics are similar to the values in the D3DDECLUSAGE.
  and
  DECLUSAGE sounds like you're limited to sane values.
 
  I think you're on the right track with (1)...  It's fairly pointless
  trying to discuss code here which isn't public  I don't think people
  need to be worrying about what may or may not be important for code
 they
  can't see.
 
  I know this idea previously got tied up with speculation about what a
  DX9 state tracker might or might not require, but in retrospect I wish
  I'd been able to steer conversation away from that.
 
  The work on closed components may drive a lot of the feature
 development
  and new interfaces, but there's usually enough flexibility that this
  sort of cleanup isn't a big deal.
 
 
  Keith
 
  Not sure if anyone wants to think about this issue at this time (since
  implementation of ARB_separate_shader_objects is probably far in the
 GL4
  future), but I'd be happy about any comments.
 
  Regards,
  Christoph
 
  On 04/13/2010 12:55 PM, Luca Barbieri wrote:
  This patch series is intended to resolve the issue of semantic-based
 shader linkage in Gallium.
  It can also be found in the RFC-gallium-semantics branch.
 
  It does not change the current Gallium design, but rather formalizes
 some limitations to it, and provides infrastructure to implement this model
 more easily in drivers, along with a full nv30/nv40 implementation.
 
  

Re: [Mesa3d-dev] RFC: allow resource_copy_region between different (yet compatabile) formats

2010-09-06 Thread Marek Olšák
On Mon, Sep 6, 2010 at 3:57 PM, José Fonseca jfons...@vmware.com wrote:

 I'd like to know if there's any objection to change the
 resource_copy_region semantics to allow copies between different yet
 compatible formats, where the definition of compatible formats is:

  formats for which copying the bytes from the source resource
 unmodified to the destination resource will achieve the same effect of a
 textured quad blitter

 There is an helper function util_is_format_compatible() to help making
 this decision, and these are the non-trivial conversions that this
 function currently recognizes, (which was produced by
 u_format_compatible_test.c):

  b8g8r8a8_unorm - b8g8r8x8_unorm


This specific case (and others) might not work, because there are no 0/1
swizzles when blending pixels with the framebuffer, e.g. see this sequence
of operations:
- Blit from b8g8r8a8 to b8g8r8x8.
- x8 now contains a8.
- Bind b8g8r8x8 as a colorbuffer.
- Use blending with the destination alpha channel.
- The original a8 is read instead of 1 (x8) because of lack of swizzles.

The blitter and other util functions just need to be extended to explicitly
write 1 instead of copying the alpha channel. Something likes this is
already done in st/mesa, see the function compatible_src_dst_formats.

Marek

 a8r8g8b8_unorm - x8r8g8b8_unorm
  b5g5r5a1_unorm - b5g5r5x1_unorm
  b4g4r4a4_unorm - b4g4r4x4_unorm
  l8_unorm - r8_unorm
  i8_unorm - l8_unorm
  i8_unorm - a8_unorm
  i8_unorm - r8_unorm
  l16_unorm - r16_unorm
  z24_unorm_s8_uscaled - z24x8_unorm
  s8_uscaled_z24_unorm - x8z24_unorm
  r8g8b8a8_unorm - r8g8b8x8_unorm
  a8b8g8r8_srgb - x8b8g8r8_srgb
  b8g8r8a8_srgb - b8g8r8x8_srgb
  a8r8g8b8_srgb - x8r8g8b8_srgb
  a8b8g8r8_unorm - x8b8g8r8_unorm
  r10g10b10a2_uscaled - r10g10b10x2_uscaled
  r10sg10sb10sa2u_norm - r10g10b10x2_snorm

 Note that format compatibility is not commutative.

 For software drivers this means that memcpy/util_copy_rect() will
 achieve the correct result.

 For hardware drivers this means that a VRAM-VRAM 2D blit engine will
 also achieve the correct result.

 So I'd expect no implementation change of resource_copy_region() for any
 driver AFAICT. But I'd like to be sure.

 Jose



 --
 This SF.net Dev2Dev email is sponsored by:

 Show off your parallel programming skills.
 Enter the Intel(R) Threading Challenge 2010.
 http://p.sf.net/sfu/intel-thread-sfd
 ___
 Mesa3d-dev mailing list
 Mesa3d-dev@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


--
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] RFC: allow resource_copy_region between different (yet compatabile) formats

2010-09-06 Thread Marek Olšák
On Mon, Sep 6, 2010 at 9:57 PM, José Fonseca jfons...@vmware.com wrote:

 On Mon, 2010-09-06 at 10:22 -0700, Marek Olšák wrote:
  On Mon, Sep 6, 2010 at 3:57 PM, José Fonseca jfons...@vmware.com
  wrote:
  I'd like to know if there's any objection to change the
  resource_copy_region semantics to allow copies between
  different yet
  compatible formats, where the definition of compatible formats
  is:
 
   formats for which copying the bytes from the source resource
  unmodified to the destination resource will achieve the same
  effect of a
  textured quad blitter
 
  There is an helper function util_is_format_compatible() to
  help making
  this decision, and these are the non-trivial conversions that
  this
  function currently recognizes, (which was produced by
  u_format_compatible_test.c):
 
   b8g8r8a8_unorm - b8g8r8x8_unorm
 
  This specific case (and others) might not work, because there are no
  0/1 swizzles when blending pixels with the framebuffer, e.g. see this
  sequence of operations:
  - Blit from b8g8r8a8 to b8g8r8x8.
  - x8 now contains a8.
  - Bind b8g8r8x8 as a colorbuffer.
  - Use blending with the destination alpha channel.
  - The original a8 is read instead of 1 (x8) because of lack of
  swizzles.

 This is not correct. Or at least not my interpretation.

 The x in b8g8r8x8 means padding (potentially with with unitialized
 data). There is no implicit guarantee that it will contain 0xff or
 anything.

 When blending to b8g8r8x8, destination alpha is by definition 1.0. It is
 an implicit swizzle (see e.g., u_format.csv).

 If the hardware's fixed function blending doesn't understand bgrx
 formats natively, then the pipe driver should internally replace the
 destination alpha factor factor with one. It's really simple. See for


The dst blending parameter is just a factor the real dst value is multiplied
by (except for min/max). There is no way to multiply an arbitrary value by a
constant and get 1.0. But you can force 0, of course. I don't think there is
hardware which supports such flexible swizzling in the blender. If x8 is
just padding as you say, the value of it should be undefined and every
operation using the padding bits should be undefined too except for texture
sampling. It's not like I have any other choice.

Marek
--
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] _mesa_init_texture_s3tc() vs util_format_s3tc_init()

2010-05-03 Thread Marek Olšák
On Mon, May 3, 2010 at 1:57 PM, José Fonseca jfons...@vmware.com wrote:

 On Mon, 2010-05-03 at 01:36 -0700, Xavier Chantry wrote:
  I am trying to understand the s3tc init code as nv50 gallium has a
  problem with that.
 
  It looks like some drivers (r300g and llvmpipe) actually inits s3tc in
  two places :
  ./src/mesa/main/texcompress_s3tc.c _mesa_init_texture_s3tc()
  ./src/gallium/auxiliary/util/u_format_s3tc.c util_format_s3tc_init()
 
  Here is an extract of the backtrace calls while loading fgfs on llvmpipe
 :
  driCreateScreen - llvmpipe_create_screen - util_format_s3tc_init
  driCreateContext - st_create_context - _mesa_create_context_for_api
  - init_attrib_groups - _mesa_init_texture_s3tc
 
  These two functions seem to do more or less the same job, and
  apparently, the classic mesa init is unused for a gallium driver.
  So I suppose that init is not necessary, but it happens because
  gallium and mesa are tightly tied together, and create context is
  handled similarly, but it shouldn't hurt ?

 Both inits are necessary. The same .so is used for both paths, but given
 that gallium and mesa do not depend on each other that's the way to do
 it. Gallium and mesa also have seperate format translation functions.

 At least until we start factoring code into a separate library. (I said
 I'd do it, but stuff came up and I couldn't do when I thought, and I
 don't know when I'll be able to do it...)

  Additionally r300g and llvmpipe added util_format_s3tc_init to their
  create_screen functions, and util/u_format_s3tc.c apparently contains
  all the functions that a gallium driver uses.
  So I suppose that nvfx and nv50 should do the same ?
 
  If that's correct, the patch below might not be completely wrong.
 
  On Mon, May 3, 2010 at 12:44 AM, Xavier Chantry
  chantry.xav...@gmail.com wrote:
   flightgear now dies with :
   Mesa warning: external dxt library not available: texstore_rgba_dxt3
   util/u_format_s3tc.c:66:util_format_dxt3_rgba_fetch_stub: Assertion `0'
 failed.
  
   I don't really understand what these stubs are about, they were
   introduced by following commit :
   commit d96e87c3c513f8ed350ae24425edb74b6d6fcc13
   Author: José Fonseca jfons...@vmware.com
   Date:   Wed Apr 7 20:47:38 2010 +0100
  
  util: Use stubs for the dynamically loaded S3TC functions.
  
  Loosely based on Luca Barbieri's commit
  52e9b990a192a9329006d5f7dd2ac222effea5a5.
  
   Looking at llvm and r300 code and trying to guess, I came up with the
   following patch that allows flightgear to start again. But I don't
   really understand that stuff so it could be wrong.
   nvfx is probably affected as well.
  
  
   diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c
   b/src/gallium/drivers/nouveau/nouveau_screen.c
   index 233a91a..a91b00b 100644
   --- a/src/gallium/drivers/nouveau/nouveau_screen.c
   +++ b/src/gallium/drivers/nouveau/nouveau_screen.c
   @@ -5,6 +5,7 @@
#include util/u_memory.h
#include util/u_inlines.h
#include util/u_format.h
   +#include util/u_format_s3tc.h
  
#include stdio.h
#include errno.h
   @@ -248,6 +249,8 @@ nouveau_screen_init(struct nouveau_screen *screen,
   struct nouveau_device *dev)
  pscreen-fence_signalled = nouveau_screen_fence_signalled;
  pscreen-fence_finish = nouveau_screen_fence_finish;
  
   +   util_format_s3tc_init();
   +
  return 0;
}
  
   diff --git a/src/gallium/drivers/nv50/nv50_screen.c
   b/src/gallium/drivers/nv50/nv50_screen.c
   index 2dd1042..0d74c90 100644
   --- a/src/gallium/drivers/nv50/nv50_screen.c
   +++ b/src/gallium/drivers/nv50/nv50_screen.c
   @@ -20,6 +20,7 @@
* SOFTWARE.
*/
  
   +#include util/u_format_s3tc.h
#include pipe/p_screen.h
  
#include nv50_context.h
   @@ -72,10 +73,6 @@ nv50_screen_is_format_supported(struct pipe_screen
 *pscreen,
  case PIPE_FORMAT_A8_UNORM:
  case PIPE_FORMAT_I8_UNORM:
  case PIPE_FORMAT_L8A8_UNORM:
   -   case PIPE_FORMAT_DXT1_RGB:
   -   case PIPE_FORMAT_DXT1_RGBA:
   -   case PIPE_FORMAT_DXT3_RGBA:
   -   case PIPE_FORMAT_DXT5_RGBA:
  case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
  case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
  case PIPE_FORMAT_Z32_FLOAT:
   @@ -85,6 +82,11 @@ nv50_screen_is_format_supported(struct pipe_screen
 *pscreen,
  case PIPE_FORMAT_R16G16_SNORM:
  case PIPE_FORMAT_R16G16_UNORM:
  return TRUE;
   +   case PIPE_FORMAT_DXT1_RGB:
   +   case PIPE_FORMAT_DXT1_RGBA:
   +   case PIPE_FORMAT_DXT3_RGBA:
   +   case PIPE_FORMAT_DXT5_RGBA:
   +   return util_format_s3tc_enabled;
  default:
  break;
  }
  

 You should only advertise PIPE_FORMAT_DXT* for BIND_SAMPLER_VIEW, or you
 may end up in very 

Re: [Mesa3d-dev] mesa commit e648d4a1d1c0c5f70916e38366b863f0bec79a62 st/mesa: ignore gl_texture_object::BaseLevel when allocating gallium textures

2010-05-02 Thread Marek Olšák
On Sat, May 1, 2010 at 11:31 PM, Maxim Levitsky maximlevit...@gmail.comwrote:

 This commit breaks compiz completely here on nvidia G50 (Geforce 8400M)
 Compiz shows dark screen.
 (Using nouveau drivers)

 Without this commit compiz works almost perfectly.

 The error messages from compiz:


 debug_get_bool_option: NV50_ALWAYS_PUSH = FALSE
 debug_get_bool_option: DRAW_FSE = FALSE
 debug_get_bool_option: DRAW_NO_FSE = FALSE
 debug_get_bool_option: GALLIUM_DUMP_VS = FALSE
 Mesa: Mesa 7.9-devel DEBUG build May  1 2010 19:02:06
 Mesa warning: software DXTn compression/decompression available
 debug_get_bool_option: MESA_MVP_DP4 = FALSE
 debug_get_flags_option: ST_DEBUG = 0x0
 Mesa: User error: GL_OUT_OF_MEMORY in glTexImage
 compiz (cube) - Warn: Failed to load
 slide: /usr/share/gdm/themes/Human/ubuntu.png
 ^CMesa: User error: GL_OUT_OF_MEMORY in glTexImage


The commit also causes surface_copy to be called with S3TC textures,
breaking loading of such textures in r300g. I am working on a fix for r300g
but I haven't expected to get such weird formats in surface_copy.

FYI Maxim, please use mesa-...@lists.freedesktop.org instead.

-Marek
--
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] gallium-resources branch merge

2010-04-08 Thread Marek Olšák
On Thu, Apr 8, 2010 at 3:54 PM, Keith Whitwell kei...@vmware.com wrote:

 OK, it seems like quite a few cases had migrated to the new
 buffer_map_range() behaviour.  I've looked at all I can find and moved
 them back to the old behaviour.

 glean is passing now on softpipe.


There's now an assertion failure in pipe_buffer_flush_mapped_range. Given a
mapped range, the current behavior in debug build doesn't allow to flush its
subrange if it doesn't touch the last byte of the range. The attached patch
fixes that and changes u_uploadmgr for the mapped and flushed ranges to
match. Please review.

Other than that, it's stable as master. Thank you very much.

-Marek
From d351a37e320dcb027c43311dc620d44fdffa0a6d Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sat, 3 Apr 2010 07:58:34 +0200
Subject: [PATCH] util: fix assertion failures in pipe_buffer_flush_mapped_range

---
 src/gallium/auxiliary/util/u_inlines.h|2 +-
 src/gallium/auxiliary/util/u_upload_mgr.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_inlines.h b/src/gallium/auxiliary/util/u_inlines.h
index b1f2285..f9cd4e1 100644
--- a/src/gallium/auxiliary/util/u_inlines.h
+++ b/src/gallium/auxiliary/util/u_inlines.h
@@ -223,7 +223,7 @@ pipe_buffer_flush_mapped_range(struct pipe_context *pipe,
 
assert(length);
assert(transfer-box.x = offset);
-   assert(transfer-box.x + transfer-box.width = offset + length);
+   assert(offset + length = transfer-box.x + transfer-box.width);
 
/* Match old screen-buffer_flush_mapped_range() behaviour, where
 * offset parameter is relative to the start of the buffer, not the
diff --git a/src/gallium/auxiliary/util/u_upload_mgr.c b/src/gallium/auxiliary/util/u_upload_mgr.c
index f8c3954..75d4443 100644
--- a/src/gallium/auxiliary/util/u_upload_mgr.c
+++ b/src/gallium/auxiliary/util/u_upload_mgr.c
@@ -95,7 +95,7 @@ my_buffer_write(struct pipe_context *pipe,
assert(dirty_size = size);
assert(size);
 
-   map = pipe_buffer_map_range(pipe, buf, offset, size, 
+   map = pipe_buffer_map_range(pipe, buf, offset, dirty_size,
PIPE_TRANSFER_WRITE |
PIPE_TRANSFER_FLUSH_EXPLICIT |
PIPE_TRANSFER_DISCARD |
-- 
1.6.3.3

--
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


Re: [Mesa3d-dev] gallium-resources branch merge

2010-04-07 Thread Marek Olšák
On Wed, Apr 7, 2010 at 7:01 PM, Keith Whitwell kei...@vmware.com wrote:

 On Tue, 2010-04-06 at 03:28 -0700, Keith Whitwell wrote:
  On Fri, 2010-04-02 at 23:23 -0700, Marek Olšák wrote:
   There's something fishy in u_upload_mgr, could you please review the
   first two patches here?
   http://cgit.freedesktop.org/~mareko/mesa/log/?h=gallium-resourceshttp://cgit.freedesktop.org/%7Emareko/mesa/log/?h=gallium-resources
  
   With this, r300g works again.
 
  Hmm, I think the second of the patches (flush range relative to mapped
  range vs whole buffer) may be addressing a regression that has creeped
  into the -resources branch regarding this behaviour - ie. I think the
  code you modified was actually correct, but that
  pipe_flush_mapped_buffer_range() has changed to do the wrong thing.
 
  I'll try and figure out what should be happening.

 I've pushed a change which hopefully corrects the behaviour of the
 buffer_range inlines.  Can you give it a try?


Now glean/bufferObject fails on softpipe and r300g. I haven't tested other
drivers.

-Marek
--
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


[Mesa3d-dev] Gallium: ARB_half_float_vertex

2010-04-04 Thread Marek Olšák
Hi devs,

I (and Luca mostly) have made some simple patches which add
GL_ARB_half_float_vertex to Gallium.

Author: Marek Olšák mar...@gmail.com
r300g: enable half float vertex
st/mesa: query for half float vertex support

Author: Luca Barbieri l...@luca-barbieri.com
st/mesa: half float vertex support

Please review the commits here:
http://cgit.freedesktop.org/~mareko/mesa/log/?h=half-float-vertexhttp://cgit.freedesktop.org/%7Emareko/mesa/log/?h=half-float-vertex

Please let me know whether I may push this.

Cheers

-Marek
--
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


Re: [Mesa3d-dev] Gallium: ARB_half_float_vertex

2010-04-04 Thread Marek Olšák
On Sun, Apr 4, 2010 at 9:41 PM, Luca Barbieri luca.barbi...@gmail.comwrote:

 There was some talk about doing the query with a vertex buffer target
 for is_format_supported.


Does it mean there will be format fallbacks? Because dword-unaligned but
still pretty common (i.e. GL1.1) vertex formats aren't supported by r300,
most often we hit R16G16B16. What will happen when is_format_supported says
NO to such a format? I hope it won't share the fate of PIPE_CAP_SM3, which
every in-tree state tracker ignores.

-Marek
--
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


Re: [Mesa3d-dev] Gallium: ARB_half_float_vertex

2010-04-04 Thread Marek Olšák
On Sun, Apr 4, 2010 at 10:28 PM, Luca Barbieri luca.barbi...@gmail.comwrote:

  Does it mean there will be format fallbacks? Because dword-unaligned but
  still pretty common (i.e. GL1.1) vertex formats aren't supported by r300,
  most often we hit R16G16B16. What will happen when is_format_supported
 says
  NO to such a format? I hope it won't share the fate of PIPE_CAP_SM3,
 which
  every in-tree state tracker ignores.

 I'm not sure I understand correctly what you are saying.

 The idea is to do like you did in your patch, but instead of calling
 screen-get_param(screen, PIPE_CAP_HALF_FLOAT_VERTEX), calling
 screen-is_format_supported(screen, PIPE_FORMAT_R16G16B16G16,
 PIPE_BUFFER, ..., ...).

 The PIPE_BUFFER target is supported in gallium-resources, but I'm not
 sure whether this way of querying vertex formats is supported; it
 would probably need to be added first.

 If you mean that r300 doesn't support R16G16B16, I suppose you can
 just use R16G16B16A16 and ignore the extra fetched w element (the
 vertex buffer stride will make this work properly).


I've tried to do it this way, it locks up (unless I am missing something).

However, if non-dword-aligned vertex buffer strides or vertex element
 offsets are not supported, I think you have a serious problem, which
 is however independent of half float vertices since I don't think
 OpenGL places any alignment constraints on those values (correct me if
 I'm wrong).


You're right.

-Marek
--
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


[Mesa3d-dev] Gallium: EXT_gpu_program_parameters

2010-04-04 Thread Marek Olšák
Hi devs,

this extensions is extensively used in Wine for obvious performance reasons
and is quite popular in the GL community, therefore we should advertise it.
All needed code seems to be already in mesa/main, so unless I overlooked
something, the patch below is sufficient. Any comments, please?

-Marek

diff --git a/src/mesa/state_tracker/st_extensions.c
b/src/mesa/state_tracker/st_extensions.c
index 0118c60..ae5e62b 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -183,6 +183,7 @@ void st_init_extensions(struct st_context *st)
ctx-Extensions.EXT_framebuffer_object = GL_TRUE;
ctx-Extensions.EXT_framebuffer_multisample = GL_TRUE;
ctx-Extensions.EXT_fog_coord = GL_TRUE;
+   ctx-Extensions.EXT_gpu_program_parameters = GL_TRUE;
ctx-Extensions.EXT_multi_draw_arrays = GL_TRUE;
ctx-Extensions.EXT_pixel_buffer_object = GL_TRUE;
ctx-Extensions.EXT_point_parameters = GL_TRUE;
--
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


Re: [Mesa3d-dev] gallium-resources branch merge

2010-04-03 Thread Marek Olšák
There's something fishy in u_upload_mgr, could you please review the first
two patches here?
http://cgit.freedesktop.org/~mareko/mesa/log/?h=gallium-resources

With this, r300g works again.

-Marek

On Fri, Apr 2, 2010 at 4:17 PM, Roland Scheidegger srol...@vmware.comwrote:

 I'm planning on merging the gallium-resources branch shortly (after
 easter). Due to the amount of code changed, it wouldn't be unexpected if
 some drivers break here and there. So it would be nice if the respective
 driver authors could take a look at that branch now.

 If you've missed the discussion about this branch and what this is
 about, here it is:

 http://www.mail-archive.com/mesa3d-dev@lists.sourceforge.net/msg12726.html

 I've also removed the video interfaces completely, as they weren't
 ported to the interface changes and actually some of the video code
 missed some earlier interface changes so didn't build anyway. Video
 related work should be done on pipe-video branch which had newer stuff
 (for video) already.


 Roland


 --
 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

--
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


Re: [Mesa3d-dev] RFC: GSOC Proposal: R300/Gallium GLSL Compiler

2010-04-03 Thread Marek Olšák
On Sun, Apr 4, 2010 at 12:10 AM, Zack Rusin za...@vmware.com wrote:

 I thought the initial proposal was likely a lot more feasible for a GSOC
 (of
 course there one has to point out that Mesa's GLSL compiler already does
 unroll loops and in general simplifies control-flow so the points #1 and #2
 are
 largely no-ops, but surely there's enough work on Gallium Radeon's drivers
 left to keep Tom busy). Otherwise having a well-defined and reduced scope
 with
 clear deliverables would be rather necessary for LLVM-TGSI code because
 that
 is not something that you could get rock solid over a summer.


It doesn't seem to simplify branches or unroll loops that much, if at all.
It fails even for the simplest cases like this one:

if (gl_Vertex.x  30.0)
gl_FrontColor = vec4(1.0, 0.0, 0.0, 0.0);
else
gl_FrontColor = vec4(0.0, 1.0, 0.0, 0.0);

This gets translated to TGSI as is, which is fairly... you know what.

-Marek
--
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


Re: [Mesa3d-dev] RFC: GSOC Proposal: R300/Gallium GLSL Compiler

2010-04-03 Thread Marek Olšák
On Sat, Apr 3, 2010 at 9:31 AM, Tom Stellard tstel...@gmail.com wrote:

 1. Enable branch emulation for Gallium drivers:
 The goal of this task will be to create an optional optimization pass
 over the TGSI code to translate branch instructions into instructions
 that are supported by cards without hardware branching.  The basic
 strategy for doing this translation will be:

 A. Copy values of in scope variables
 to a temporary location before executing the conditional statement.

 B. Execute the if true branch.

 C. Test the conditional expression.  If it evaluates to false, rollback
 all values that were modified in the if true branch.

 D. Repeat step 2 with the if false branch, and then step 3, but this
 time only rollback if the conditional expression evaluates to true.

 The TGSI instructions SLT, SNE, SGE, SEQ will be used to test the
 conditional expression and the instruction CND will be used to rollback
 the values.

 There will be two phases to this task.  For phase 1, I will implement a
 simple translator that will be able to translate the branch instructions
 with only one pass through the TGSI code.  This simple translator will
 copy all in scope variables to a temporary location before executing the
 conditional statement, even if those variables will not not be modified
 in either of the branches.

 Phase 2 will add a preliminary pass before to the code translation
 pass that will mark variables that might be modified by the conditional
 statement.  Then, during the translation pass, only the variables that
 could potentially be modified inside either of the conditional branches
 will be copied before the conditional statement is executed.


First I really appreciate you're looking into this. I'd like to propose
something doable in GSoC timeframe.

Since Nicolai has already implemented the branch emulation and some other
optimizations, it would be nice to take over his work. I tried to use the
branch emulation on vertex shaders and it did not work correctly, I guess it
needs little fixing. See this branch in his repo:
http://cgit.freedesktop.org/~nh/mesa/log/?h=r300g-glslhttp://cgit.freedesktop.org/%7Enh/mesa/log/?h=r300g-glsl
Especially this commit implements exactly what you propose (see comments in
the code):
http://cgit.freedesktop.org/~nh/mesa/commit/?h=r300g-glslid=71c8d4c745da23b0d4f3974353b19fad89818d7fhttp://cgit.freedesktop.org/%7Enh/mesa/commit/?h=r300g-glslid=71c8d4c745da23b0d4f3974353b19fad89818d7f

Reusing this code for Gallium seems more reasonable to me than reinventing
the wheel and doing basically the same thing elsewhere. I recommend
implementing a TGSI backend in the r300 compiler, which will make possible
using it with TGSI shaders. So basically a TGSI shader would be converted to
the RC representation the way it's done in r300g right now, and code for
converting RC - hw code would get replaced by conversion RC - TGSI. Both
RC and TGSI are very similar so it'll be pretty straightforward. With a TGSI
backend, another step would be to make a nice hw-independent and
configurable interface on top of it which should go to util. So far it's
simple, now comes some real work: fixing the branch emulation and continuing
from (2) in your list.

Then it'll be up to developers of other drivers whether they want to
implement their own hw-specific optimization passes and lowering
transformations. Even linking various shaders would be much easier done with
the compiler (and more efficient with its elimination of dead-code due to
removed shader outputs/inputs), this is used in classic r300 and I recall
Luca wanted such a feature in nouveau drivers. There is also an emulation of
shadow samplers, WPOS, and an emulation of various instructions, so this is
a nice and handy tool. (I would do it but I have a lot of more important
stuff to do.)

This may really help Gallium drivers until a real optimization framework
emerges.

-Marek
--
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


Re: [Mesa3d-dev] RFC: GSOC Proposal: R300/Gallium GLSL Compiler

2010-04-03 Thread Marek Olšák
On Sun, Apr 4, 2010 at 1:07 AM, Luca Barbieri luca.barbi...@gmail.comwrote:

 So basically the r300 optimization work looks doomed from the
 beginning to be eventually obsoleted.


Please consider there are hw-specific optimizations in place which I think
no other compiler framework provides, and I believe this SSA thing will do
even better job for superscalar r600. So yes, we need both LLVM to do global
optimizations and RC to efficiently map code to hw.

-Marek
--
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


Re: [Mesa3d-dev] RFC: GSOC Proposal: R300/Gallium GLSL Compiler

2010-04-03 Thread Marek Olšák
On Sun, Apr 4, 2010 at 6:14 AM, Tom Stellard tstel...@gmail.com wrote:

 On Sun, Apr 04, 2010 at 01:09:51AM +0200, Marek Olšák wrote:
 
  Since Nicolai has already implemented the branch emulation and some other
  optimizations, it would be nice to take over his work. I tried to use the
  branch emulation on vertex shaders and it did not work correctly, I guess
 it
  needs little fixing. See this branch in his repo:
  http://cgit.freedesktop.org/~nh/mesa/log/?h=r300g-glslhttp://cgit.freedesktop.org/%7Enh/mesa/log/?h=r300g-glsl
 http://cgit.freedesktop.org/%7Enh/mesa/log/?h=r300g-glsl
  Especially this commit implements exactly what you propose (see comments
 in
  the code):
 
 http://cgit.freedesktop.org/~nh/mesa/commit/?h=r300g-glslid=71c8d4c745da23b0d4f3974353b19fad89818d7fhttp://cgit.freedesktop.org/%7Enh/mesa/commit/?h=r300g-glslid=71c8d4c745da23b0d4f3974353b19fad89818d7f
 
 http://cgit.freedesktop.org/%7Enh/mesa/commit/?h=r300g-glslid=71c8d4c745da23b0d4f3974353b19fad89818d7f
 
 
  Reusing this code for Gallium seems more reasonable to me than
 reinventing
  the wheel and doing basically the same thing elsewhere. I recommend
  implementing a TGSI backend in the r300 compiler, which will make
 possible
  using it with TGSI shaders. So basically a TGSI shader would be converted
 to
  the RC representation the way it's done in r300g right now, and code for
  converting RC - hw code would get replaced by conversion RC - TGSI.
 Both
  RC and TGSI are very similar so it'll be pretty straightforward. With a
 TGSI
  backend, another step would be to make a nice hw-independent and
  configurable interface on top of it which should go to util. So far it's
  simple, now comes some real work: fixing the branch emulation and
 continuing
  from (2) in your list.

 I am not sure if I follow you here, so let me know if I am understanding
 this correctly.  What you are suggesting is to take Nicolai's branch,
 which right now does TGSI - RC - Branch Emulation in RC - hw code and
 instead of converting from RC to hw code convert from RC back into TGSI.


That's right.


 Then, pull the TGSI - RC - Branch Emulation in RC - TGSI path out of
 the r300 compiler and place it in gallium/auxillary/util so it can be used
 by other Gallium drivers that want to emulate branches.  Is this correct?


Sorry I should have been more clear. The whole RC may stay in
src/mesa/drivers/dri/r300/compiler as it is now.

I think these are parts that should go to util:
- TGSI - RC conversion
- RC - TGSI conversion
- Hw-independent interface to the compiler, i.e. one function (or more)
which takes a TGSI shader and returns a TGSI shader. It should do both
conversions above and use r300/compiler directly.

In the long-term, the compiler should probably be moved to src/compiler or
something like that (since both classic and gallium drivers may use it), but
you don't need to care about that if you don't want to.

-Marek
--
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


Re: [Mesa3d-dev] GSOC: Gallium R300 driver

2010-03-30 Thread Marek Olšák
On Tue, Mar 30, 2010 at 7:09 AM, Tom Stellard tstel...@gmail.com wrote:

 On Sat, Mar 27, 2010 at 02:11:54AM +0100, Marek Olšák wrote:
 
  From the driver point of view, we don't have to work on the GLSL compiler
  itself. The Mesa state tracker compiles GLSL to an assembler-like
 language
  called TGSI which is then translated ([1]) to the R300 compiler ([2])
 shader
  representation. The more TGSI we handle, the more GLSL support we get.
 

 Is adding support for the TGSI opcodes that are currently ignored by
 r300_tgsi_to_rc.c something that needs to be done?  If so, are there
 some opcodes you would prefer to see done first?


One of the goals might be to pass all relevant piglit tests including
glean/glsl1 which exercises various opcodes but it's not so important and
I'd be surprised if you would make it in your timeframe. You may use it for
testing though.


  So now the status. r300g GLSL is missing the following features:
 
  1) Branching and looping
 
  This is the most important one and there are 3 things which need to be
 done.
  * Unrolling loops and converting conditionals to multiplications. This is
  crucial for R3xx-R4xx GLSL support. I don't say it will work in all cases
  but should be fine for the most common ones. This is kind of a standard
 in
  all proprietary drivers supporting shaders 2.0. It would be nice have it
  work with pure TGSI shaders so that drivers like nvfx can reuse it too
 and I
  personally prefer to have this feature first before going on.

 Would you be able to provide a small example of how to convert the
 conditionals to multiplications?  I understand the basic idea is to mask
 values based on the result of the conditional, but it would help me to see
 an example.  On IRC, eosie mentioned an alternate technique for emulating
 conditionals: Save the values of variables that might be affected by
 the conditional statement.  Then, after executing both the if and the else
 branches, roll back the variables that were affected by the branch that
 was not supposed to be taken. Would this technique work as well?


Well, I am eosie, thanks for the info, it's always cool to be reminded what
I've written on IRC. ;)

Another idea was to convert TGSI to a SSA form. That would make unrolling
branches much easier as the Phi function would basically become a linear
interpolation, loops and subroutines with conditional return statements
might be trickier. The r300 compiler already uses SSA for its optimization
passes so maybe you wouldn't need to mess with TGSI that much...


 Is the conditional translation something that only needs to be done
 in the Gallium drivers, or would it be useful to apply the translation
 before the Mesa IR is converted into TGSI?  Are any of the other drivers
 (Gallium or Mesa) currently doing this kind of translation?


Not that I know of. You may do it wherever you want theoretically, even in
the r300 compiler and leaving TGSI untouched, but I think most people would
appreciate if these translation were done in TGSI.


  * Teaching the R300 compiler loops and conditionals for R500 fragment
  shaders. Note that R500 supports the jump instruction so besides adding
 new
  opcodes, the compiler optimization passes should be updated too (I think
  they haven't been designed with loops in mind).
  * The same but for R500 vertex shaders. The difference is conditionals
 must
  be implemented using predication opcodes and predication writes (stuff
 gets
  masked out). I think this only affects the conversion to machine code at
 the
  end of the pipeline.
 
  2) Derivatives instructions fix
 
  It's implemented but broken. From docs: If src0 is computed in the
 previous
  instruction, then a NOP needs to be inserted between the two
 instructions.
  Do this by setting the NOP flag in the previous instruction. This is not
  required if the previous instruction is a texture lookup. .. and that
  should be the fix.

 Is the only problem here that NOP is being inserted after texture
 lookups when it shouldn't be?


Well the derivatives don't work and NOP is not being inserted anywhere. The
quoted statement from the docs was supposed to give you a clue. NOP after a
texture lookup is *not required*, that means it would be just silly to put
it there but it shouldn't break anything.

-Marek
--
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


Re: [Mesa3d-dev] GSOC: Gallium R300 driver

2010-03-30 Thread Marek Olšák
On Tue, Mar 30, 2010 at 10:26 AM, Nicolai Haehnle nhaeh...@gmail.comwrote:

 On Tue, Mar 30, 2010 at 8:13 AM, Marek Olšák mar...@gmail.com wrote:
  Another idea was to convert TGSI to a SSA form. That would make unrolling
  branches much easier as the Phi function would basically become a linear
  interpolation, loops and subroutines with conditional return statements
  might be trickier. The r300 compiler already uses SSA for its
 optimization
  passes so maybe you wouldn't need to mess with TGSI that much...

 Note that my Git repository already contains an implementation of
 branch emulation and some additional optimizations, see here:
 http://cgit.freedesktop.org/~nh/mesa/log/?h=r300g-glslhttp://cgit.freedesktop.org/%7Enh/mesa/log/?h=r300g-glsl

 Shame on me for abandoning it - I should really get around to make
 sure it fits in with recent changes and merge it to master. The main
 problem is that it produces somewhat inefficient code. Adding and
 improving peephole and similar optimizations should help tremendously.


Well it's either this or nothing so I guess I am not the only one to prefer
to get it merged. ;) However that kinda slightly changes Tom's plan for the
GSoC project.

On a different note, considering that the r300 compiler has basically 2
frontends (Mesa IR and TGSI) and 3 backends (r300 VS  FS, r500 FS), would
it be feasible to add yet another backend - TGSI? That would turn the
compiler into a generic Gallium shader optimizer with the lowering tools it
already has (or will have) and more people would be interested in adding new
features and improvements in it.

-Marek
--
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


[Mesa3d-dev] [PATCH] glsl: optimize sqrt

2010-03-28 Thread Marek Olšák
We were talking a bit on IRC that the GLSL compiler implements the sqrt
function somewhat inefficiently. Instead of rsq+rcp+cmp instructions as is
in the original code, the proposed patch uses just rsq+mul. Please see the
patch log for further explanation, and please review.

-Marek
From 9b834a79a1819f3b4b9868be3e2696667791c83e Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sat, 27 Mar 2010 13:49:09 +0100
Subject: [PATCH] glsl: optimize sqrt

The new version can be derived from sqrt as follows:

sqrt(x) =
sqrt(x)^2 / sqrt(x) =
x / sqrt(x) =
x * rsqrt(x)

Also the need for the CMP instruction is gone because there is no division
by zero.
---
 .../shader/slang/library/slang_common_builtin.gc   |   22 +++
 1 files changed, 4 insertions(+), 18 deletions(-)

diff --git a/src/mesa/shader/slang/library/slang_common_builtin.gc b/src/mesa/shader/slang/library/slang_common_builtin.gc
index a25ca55..3f6596c 100644
--- a/src/mesa/shader/slang/library/slang_common_builtin.gc
+++ b/src/mesa/shader/slang/library/slang_common_builtin.gc
@@ -602,50 +602,36 @@ vec4 exp2(const vec4 a)
 
 float sqrt(const float x)
 {
-   const float nx = -x;
float r;
__asm float_rsq r, x;
-   __asm float_rcp r, r;
-   __asm vec4_cmp __retVal, nx, r, 0.0;
+   __retVal = r * x;
 }
 
 vec2 sqrt(const vec2 x)
 {
-   const vec2 nx = -x, zero = vec2(0.0);
vec2 r;
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
-   __asm float_rcp r.x, r.x;
-   __asm float_rcp r.y, r.y;
-   __asm vec4_cmp __retVal, nx, r, zero;
+   __retVal = r * x;
 }
 
 vec3 sqrt(const vec3 x)
 {
-   const vec3 nx = -x, zero = vec3(0.0);
vec3 r;
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
__asm float_rsq r.z, x.z;
-   __asm float_rcp r.x, r.x;
-   __asm float_rcp r.y, r.y;
-   __asm float_rcp r.z, r.z;
-   __asm vec4_cmp __retVal, nx, r, zero;
+   __retVal = r * x;
 }
 
 vec4 sqrt(const vec4 x)
 {
-   const vec4 nx = -x, zero = vec4(0.0);
vec4 r;
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
__asm float_rsq r.z, x.z;
__asm float_rsq r.w, x.w;
-   __asm float_rcp r.x, r.x;
-   __asm float_rcp r.y, r.y;
-   __asm float_rcp r.z, r.z;
-   __asm float_rcp r.w, r.w;
-   __asm vec4_cmp __retVal, nx, r, zero;
+   __retVal = r * x;
 }
 
 
-- 
1.6.3.3

--
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


Re: [Mesa3d-dev] GSOC: Gallium R300 driver

2010-03-26 Thread Marek Olšák
On Tue, Mar 23, 2010 at 8:46 PM, Tom Stellard tstel...@gmail.com wrote:

 On Tue, Mar 23, 2010 at 12:13:25AM -0700, Corbin Simpson wrote:
  On Mon, Mar 22, 2010 at 11:39 PM, Tom Stellard tstel...@gmail.com
 wrote:
  
   Thanks for the information.
  
   After spending some time learning about the Gallium driver
 architecture, I
   think it might be better to set a goal to implement or improve a
 specific
   feature of the Gallium R300 driver rather than trying to get a specific
   game or application to work.  Is there a feature that is currently
 missing
   from the R300 driver that might make a good project for the summer?
 
  Good question. There's a handful of things. Passing piglit might be a
  good goal. Bumping the GL version further up, or solidifying the GLSL
  support, might be good too.
 

 I think the GLSL compiler would be an interesting project for me to work
 on.  What is the current status of GLSL on R300 cards?


From the driver point of view, we don't have to work on the GLSL compiler
itself. The Mesa state tracker compiles GLSL to an assembler-like language
called TGSI which is then translated ([1]) to the R300 compiler ([2]) shader
representation. The more TGSI we handle, the more GLSL support we get.

So now the status. r300g GLSL is missing the following features:

1) Branching and looping

This is the most important one and there are 3 things which need to be done.
* Unrolling loops and converting conditionals to multiplications. This is
crucial for R3xx-R4xx GLSL support. I don't say it will work in all cases
but should be fine for the most common ones. This is kind of a standard in
all proprietary drivers supporting shaders 2.0. It would be nice have it
work with pure TGSI shaders so that drivers like nvfx can reuse it too and I
personally prefer to have this feature first before going on.
* Teaching the R300 compiler loops and conditionals for R500 fragment
shaders. Note that R500 supports the jump instruction so besides adding new
opcodes, the compiler optimization passes should be updated too (I think
they haven't been designed with loops in mind).
* The same but for R500 vertex shaders. The difference is conditionals must
be implemented using predication opcodes and predication writes (stuff gets
masked out). I think this only affects the conversion to machine code at the
end of the pipeline.

2) Derivatives instructions fix

It's implemented but broken. From docs: If src0 is computed in the previous
instruction, then a NOP needs to be inserted between the two instructions.
Do this by setting the NOP flag in the previous instruction. This is not
required if the previous instruction is a texture lookup. .. and that
should be the fix.

3) Perspective, flat, and centroid varying modifiers, gl_FrontFacing

I think this is specific to the rasterizer (RS) block in hw ([3]).

[1] src/gallium/drivers/r300/r300_tgsi_to_rc.c
[2] src/mesa/drivers/dri/r300/compiler/
[3] src/gallium/drivers/r300/r300_state_derived.c


 Would something
 like passing a subset of the GLSL piglit tests, or being able to correctly
 handle a certain version of GLSL be a good goal for the summer?


I guess this question is for Corbin. ;)

-Marek
--
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


Re: [Mesa3d-dev] [PATCH] configure.ac: Bump LIBDRM_RADEON_REQUIRED to 2.4.19

2010-03-23 Thread Marek Olšák
Fixed in master without requiring new libdrm.

-Marek

On Tue, Mar 23, 2010 at 1:01 PM, Sedat Dilek sedat.di...@googlemail.comwrote:

 Fixes here latest issues with mesa master GIT [1].

 --
 Sedat

 [1] http://marc.info/?l=mesa3d-devm=126934502904478w=2


 --
 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


--
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


Re: [Mesa3d-dev] GSOC: Gallium R300 driver

2010-03-23 Thread Marek Olšák
I've updated the TODO list with the stuff from my private one, in case you
guys think there are too few things to do. ;)

http://dri.freedesktop.org/wiki/R300ToDo?action=diff

-Marek

On Tue, Mar 23, 2010 at 8:16 AM, Corbin Simpson
mostawesomed...@gmail.comwrote:

 On Tue, Mar 23, 2010 at 12:13 AM, Corbin Simpson
 mostawesomed...@gmail.com wrote:
  Good question. There's a handful of things. Passing piglit might be a
  good goal. Bumping the GL version further up, or solidifying the GLSL
  support, might be good too.

 Oh, and how could I forget this? We have a sizeable todo list:
 http://dri.freedesktop.org/wiki/R300ToDo

 ~ C.

 --
 When the facts change, I change my mind. What do you do, sir? ~ Keynes

 Corbin Simpson
 mostawesomed...@gmail.com


 --
 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

--
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


Re: [Mesa3d-dev] New branch to switch st/dri to st_api.h

2010-03-21 Thread Marek Olšák
Please do git pull --rebase origin instead of git pull origin to avoid
Merge branch 'master' of ... commits.

-Marek

On Sun, Mar 21, 2010 at 2:40 PM, George Sapountzis gsapount...@gmail.comwrote:

 That was commit 9ec29e31919e85f9230867f43841c0e74be930d3 when doing a
 pristine build. I reverted it for now.

 On Sun, Mar 21, 2010 at 2:31 PM, STEVE555 stevenward...@hotmail.com
 wrote:
 
  Hi Chia-I Wu,
I've just updated my copy of Mesa master today after
 your
  merge and the latest commits(from about 11:30 am GMT).I build Mesa with
  these configure options:
  ./configure --prefix=/usr --enable-32-bit --enable-xcb
  --enable-gallium-nouveau --with-state-trackers=dri,egl,xorg,glx,vega,es
  --enable-motif --enable-gl-osmesa --disable-gallium-intel
  --disable-gallium-radeon --with-expat=/usr/lib
  --with-demos=xdemos,demos,trivial,tests --with-dri-drivers=swrast
  --enable-gallium-swrast --enable-gallium-svga --with-max-width=4096
  --with-max-height=4096 --enable-debug.
 
  I've used both gmake and make after ./configure,and Mesa keeps hitting
 this
  error when it tries to build the svga state-tracker:
 
  gmake[4]: Entering directory `/opt/mesa/src/gallium/drivers/svga'
  rm -f depend
  touch depend
  /usr/bin/makedepend -fdepend
 -I/usr/lib/gcc/i686-redhat-linux/4.4.3/include
  -I. -I../../../../src/gallium/include -I../../../../src/gallium/auxiliary
  -I../../../../src/gallium/drivers
  -I../../../../src/gallium/drivers/svga/include -std=gnu99
  -fvisibility=hidden -DHAVE_STDINT_H -DHAVE_SYS_TYPES_H
  svgadump/svga_shader_dump.c svgadump/svga_shader_op.c
 svgadump/svga_dump.c
  svga_cmd.c svga_context.c svga_draw.c svga_draw_arrays.c
  svga_draw_elements.c svga_pipe_blend.c svga_pipe_blit.c svga_pipe_clear.c
  svga_pipe_constants.c svga_pipe_depthstencil.c svga_pipe_draw.c
  svga_pipe_flush.c svga_pipe_fs.c svga_pipe_misc.c svga_pipe_query.c
  svga_pipe_rasterizer.c svga_pipe_sampler.c svga_pipe_vertex.c
 svga_pipe_vs.c
  svga_screen.c svga_screen_buffer.c svga_screen_texture.c
 svga_screen_cache.c
  svga_state.c svga_state_need_swtnl.c svga_state_constants.c
  svga_state_framebuffer.c svga_state_rss.c svga_state_tss.c
  svga_state_vdecl.c svga_state_fs.c svga_state_vs.c svga_swtnl_backend.c
  svga_swtnl_draw.c svga_swtnl_state.c svga_tgsi.c svga_tgsi_decl_sm20.c
  svga_tgsi_decl_sm30.c svga_tgsi_insn.c2 /dev/null
  gmake[4]: *** No rule to make target `depend', needed by `default'.
  Stop.
  gmake[4]: Leaving directory `/opt/mesa/src/gallium/drivers/svga'
  gmake[3]: *** [default] Error 1
  gmake[3]: Leaving directory `/opt/mesa/src/gallium/drivers'
  gmake[2]: *** [default] Error 1
  gmake[2]: Leaving directory `/opt/mesa/src/gallium'
  make[1]: *** [subdirs] Error 1
  make[1]: Leaving directory `/opt/mesa/src'
  make: *** [default] Error 1
  Regards,
 STEVE555
 
 
  Sedat Dilek wrote:
 
  On Sun, Mar 21, 2010 at 10:33 AM, Chia-I Wu olva...@gmail.com wrote:
  On Sun, Mar 21, 2010 at 5:19 PM, Sedat Dilek 
 sedat.di...@googlemail.com
  wrote:
  [...]
  Even I see OpenArena got a boost from ~25fps (7.8 GIT) to ~32fps
  (master GIT incl. gallium-st-api-dri merge)
  $ cat oa_benchmark.txt
  s...@seduxbox:~/src/anholt_oa-benchmark$ openarena +exec anholt 21 |
  egrep -e '[0-9]+ frames'
  840 frames 26.3 seconds 31.9 fps 9.0/31.3/90.0/9.9 ms
  Thanks for your work!
  Unless I have some magic power that I am not aware of, the boost should
  be
  attributed to r300g developers.
 
 
  I think, it is helpful to benchmark from time to time.
  I was comparing the both branches 7.8 and 7.9-devel in general and
  especiall r300g dri/st.
  Indeed, Chapeau to all contributors to r300g development.
 
  --
  Sedat
 
 
 --
  Download Intel® 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
 
 
 
  --
  View this message in context:
 http://old.nabble.com/New-branch-to-switch-st-dri-to-st_api.h-tp27940955p27975796.html
  Sent from the mesa3d-dev mailing list archive at Nabble.com.
 
 
 
 --
  Download Intel® 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
 


 

Re: [Mesa3d-dev] [mesa] r300g dri/st: OpenArena corruptions with mesa-7.8 and master GIT

2010-03-19 Thread Marek Olšák
On Fri, Mar 19, 2010 at 11:36 AM, Sedat Dilek sedat.di...@googlemail.comwrote:

 Hi,

 the last days I was testing Alex Deucher's power-management-2 patches
 for radeon OSS driver.

 While testing I saw that especially r300g dri/statetracker with
 OpenArena have problems with mesa 7.8/master GIT branch.
 Mesa r300 classic (KMS/DRI2) is working fine here on RV515.

 7.8 GIT:
 Scenes have a red-ish background.
 There should be a fix in master.
 But I can't remember when and which patch fixed it, but Dave Airlied
 noticed the same color corruptions.


Apply this one from master:
821c830f11fc1c3529a186ace1d1ba3ddeab4957http://cgit.freedesktop.org/mesa/mesa/commit/?id=821c830f11fc1c3529a186ace1d1ba3ddeab4957
If it helps, someone could cherry-pick the commit to the 7.8 branch.


 master GIT (merged gallium-st-api-dri into it):
 Some objects in the scene are not displayed with correct colors -
 objects look/have like turquoise and black triangles.


What levels have this issue? How can I reproduce it?
There is a breakage with Dave's screen/winsys rework (
68e58a96e80865878e6881dc4d34fcc3ec24eb19http://cgit.freedesktop.org/mesa/mesa/commit/?id=68e58a96e80865878e6881dc4d34fcc3ec24eb19),
especially in these piglit tests: cubemap, gen-teximage, levelclamp,
lodclamp, texredefine.
Could you please check if the incorrect rendering in openarena has anything
to do with the rework?

-Marek


 commit 8e1768cfd32a4fa47dd5d4e8f5434fafc3b3120
 gallium/docs: Fix a couple ReST errors.

 I played a bit with glxinfo (output see file-attachment):

 $ LIBGL_DEBUG=verbose RADEON_DEBUG=all ST_DEBUG=mesa glxinfo  glxinfo.txt

 The log of OA got big (dunno if you are interested in):

 $ LIBGL_DEBUG=verbose RADEON_DEBUG=all ST_DEBUG=mesa openarena
 2openarena.log

 Any hints for digging deeper into this?

 Kind Regards,
 - Sedat -


 --
 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


--
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


Re: [Mesa3d-dev] Revert ST_SURFACE_DEPTH = BUFFER_DEPTH in master too?

2010-03-11 Thread Marek Olšák
On Thu, Mar 11, 2010 at 4:41 PM, Luca Barbieri l...@luca-barbieri.comwrote:

 I've looked into the issue, and found a workaround by looking at what
 st_renderbuffer_alloc_storage (which is called to create the depth
 buffer with ST_SURFACE_DEPTH != BUFFER_DEPTH) does.

 Adding:
 if(ctx) ctx-NewState |= _NEW_BUFFERS;

 at the end of st_set_framebuffer_surface seems to solve the warsow
 problem with no other regressions.

 Brian, is this the right fix?
 Marek, does it fix your r300g problems too?


Mesa master merged with 7.8 fixes all the glean regressions. Thanks.
--
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


[Mesa3d-dev] util_format cleanup leftover: Gallium BGRA vertex swizzles

2010-03-11 Thread Marek Olšák
Please see this commit:
http://cgit.freedesktop.org/~mareko/mesa/commit/?id=177a4432aa88fc68d83895ae71b7ad2c86a1e7e3

Subject: [PATCH] gallium: fix BGRA vertex color swizzles

The mapping for vertex_array_bgra:
(gl - st - translate)
GL_RGBA - PIPE_FORMAT_R8G8B8A8 (RGBA) - no swizzle (XYZW)
GL_BGRA - PIPE_FORMAT_A8R8G8B8 (ARGB) - ZYXW (BGRA again??)

Iẗ́'s pretty clear that PIPE_FORMAT_A8R8G8B8 here is wrong. This commit
fixes the pipe format and removes obvious workarounds in util/translate.

Tested with: softpipe, llvmpipe, r300g.

Please review.

-Marek
--
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


Re: [Mesa3d-dev] Revert ST_SURFACE_DEPTH = BUFFER_DEPTH in master too?

2010-03-10 Thread Marek Olšák
I second that. The commit breaks 6 glean tests (api2, clipFlat, fragProg1,
occluQry, pointAtten, texCombine4) with r300g.

-Marek

On Wed, Mar 10, 2010 at 10:50 PM, Luca Barbieri l...@luca-barbieri.comwrote:

 In mesa_7_7_branch, 52d83efdbc4735d721e6fc9b44f29bdd432d4d73 reverts
 commit 9d17ad2891b58de9e33e943ff918a678c6a3c2bd.

 How about cherry-picking that commit into master, until a fix for the
 bugs the revert commit introduces are found?

 The reverted commit currently breaks the Warsow main menu for me,
 making it show garbage.


 --
 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

--
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


Re: [Mesa3d-dev] dri-extension branch - clean up advertising extensions in Gallium

2010-03-08 Thread Marek Olšák
Alright, I will add driInitExtensions(ctx, NULL, TRUE) at the end of
st_init_extensions. Anything else I missed or is it OK?

-Marek

On Mon, Mar 8, 2010 at 4:25 PM, Roland Scheidegger srol...@vmware.comwrote:

 On 08.03.2010 14:22, Joakim Sindholt wrote:
  On Mon, 2010-03-08 at 13:16 +0100, Roland Scheidegger wrote:
  On 07.03.2010 20:26, Marek Olšák wrote:
   This branch is aimed to address the following issues:
  * Extensions are advertised in both st/mesa and st/dri, doing the same
  thing in two places.
  * The inability to disable extensions in pipe_screen::get_param because
  st/dri overrides the decisions of st/mesa.
 
  Here's the branch:
  http://cgit.freedesktop.org/~mareko/mesa/log/?h=dri-extensionshttp://cgit.freedesktop.org/%7Emareko/mesa/log/?h=dri-extensions
 
  The first commit moves the differences between st/dri and st/mesa to
 the
  latter and removes dri_init_extensions from st/dri. It doesn't remove
  any extensions from the list except for those not advertised by
 pipe_screen.
 
  The second commit enables texture_rectangle by default in Gallium. To
 my
  knowledge any Gallium hardware can do this and I suspect it was
  dependent on NPOT textures by accident.
 
  All this is of course tested with piglit and glean.
 
  Please review. In case it's not OK, please let me know what needs to be
  done.
  The second commit looks fine to me.
  The first one, I'm not sure. Maybe that's ok, but if so I'm wondering
  why, since this skips all the mapping business driInitExtensions did and
  just sets the extension enable bits to true. At least I'm fairly sure it
  was needed in the past...
 
  Roland
 
  I believe airlied pointed out earlier that
 
 http://cgit.freedesktop.org/mesa/mesa/commit/?id=17ef1f6074d6107c167f1956a5c60993904c0b72fixed
  that problem.

 But even with that commit, all drivers still call driInitExtensions at
 least once, though the parameter list can be NULL. I don't see that
 happening here.

 Roland


--
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


Re: [Mesa3d-dev] r300g color bug with VBO

2010-03-08 Thread Marek Olšák
Yes, this is a known issue. The problem is that GL_RGBA and GL_BGRA map to
PIPE_FORMAT_R8G8B8A8 (RGBA) and PIPE_FORMAT_A8R8G8B8 (ARGB), respectively,
which is wrong. The attached patch fixes it for r300g but breaks other
drivers which depend on Draw (softpipe, llvmpipe). The reason is that Draw
seems to interpret A8R8G8B8 as BGRA, clearly hiding the bug.

The possibilites are:
- implement the same hack in r300g
- fix Draw (I'd prefer this one)

I hope I'll find some time this week to resolve this issue if no one else do
it.

-Marek

On Tue, Mar 9, 2010 at 1:29 AM, Tom t...@riseup.net wrote:

 Hi people,

 With the r300g driver (git ~today) drawing tris with color pointer like so:

 glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(struct vtx_data), blah);

 Seems to invert the RGBA - ABGR.

 This short program shows the bug. It should display a yellow tri, and
 instead on r300g it shows a blue tri.

 http://tom.noflag.org.uk/misc/r300g_color_bug.c

 Not sure if you want user bug reports of this kind yet, but anyway...

 --
 Tom


 --
 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

diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 32b9a47..4b48c16 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -183,7 +183,7 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
   /* this is an odd-ball case */
   assert(type == GL_UNSIGNED_BYTE);
   assert(normalized);
-  return PIPE_FORMAT_A8R8G8B8_UNORM;
+  return PIPE_FORMAT_B8G8R8A8_UNORM;
}
--
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


Re: [Mesa3d-dev] r300g color bug with VBO

2010-03-08 Thread Marek Olšák
Also I've fixed GL_RGBA in master so now only GL_BGRA remains unresolved...

On Tue, Mar 9, 2010 at 1:29 AM, Tom t...@riseup.net wrote:

 Hi people,

 With the r300g driver (git ~today) drawing tris with color pointer like so:

 glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(struct vtx_data), blah);

 Seems to invert the RGBA - ABGR.

 This short program shows the bug. It should display a yellow tri, and
 instead on r300g it shows a blue tri.

 http://tom.noflag.org.uk/misc/r300g_color_bug.c

 Not sure if you want user bug reports of this kind yet, but anyway...

 --
 Tom


 --
 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

--
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


[Mesa3d-dev] dri-extension branch - clean up advertising extensions in Gallium

2010-03-07 Thread Marek Olšák
This branch is aimed to address the following issues:
* Extensions are advertised in both st/mesa and st/dri, doing the same thing
in two places.
* The inability to disable extensions in pipe_screen::get_param because
st/dri overrides the decisions of st/mesa.

Here's the branch:
http://cgit.freedesktop.org/~mareko/mesa/log/?h=dri-extensions

The first commit moves the differences between st/dri and st/mesa to the
latter and removes dri_init_extensions from st/dri. It doesn't remove any
extensions from the list except for those not advertised by pipe_screen.

The second commit enables texture_rectangle by default in Gallium. To my
knowledge any Gallium hardware can do this and I suspect it was dependent on
NPOT textures by accident.

All this is of course tested with piglit and glean.

Please review. In case it's not OK, please let me know what needs to be
done.

-Marek
--
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


Re: [Mesa3d-dev] [PATCH] mesa/st: Gallium quads, by spec, never change provoking vertex.

2010-03-06 Thread Marek Olšák
The attached patches change softpipe and llvmpipe so that they never provoke
the first vertex for quads. Please review. I think that these and the
Corbin's one could be pushed by now, couldn't they?

-Marek

On Thu, Feb 11, 2010 at 4:03 PM, Brian Paul bri...@vmware.com wrote:

 Corbin Simpson wrote:
 From 215714d54a7f38b9add236bcc1c795e8b5d92867 Mon Sep 17 00:00:00 2001
  From: Corbin Simpson mostawesomed...@gmail.com
  Date: Wed, 10 Feb 2010 10:39:18 -0800
  Subject: [PATCH] mesa/st: Gallium quads, by spec, never change provoking
 vertex.
 
  Fixes glean/clipFlat. Softpipe might be broken; I haven't figured out
  how to test it in this new API world. :T
  ---
   src/mesa/state_tracker/st_extensions.c |3 +++
   1 files changed, 3 insertions(+), 0 deletions(-)
 
  diff --git a/src/mesa/state_tracker/st_extensions.c
  b/src/mesa/state_tracker/st_extensions.c
  index d5f5854..e2d871b 100644
  --- a/src/mesa/state_tracker/st_extensions.c
  +++ b/src/mesa/state_tracker/st_extensions.c
  @@ -137,6 +137,9 @@ void st_init_limits(struct st_context *st)
  /* XXX separate query for early function return? */
  st-ctx-Shader.EmitContReturn =
 screen-get_param(screen, PIPE_CAP_TGSI_CONT_SUPPORTED);
  +
  +   /* Quads always follow GL provoking rules. */
  +   c-QuadsFollowProvokingVertexConvention = GL_FALSE;
   }

 This causes the glean clipFlat test to fail with softpipe.  The
 gallium softpipe driver _does_ implement the quad follows provoking
 vertex convention.

 I don't have time right now to update the softpipe driver so this
 patch will have to wait a while.  Maybe someone else can look at it
 sooner.

 -Brian


 --
 SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
 Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
 http://p.sf.net/sfu/solaris-dev2dev
 ___
 Mesa3d-dev mailing list
 Mesa3d-dev@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

From 861dd9a4e5d2fc3e0892d76d8f0ac929e186a88a Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sun, 7 Mar 2010 04:54:43 +0100
Subject: [PATCH 1/2] llvmpipe: do not follow the provoking vertex convention for quads

---
 src/gallium/drivers/llvmpipe/lp_setup_vbuf.c |  129 +++--
 1 files changed, 36 insertions(+), 93 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c b/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
index 24291da..671e744 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
@@ -231,57 +231,29 @@ lp_setup_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
   break;
 
case PIPE_PRIM_QUADS:
-  if (setup-flatshade_first) {
- for (i = 3; i  nr; i += 4) {
-setup-triangle( setup,
- get_vert(vertex_buffer, indices[i-2], stride),
- get_vert(vertex_buffer, indices[i-1], stride),
- get_vert(vertex_buffer, indices[i-3], stride) );
-setup-triangle( setup,
- get_vert(vertex_buffer, indices[i-1], stride),
- get_vert(vertex_buffer, indices[i-0], stride),
- get_vert(vertex_buffer, indices[i-3], stride) );
- }
-  }
-  else {
- for (i = 3; i  nr; i += 4) {
-setup-triangle( setup,
- get_vert(vertex_buffer, indices[i-3], stride),
- get_vert(vertex_buffer, indices[i-2], stride),
- get_vert(vertex_buffer, indices[i-0], stride) );
+  for (i = 3; i  nr; i += 4) {
+ setup-triangle( setup,
+  get_vert(vertex_buffer, indices[i-3], stride),
+  get_vert(vertex_buffer, indices[i-2], stride),
+  get_vert(vertex_buffer, indices[i-0], stride) );
 
-setup-triangle( setup,
- get_vert(vertex_buffer, indices[i-2], stride),
- get_vert(vertex_buffer, indices[i-1], stride),
- get_vert(vertex_buffer, indices[i-0], stride) );
- }
+ setup-triangle( setup,
+  get_vert(vertex_buffer, indices[i-2], stride),
+  get_vert(vertex_buffer, indices[i-1], stride),
+  get_vert(vertex_buffer, indices[i-0], stride) );
   }
   break;
 
case PIPE_PRIM_QUAD_STRIP:
-  if (setup-flatshade_first) {
- for (i = 3; i  nr; i += 2) {
-setup-triangle( setup,
- get_vert(vertex_buffer, indices[i-0], stride),
- get_vert(vertex_buffer, indices[i-1], stride),
- 

Re: [Mesa3d-dev] Mesa (master): mesa: Export GL_EXT_texture_cube_map.

2010-03-05 Thread Marek Olšák
I can see this extension in ATI Catalyst 9.3.

-Marek

On Sat, Mar 6, 2010 at 1:16 AM, Ian Romanick i...@freedesktop.org wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Jose Fonseca wrote:
  Module: Mesa
  Branch: master
  Commit: 744994a9c6b972a737e432cf1b699f232e2c5bfd
  URL:
 http://cgit.freedesktop.org/mesa/mesa/commit/?id=744994a9c6b972a737e432cf1b699f232e2c5bfd
 
  Author: José Fonseca jfons...@vmware.com
  Date:   Sat Feb 13 15:10:24 2010 +
 
  mesa: Export GL_EXT_texture_cube_map.
 
  Still used by some applications.

 Holy smokes.  Just out of curiosity, which applications?  I didn't think
 anyone ever actually shipped this extension.  I guess Nvidia might have..
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.10 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

 iEYEARECAAYFAkuRnucACgkQX1gOwKyEAw/IDwCcCTnVTTHB2QOLZbDEVZmniYq/
 mHkAmwaXt1ZzjGigifaqdyhkzf3/fxQ8
 =umX/
 -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

--
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


Re: [Mesa3d-dev] Does DX9 SM3 - VMware svga with arbitrary semantics work? How?

2010-03-02 Thread Marek Olšák
On Tue, Mar 2, 2010 at 10:20 PM, Luca Barbieri l...@luca-barbieri.comwrote:

 On Tue, Mar 2, 2010 at 10:00 PM, Corbin Simpson
 mostawesomed...@gmail.com wrote:
  FYI r300 only supports 24 interpolators: 16 linear and 8 perspective.
  (IIRC; not in front of the docs right now.) r600 supports 256 fully
  configurable interpolators.

 Yes, but if you raised ATTR_GENERIC_COUNT, the current driver would
 support higher semantic indices right? (of course, with a limit of
 8/24 different semantic indices used at once).

 That's right.
--
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


Re: [Mesa3d-dev] Gallium software fallback/draw command failure

2010-03-01 Thread Marek Olšák
On Mon, Mar 1, 2010 at 3:02 PM, Jerome Glisse gli...@freedesktop.orgwrote:

 On Mon, Mar 01, 2010 at 12:24:19PM +, Keith Whitwell wrote:
  On Mon, 2010-03-01 at 04:07 -0800, Keith Whitwell wrote:
   On Mon, 2010-03-01 at 03:55 -0800, Jerome Glisse wrote:
On Mon, Mar 01, 2010 at 11:46:08AM +, Keith Whitwell wrote:
 On Mon, 2010-03-01 at 03:21 -0800, José Fonseca wrote:
  On Sun, 2010-02-28 at 11:25 -0800, Jerome Glisse wrote:
   Hi,
  
   I am a bit puzzled, how a pipe driver should handle
   draw callback failure ? On radeon (pretty sure nouveau
   or intel hit the same issue) we can only know when one
   of the draw_* context callback is call if we can do
   the rendering or not.
  
   The failure here is dictated by memory constraint, ie
   if user bind big texture, big vbo ... we might not have
   enough GPU address space to bind all the desired object
   (even for drawing a single triangle) ?
  
   What should we do ? None of the draw callback can return
   a value ? Maybe for a GL stack tracker we should report
   GL_OUT_OF_MEMORY all way up to app ? Anyway bottom line
   is i think pipe driver are missing something here. Any
   idea ? Thought ? Is there already a plan to address that ? :)
 
  Gallium draw calls had return codes before. They were used for
 the
  fallover driver IIRC and were recently deleted.
 
  Either we put the return codes back, or we add a new
  pipe_context::validate() that would ensure that all necessary
 conditions
  to draw successfully are met.
 
  Putting return codes on bind time won't work, because one can't
 set all
  atoms simultaneously -- atoms are set one by one, so when one's
 setting
  the state there are state combinations which may exceed the
 available
  resources but that are never drawn with. E.g. you have a huge VB
 you
  finished drawing, and then you switch to drawing with a small VB
 with a
  huge texture, but in between it may happen that you have both
 bound
  simultaneously.
 
  If ignoring is not an alternative, then I'd prefer a validate
 call.
 
  Whether to fallback to software or not -- it seems to me it's
 really a
  problem that must be decided case by case. Drivers are supposed
 to be
  useful -- if hardware is so limited that it can't do anything
 useful
  then falling back to software is sensible. I don't think that a
 driver
  should support every imaginable thing -- apps should check
 errors, and
  users should ensure they have enough hardware resources for the
  workloads they want.
 
  Personally I think state trackers shouldn't emulate anything with
 CPU
  beyond unsupported pixel formats. If a hardware is so limited
 that in
  need CPU assistence this should taken care transparently by the
 pipe
  driver. Nevertheless we can and should provide auxiliary
 libraries like
  draw to simplify the pipe driver implementation.


 My opinion on this is similar: the pipe driver is responsible for
 getting the rendering done.  If it needs to pull in a fallback
 module to
 achieve that, it is the pipe driver's responsibility to do so.

 Understanding the limitations of hardware and the best ways to work
 around those limitations is really something that the driver itself
 is
 best positioned to handle.

 The slight quirk of OpenGL is that there are some conditions where
 theoretically the driver is allowed to throw an OUT_OF_MEMORY error
 (or
 similar) and not render.  This option isn't really available to
 gallium
 drivers, mainly because we don't know inside gallium whether the
 API
 permits this.  Unfortunately, even in OpenGL, very few applications
 actually check the error conditions, or do anything sensible when
 they
 fail.

 I don't really like the idea of pipe drivers being able to fail
 render
 calls, as it means that every state tracker and every bit of
 utility
 code that issues a pipe-draw() call will have to check the return
 code
 and hook in fallback code on failure.

 One interesting thing would be to consider creating a layer that
 exposes
 a pipe_context interface to the state tracker, but revives some of
 the
 failover ideas internally - maybe as a first step just lifting the
 draw
 module usage up to a layer above the actual hardware driver.

 Keith

   
So you don't like the pipe_context::validate() of Jose ? My
taste goes to the pipe_context::validate() and having state
tracker setting the proper flag according to the API they
support (GL_OUT_OF_MEMORY for GL), this means just drop
rendering command that we can't do.
  
   I think it's useful as a method for implementing GL_OUT_OF_MEMORY, but
   the pipe driver should:
  
   a) not rely on validate() being called - ie it is 

Re: [Mesa3d-dev] [RFC] gallium-no-rhw-position branch merge

2010-03-01 Thread Marek Olšák
Hi Michal,

This branch breaks 2 piglit tests with r300g:

depthrange-clear
texdepth

However I haven't investigated these and won't get to them until the
weekend. I personally don't mind fixing the regressions after the merge (but
I'm not the maintainer of r300g). Anyway I'm glad to see
bypass_vs_clip_and_viewport dying.

-Marek

On Mon, Mar 1, 2010 at 5:08 PM, michal mic...@vmware.com wrote:

 Hi,

 This branch removes bypass_vs_clip_and_viewport flag from pipe
 rasterizer state. The benefits of having this bit around were dubious
 for everybody and burdensome for driver writers.

 All the utility code that relied on this flag have been rewritten to
 pass vertex positions in clip space and set clip and viewport state. I
 would like to ask the maintainers of u_blitter module to please test my
 changes and provide feedback.

 Please review.

 Thanks.



 --
 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

--
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


Re: [Mesa3d-dev] [RFC] gallium-no-rhw-position branch merge

2010-03-01 Thread Marek Olšák
Ahhh, I am a bad liar. The attached patch fixes the regressions.

-Marek

On Tue, Mar 2, 2010 at 2:08 AM, Marek Olšák mar...@gmail.com wrote:

 Hi Michal,

 This branch breaks 2 piglit tests with r300g:

 depthrange-clear
 texdepth

 However I haven't investigated these and won't get to them until the
 weekend. I personally don't mind fixing the regressions after the merge (but
 I'm not the maintainer of r300g). Anyway I'm glad to see
 bypass_vs_clip_and_viewport dying.

 -Marek


 On Mon, Mar 1, 2010 at 5:08 PM, michal mic...@vmware.com wrote:

 Hi,

 This branch removes bypass_vs_clip_and_viewport flag from pipe
 rasterizer state. The benefits of having this bit around were dubious
 for everybody and burdensome for driver writers.

 All the utility code that relied on this flag have been rewritten to
 pass vertex positions in clip space and set clip and viewport state. I
 would like to ask the maintainers of u_blitter module to please test my
 changes and provide feedback.

 Please review.

 Thanks.



 --
 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



From fe8c9e902b3cb6392979aeecf03b17d303210eba Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Tue, 2 Mar 2010 02:37:45 +0100
Subject: [PATCH] util/blitter: Fix the viewport transformation for Z coordinates

When clearing buffers, the depth is specified in the range [0, 1]
and should be passed through blitter as is.
---
 src/gallium/auxiliary/util/u_blitter.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index f93c69d..0ba09d3 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -320,11 +320,11 @@ static void blitter_set_rectangle(struct blitter_context_priv *ctx,
/* viewport */
ctx-viewport.scale[0] = 0.5f * width;
ctx-viewport.scale[1] = 0.5f * height;
-   ctx-viewport.scale[2] = 0.5f;
+   ctx-viewport.scale[2] = 1.0f;
ctx-viewport.scale[3] = 1.0f;
ctx-viewport.translate[0] = 0.5f * width;
ctx-viewport.translate[1] = 0.5f * height;
-   ctx-viewport.translate[2] = 0.5f;
+   ctx-viewport.translate[2] = 0.0f;
ctx-viewport.translate[3] = 0.0f;
ctx-pipe-set_viewport_state(ctx-pipe, ctx-viewport);
 
-- 
1.6.3.3

--
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


Re: [Mesa3d-dev] Mesa (master): r300/compiler: Assert that array index is not negative.

2010-02-27 Thread Marek Olšák
We actually hit this assertion when we get:

FRAG
DCL IN[0], COLOR, PERSPECTIVE
  0: END

See piglit/glsl-bug-22603.

-Marek

On Fri, Feb 26, 2010 at 10:18 AM, Corbin Simpson
mostawesomed...@gmail.comwrote:

  Module: Mesa
  Branch: master
  Commit: e5c691f445e1c02e6e2f75b817b13d7024f7a3a6
  URL:
 http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5c691f445e1c02e6e2f75b817b13d7024f7a3a6
 
  Author: Vinson Lee vlee at vmware.com
  Date:   Fri Feb 26 00:17:03 2010 -0800
 
  r300/compiler: Assert that array index is not negative.
 
  ---
 
  .../drivers/dri/r300/compiler/r500_fragprog_emit.c |2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)
 
  diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
 b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
  index 829f028..710cae7 100644
  --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
  +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
  @@ -469,6 +469,8 @@ void r500BuildFragmentProgramHwCode(struct
 r300_fragment_program_compiler *compi
  if (compiler-Base.Error)
  return;
 
  + assert(code-inst_end = 0);
  +
  if ((code-inst[code-inst_end].inst0  R500_INST_TYPE_MASK) !=
 R500_INST_TYPE_OUT) {
  /* This may happen when dead-code elimination is disabled or
  * when most of the fragment program logic is leading to a KIL */

 Sorry, is this actually a problem? If this assertion is actually being
 hit, it sure would be nice to hear about it since it. Empty shaders
 shouldn't just be handled with debugging code.

 --
 Only fools are easily impressed by what is only
 barely beyond their reach. ~ Unknown

 Corbin Simpson
 mostawesomed...@gmail.com


 --
 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

--
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


[Mesa3d-dev] [PATCH] st/mesa: do not advertise S3TC if the external lib is not available

2010-02-27 Thread Marek Olšák
Hi,

S3TC shouldn't be advertised without the external lib and the attached patch
fixes that. Please review.

-Marek
From 94c58ff449b3818a378ad4ab5787151bc0a9ea6f Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sat, 27 Feb 2010 03:20:58 +0100
Subject: [PATCH] st/mesa: do not advertise S3TC if the external lib is not available

---
 src/mesa/state_tracker/st_extensions.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index d5f5854..7b720b3 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -298,7 +298,8 @@ void st_init_extensions(struct st_context *st)
}
 
/* s3tc support */
-   if (screen-is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
+   if (ctx-Mesa_DXTn 
+   screen-is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
PIPE_TEXTURE_2D, 
PIPE_TEXTURE_USAGE_SAMPLER, 0)) {
   ctx-Extensions.EXT_texture_compression_s3tc = GL_TRUE;
-- 
1.6.3.3

--
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


Re: [Mesa3d-dev] [PATCH] st/mesa: do not advertise S3TC if the external lib is not available

2010-02-27 Thread Marek Olšák
OK thanks, I pushed what you suggested.

-Marek

On Sat, Feb 27, 2010 at 9:44 PM, José Fonseca jfons...@vmware.com wrote:

 On Sat, 2010-02-27 at 09:15 -0800, Marek Olšák wrote:
  Hi,
 
  S3TC shouldn't be advertised without the external lib and the attached
  patch fixes that. Please review.

 Hi Marek,

 Actually it is a bit more subtle.

 S3TC can and should be advertised if the pipe driver supports ST3C
 decompression and *compression*.

 No real hardware has circuitry for S3TC compression, granted. But the
 vwmare svga gallium driver does it, by deferring everything to the host.

 It was the best solution we found to supporting S3TC without having to
 rely on closed source or questionable bits in the guest.

 So the right fix should be:

 screen-is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
PIPE_TEXTURE_2D,
PIPE_TEXTURE_USAGE_SAMPLER, 0) 
 (ctx-Mesa_DXTn || screen-is_format_supported(screen,
 PIPE_FORMAT_DXT5_RGBA, PIPE_TEXTURE_2D, PIPE_TEXTURE_USAGE_RENDERTARGET,
 0)

 Jose


--
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


Re: [Mesa3d-dev] [PATCH] st/dri: don't enable EXT_draw_buffers2 by default

2010-02-25 Thread Marek Olšák
On Tue, Feb 23, 2010 at 2:49 AM, Marek Olšák mar...@gmail.com wrote:

 On Mon, Feb 22, 2010 at 4:23 PM, Brian Paul brian.e.p...@gmail.comwrote:

 On Sun, Feb 21, 2010 at 8:00 AM, Marek Olšák mar...@gmail.com wrote:
  Hi,
 
  the attached patch modifies st/dri to not enable EXT_draw_buffers2 by
  default because r300g and most probably even some other drivers can't
  support this extension. The drivers reporting support of
  PIPE_CAP_INDEP_BLEND_ENABLE are not affected by this patch.
 
  Please review.

 Hmm, I believe the extensions listed in dri_extensions.c are those
 that _may_ be supported by drivers.  But its the st_extensions.c code
 that queries the driver for various caps (such as
 PIPE_CAP_INDEP_BLEND_ENABLE) and then turns on the extension if
 applicable.


 I stand corrected.


I was actually right the first time. The list in dri_extensions.c is being
advertised *regardless* of what a driver reports (tested and debugged). None
of the extensions on the list can be disabled using pipe_screen::get_param,
making the majority of feature caps useless. However, I can enable/disable
any extension which is *not* on the list using appropriate caps (if they
exist).

-Marek
--
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


Re: [Mesa3d-dev] Gallium format swizzles (Was: util: fix swizzles in the format table for 8-bits-per-channel formats)

2010-02-23 Thread Marek Olšák
I am basically ok with anything that would let me correctly convert the
format description into hardware-specific bits with *no* workarounds (for
both vertex data and samplers).

On Tue, Feb 23, 2010 at 6:20 PM, José Fonseca jfons...@vmware.com wrote:

 On Mon, 2010-02-22 at 06:34 -0800, José Fonseca wrote:
  On Sun, 2010-02-21 at 06:40 -0800, Marek Olšák wrote:
   Hi José,
  
   the attached patch fixes incorrect swizzles in u_format.csv. There are
   basically just 2 drivers which depend on the swizzles in this table:
   llvmpipe and r300g. Since r300g started supporting pretty much every
   texture format except SCALED ones, a few regressions have showed up.
   This patch resolves all issues I had, especially with the SRGB formats
   but I decided to clean it up all. git log:
  
   util: fix swizzles in the format table for 8-bits-per-channel
   formats
  
   The 8-bits-per-channel formats having the same channel order had
   completely
   different swizzles, and at the same time, the same swizzles were
   used for
   completely different channel orders of 8bpc formats.
  
   This made the whole table self-contradicting, caused headaches,
   and last
   but not least, incorrent rendering for the drivers relying on
   these swizzles.
  
   I hope I got it right. I didn't make a special distinction between the
   array and arith layouts. All I did was to make sure that if I grep
   e.g. A8R8G8B8, I'll get the same swizzles and not entirely different
   ones.
 
  Hi Marek,
 
  I'll need a bit more time to investigate this.
 
  One problem is that the interpretation of the swizzle varies with array
  vs arith. The ordering for array is the lowest significant word to the
  highest significant word (where word for 8bit formats is a byte), where
  for arith it goes from least significant bit to the highest significant
  bit. This is the same difference as array indexation and bit shifts.
 
  There is also the problem of byte order which affects the bit shift
  interpretation...
 
  I admit thet the current format description table is terribly
  underdocumented/confusing and likely broken in several ways. I wrote it
  to be able to code generate pixel format translation (which is wroking
  reasonably) and never expected people to use it for hardware drivers as
  well, although it is perfectly legitimate use.
 
  I have my own interpretation of these concepts, you and others hw driver
  writers have their own different interpretation. Furthermore in
  draw/translate/util modules there are some inconsistencies in these
  interpretations too. So I need to read the GL and DX10 specs very well,
  see how current drivers are using the descriptions, and come up with
  something that makes sense for everybody.
 
  So please hold on to your patch for a couple of days.
 
  I'd appreciate if the interested parties could take a good look to
  u_format.h comments, and summarize what they think the format semantics
  should be.
 
  Jose


 There are two inconsistencies in formats ATM:
 a) the notation used in PIPE_FORMAT_xxx, and
 b) the values in util_format_description::swizzles .


 There's a D3D9 - D3D10 format conversion table  in

 http://msdn.microsoft.com/en-us/library/ee415668(VS.85).aspx#Porting_Contenthttp://msdn.microsoft.com/en-us/library/ee415668%28VS.85%29.aspx#Porting_Content
 and D3D9 - GL format table in

 http://source.winehq.org/git/wine.git/?a=blob;f=dlls/wined3d/utils.c;hb=HEAD.

 D3D10 dropped all arithmetically encoded formats, and inverted the
 swizzle notation (e.g., D3DFMT_A2B10G10R10 and  DXGI_FORMAT_R10G10B10A2
 are equivalent).

 Gallium has to represent both kinds and mixes both notations (the
 MSB-LSB notation traditionally used for texture formats, the LSB-MSB
 for vertex declarations). So instead of the current inconsistencies,
 both on p_format.h and u_format.csv, I suggest we all normalize on one
 notation, lets say MSB-LSB for pixel/vertex formats.

 For example, the vertex format

   struct vertex {
  float x;
  float y;
   };

 should be described the format PIPE_FORMAT_G32R32_FLOAT (not the current
 PIPE_FORMAT_R32G32_FLOAT), which is equivalent:
 - D3D9's D3DFMT_G32R32F texture format
 - D3D9's D3DDECLTYPE_FLOAT2 vertex declaration type
 - D3D10's DXGI_FORMAT_R32G32_FLOAT
 - OpenGL's GL_RG32F format
 - OpenGL's glVertexAttrib2f attribute
 - OpenGL's glVertexPointer(2, GL_FLOAT, 0, 0);
 - etc.


 For the util_format_description::swizzles I suggest we always refer the
 swizzles from LSB-MSB.


 Leaving the interface change aside for now (Keith is away this week),
 unless somebody has a better suggestion I'll update at least the meaning
 of util_format_description::swizzles and u_format.csv to be consistent
 with this.

 Does everybody agree this is a sensible thing to do?


 Jose


--
Download Intel#174; Parallel Studio Eval
Try the new software tools for yourself. Speed

Re: [Mesa3d-dev] [PATCH] st/dri: don't enable EXT_draw_buffers2 by default

2010-02-22 Thread Marek Olšák
On Mon, Feb 22, 2010 at 4:23 PM, Brian Paul brian.e.p...@gmail.com wrote:

 On Sun, Feb 21, 2010 at 8:00 AM, Marek Olšák mar...@gmail.com wrote:
  Hi,
 
  the attached patch modifies st/dri to not enable EXT_draw_buffers2 by
  default because r300g and most probably even some other drivers can't
  support this extension. The drivers reporting support of
  PIPE_CAP_INDEP_BLEND_ENABLE are not affected by this patch.
 
  Please review.

 Hmm, I believe the extensions listed in dri_extensions.c are those
 that _may_ be supported by drivers.  But its the st_extensions.c code
 that queries the driver for various caps (such as
 PIPE_CAP_INDEP_BLEND_ENABLE) and then turns on the extension if
 applicable.


I stand corrected.



 Is GL_EXT_draw_buffers2 really being advertised by glxinfo with r300g?


Unfortunately yes, it is.

-Marek
--
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


[Mesa3d-dev] [PATCH] util: fix swizzles in the format table for 8-bits-per-channel formats

2010-02-21 Thread Marek Olšák
Hi José,

the attached patch fixes incorrect swizzles in u_format.csv. There are
basically just 2 drivers which depend on the swizzles in this table:
llvmpipe and r300g. Since r300g started supporting pretty much every texture
format except SCALED ones, a few regressions have showed up. This patch
resolves all issues I had, especially with the SRGB formats but I decided to
clean it up all. git log:

util: fix swizzles in the format table for 8-bits-per-channel formats

The 8-bits-per-channel formats having the same channel order had
completely
different swizzles, and at the same time, the same swizzles were used
for
completely different channel orders of 8bpc formats.

This made the whole table self-contradicting, caused headaches, and last
but not least, incorrent rendering for the drivers relying on these
swizzles.

I hope I got it right. I didn't make a special distinction between the array
and arith layouts. All I did was to make sure that if I grep e.g. A8R8G8B8,
I'll get the same swizzles and not entirely different ones.

Please review.

Best regards

Marek
From 53b1acea3cd5386d1f81a186f959d32b25c62f42 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sat, 20 Feb 2010 18:36:16 +0100
Subject: [PATCH 1/2] util: fix swizzles in the format table for 8-bits-per-channel formats

The 8-bits-per-channel formats having the same channel order had completely
different swizzles, and at the same time, the same swizzles were used for
completely different channel orders of 8bpc formats.

This made the whole table self-contradicting, caused headaches, and last
but not least, incorrent rendering for the drivers relying on these swizzles.
---
 src/gallium/auxiliary/util/u_format.csv |   44 +++---
 1 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv
index 01f7931..6139e16 100644
--- a/src/gallium/auxiliary/util/u_format.csv
+++ b/src/gallium/auxiliary/util/u_format.csv
@@ -67,37 +67,37 @@ PIPE_FORMAT_R8G8B8_UNORM  , array , 1, 1, un8 , un8 , un8 , , zyx1,
 PIPE_FORMAT_R8G8B8A8_UNORM, array , 1, 1, un8 , un8 , un8 , un8 , wzyx, rgb
 PIPE_FORMAT_R8G8B8X8_UNORM, array , 1, 1, un8 , un8 , un8 , un8 , wzy1, rgb
 PIPE_FORMAT_R8_USCALED, array , 1, 1, u8  , , , , x001, rgb
-PIPE_FORMAT_R8G8_USCALED  , array , 1, 1, u8  , u8  , , , xy01, rgb
-PIPE_FORMAT_R8G8B8_USCALED, array , 1, 1, u8  , u8  , u8  , , xyz1, rgb
-PIPE_FORMAT_R8G8B8A8_USCALED  , array , 1, 1, u8  , u8  , u8  , u8  , xyzw, rgb
-PIPE_FORMAT_R8G8B8X8_USCALED  , array , 1, 1, u8  , u8  , u8  , u8  , xyz1, rgb
+PIPE_FORMAT_R8G8_USCALED  , array , 1, 1, u8  , u8  , , , yx01, rgb
+PIPE_FORMAT_R8G8B8_USCALED, array , 1, 1, u8  , u8  , u8  , , zyx1, rgb
+PIPE_FORMAT_R8G8B8A8_USCALED  , array , 1, 1, u8  , u8  , u8  , u8  , wzyx, rgb
+PIPE_FORMAT_R8G8B8X8_USCALED  , array , 1, 1, u8  , u8  , u8  , u8  , wzy1, rgb
 PIPE_FORMAT_R8_SNORM  , array , 1, 1, sn8 , , , , x001, rgb
-PIPE_FORMAT_R8G8_SNORM, array , 1, 1, sn8 , sn8 , , , xy01, rgb
-PIPE_FORMAT_R8G8B8_SNORM  , array , 1, 1, sn8 , sn8 , sn8 , , xyz1, rgb
-PIPE_FORMAT_R8G8B8A8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , xyzw, rgb
-PIPE_FORMAT_R8G8B8X8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , xyz1, rgb
+PIPE_FORMAT_R8G8_SNORM, array , 1, 1, sn8 , sn8 , , , yx01, rgb
+PIPE_FORMAT_R8G8B8_SNORM  , array , 1, 1, sn8 , sn8 , sn8 , , zyx1, rgb
+PIPE_FORMAT_R8G8B8A8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , wzyx, rgb
+PIPE_FORMAT_R8G8B8X8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , wzy1, rgb
 PIPE_FORMAT_B6G5R5_SNORM  , arith , 1, 1, sn5 , sn5 , sn6 , , xyz1, rgb
-PIPE_FORMAT_A8B8G8R8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , wzyx, rgb
-PIPE_FORMAT_X8B8G8R8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , wzy1, rgb
+PIPE_FORMAT_A8B8G8R8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , xyzw, rgb
+PIPE_FORMAT_X8B8G8R8_SNORM, array , 1, 1, sn8 , sn8 , sn8 , sn8 , xyz1, rgb
 PIPE_FORMAT_R8_SSCALED, array , 1, 1, s8  , , , , x001, rgb
-PIPE_FORMAT_R8G8_SSCALED  , array , 1, 1, s8  , s8  , , , xy01, rgb
-PIPE_FORMAT_R8G8B8_SSCALED, array , 1, 1, s8  , s8  , s8  , , xyz1, rgb
-PIPE_FORMAT_R8G8B8A8_SSCALED  , array , 1, 1, s8  , s8  , s8  , s8  , xyzw, rgb
-PIPE_FORMAT_R8G8B8X8_SSCALED  , array , 1, 1, s8  , s8  , s8  , s8  , xyz1, rgb
+PIPE_FORMAT_R8G8_SSCALED  , array , 1, 1, s8  , s8  , , , yx01, rgb
+PIPE_FORMAT_R8G8B8_SSCALED, array , 1, 1, s8  , s8  , s8  , , zyx1, rgb
+PIPE_FORMAT_R8G8B8A8_SSCALED  , array , 1, 1, s8  , s8  , s8  , s8  , wzyx, rgb

[Mesa3d-dev] [PATCH] st/dri: don't enable EXT_draw_buffers2 by default

2010-02-21 Thread Marek Olšák
Hi,

the attached patch modifies st/dri to not enable EXT_draw_buffers2 by
default because r300g and most probably even some other drivers can't
support this extension. The drivers reporting support of
PIPE_CAP_INDEP_BLEND_ENABLE are not affected by this patch.

Please review.

Marek
From ddda2c19b74780263f848ffafe10809bd6385d01 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sun, 21 Feb 2010 01:27:09 +0100
Subject: [PATCH 2/2] st/dri: don't enable EXT_draw_buffers2 by default

---
 src/gallium/state_trackers/dri/dri_extensions.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/dri/dri_extensions.c b/src/gallium/state_trackers/dri/dri_extensions.c
index 1259813..7f8ceef 100644
--- a/src/gallium/state_trackers/dri/dri_extensions.c
+++ b/src/gallium/state_trackers/dri/dri_extensions.c
@@ -99,7 +99,6 @@ static const struct dri_extension card_extensions[] = {
{GL_EXT_blend_minmax, GL_EXT_blend_minmax_functions},
{GL_EXT_blend_subtract, NULL},
{GL_EXT_cull_vertex, GL_EXT_cull_vertex_functions},
-   {GL_EXT_draw_buffers2, GL_EXT_draw_buffers2_functions},
{GL_EXT_fog_coord, GL_EXT_fog_coord_functions},
{GL_EXT_framebuffer_object, GL_EXT_framebuffer_object_functions},
{GL_EXT_multi_draw_arrays, GL_EXT_multi_draw_arrays_functions},
-- 
1.6.3.3

--
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


Re: [Mesa3d-dev] Mesa (master): r300g: remove L8_UNORM from colorbuffer formats

2010-02-19 Thread Marek Olšák
I still think st/xorg should use R8, which is well defined as to which
component to store, rather than L8. That's also the reason L8 is not
renderable in OpenGL.


2010/2/19 Corbin Simpson mostawesomed...@gmail.com

 Yeah, I would have nak'd this. Will revert when I get home.

 Posting from a mobile, pardon my terseness. ~ C.

 On Feb 19, 2010 12:56 AM, Michel Dänzer mic...@daenzer.net wrote:

 On Thu, 2010-02-18 at 19:24 -0800, Marek Olk wrote:
  Module: Mesa
  Branch: master
  Commit: fc427d23439a2702068209957f08990ea29fe21b
  URL:
 http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc427d23439a2702068209957f08990ea29fe21b
 
  Author: Marek Olšák mar...@gmail.com
  Date:   Fri Feb 19 04:23:06 2010 +0100
 
  r300g: remove L8_UNORM from colorbuffer formats
 
  Not renderable in OpenGL anyway.

 The Xorg state tracker uses it though.


 --
 Earthling Michel Dänzer   |http://www.vmware.com
 Libre software enthusiast |  Debian, X and DRI developer


 --
 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


--
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


[Mesa3d-dev] piglit statistics of swrast, softpipe, r300c, and r300g

2010-02-10 Thread Marek Olšák
Hi,

I noticed that quite a lot of piglit tests fail with swrast and softpipe. I
was asked for sending my stats to ML so that people working on the software
rasterizers are aware of that (I guess they already know). Please see this
page:

http://storm.unas.cz/drivers_compared/

The parser tests and some pretty long tests are not included. The ratio
pass/all is highest for r300c and lowest for more feature-rich r300g but
swrast is worse than softpipe which is a shame.

Tested with git master on 6th February 2010.
r300g stats are the only ones not tested with pure git master but with my
own additional patches in my private (localhost) repo.

Best regards

Marek
--
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH 0/6] piglit relax precision requirements

2010-02-10 Thread Marek Olšák
Eric,

yes, it does.

I decided to resolve my precision issues using glDisable(GL_DITHER). The two
patches disable dithering, the former in piglit and the latter in glean. I
see no point in separating them to smaller ones but I can do that if you
like. Since it's tricky to test dithering anyway, disabling it is
preferable. Could you please push the first one if there are no objections?

Brian,

Could you please push the second one into glean if there are no objections?

-Marek

On Thu, Feb 11, 2010 at 1:42 AM, Eric Anholt e...@anholt.net wrote:

 On Sun, 7 Feb 2010 05:38:01 +0100, Marek Olšák mar...@gmail.com wrote:
  The attached patch series relaxes precision requirements for 6 tests to
 pass
  on r300g.
 
  Please review/push.

 I just pushed a change to do the r300relax type path always on cubemap
 and fbo-cubemap.  It sounds like the decision was that the dithering at
 32bpp was doing strange things and the solution was to just disable it
 in that case -- right?  If so, does that leave any patches still to be
 committed for the piglit side of things?


From dc274f1caf050f23f8489f316c52621df679e87b Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Wed, 10 Feb 2010 02:00:17 +0100
Subject: [PATCH 1/4] copytexsubimage,fbo-pbo-readpixels-small,tex3d: disable dithering

---
 tests/fbo/fbo-pbo-readpixels-small.c |2 ++
 tests/texturing/copytexsubimage.c|2 ++
 tests/texturing/tex3d.c  |2 ++
 3 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/tests/fbo/fbo-pbo-readpixels-small.c b/tests/fbo/fbo-pbo-readpixels-small.c
index 09740d2..1f50700 100644
--- a/tests/fbo/fbo-pbo-readpixels-small.c
+++ b/tests/fbo/fbo-pbo-readpixels-small.c
@@ -161,4 +161,6 @@ void piglit_init(int argc, char **argv)
 {
 	piglit_require_extension(GL_EXT_framebuffer_object);
 	piglit_require_extension(GL_ARB_pixel_buffer_object);
+
+	glDisable(GL_DITHER);
 }
diff --git a/tests/texturing/copytexsubimage.c b/tests/texturing/copytexsubimage.c
index 481c731..2e79174 100644
--- a/tests/texturing/copytexsubimage.c
+++ b/tests/texturing/copytexsubimage.c
@@ -264,6 +264,8 @@ static void display(void)
 
 static void init(void)
 {
+	glDisable(GL_DITHER);
+
 	glMatrixMode( GL_PROJECTION );
 	glPushMatrix();
 	glLoadIdentity();
diff --git a/tests/texturing/tex3d.c b/tests/texturing/tex3d.c
index c3854f9..1647d82 100644
--- a/tests/texturing/tex3d.c
+++ b/tests/texturing/tex3d.c
@@ -226,6 +226,8 @@ piglit_init(int argc, char **argv)
 
 	glutReshapeFunc(Reshape);
 
+	glDisable(GL_DITHER);
+
 	glGenTextures(1, Texture);
 	glBindTexture(GL_TEXTURE_3D, Texture);
 	Reshape(piglit_width, piglit_height);
-- 
1.6.3.3

From 7e9a5849689b78f0ac0275e9fde6b4b78f1aab1d Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Thu, 11 Feb 2010 00:16:56 +0100
Subject: [PATCH 4/4] glean/clipFlat,fbo,texture_srgb: disable dithering

---
 tests/glean/tclipflat.cpp |1 +
 tests/glean/tfbo.cpp  |2 ++
 tests/glean/ttexture_srgb.cpp |2 ++
 3 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/tests/glean/tclipflat.cpp b/tests/glean/tclipflat.cpp
index a2798c0..db5726d 100644
--- a/tests/glean/tclipflat.cpp
+++ b/tests/glean/tclipflat.cpp
@@ -200,6 +200,7 @@ ClipFlatTest::setup(void)
glFrontFace(GL_CW);
glCullFace(GL_FRONT);
glEnable(GL_CULL_FACE);
+   glDisable(GL_DITHER);
 
provoking_vertex_first = GLUtils::haveExtension(GL_EXT_provoking_vertex);
 
diff --git a/tests/glean/tfbo.cpp b/tests/glean/tfbo.cpp
index d76fc2d..fda1da0 100644
--- a/tests/glean/tfbo.cpp
+++ b/tests/glean/tfbo.cpp
@@ -85,6 +85,8 @@ FBOTest::setup(void)
 glDrawBuffer(GL_FRONT);
 glReadBuffer(GL_FRONT);
 
+glDisable(GL_DITHER);
+
 // compute error tolerances (may need fine-tuning)
 int bufferBits[5];
 
diff --git a/tests/glean/ttexture_srgb.cpp b/tests/glean/ttexture_srgb.cpp
index e27081b..7a85a3d 100644
--- a/tests/glean/ttexture_srgb.cpp
+++ b/tests/glean/ttexture_srgb.cpp
@@ -172,6 +172,8 @@ TextureSRGBTest::testTextureFormat(GLenum intFormat, GLint components,
 	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
 	glEnable(GL_TEXTURE_2D);
 
+	glDisable(GL_DITHER);
+
 	glDrawBuffer(GL_FRONT);
 	glReadBuffer(GL_FRONT);
 
-- 
1.6.3.3

--
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH 0/6] piglit relax precision requirements

2010-02-08 Thread Marek Olšák
On Mon, Feb 8, 2010 at 6:48 PM, Eric Anholt e...@anholt.net wrote:

 On Sun, 7 Feb 2010 05:38:01 +0100, Marek Olšák mar...@gmail.com wrote:
  The attached patch series relaxes precision requirements for 6 tests to
 pass
  on r300g.
 
  Please review/push.

 Have you tried getting the glean components pushed to the glean project?
 I'd rather not carry functional differences from glean where we don't
 have to.

I was under the impression that glean has been merged into piglit. Is there
any reason to keep it separate?



 Intel has issues on the cubemap tests at 2x2 and lower as well.  I'm
 wondering -- are closed drivers the same in this respect?

Unfortunately yes, they are.
--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] Grab bag of random questions (whoo)

2010-02-06 Thread Marek Olšák
On Sun, Jan 31, 2010 at 1:37 AM, Roland Scheidegger srol...@vmware.comwrote:


7) Is there more information on the dual-source blend modes? I'm not
sure if I can do them; might have to bug AMD for the register values.

 I bet R300 can't do these modes. It's only a Direct3D 10.0 feature, not
 present in Direct3D 10.1. MS must have a good reason to remove it.

 Where did you see that it's removed in 10.1?
 Here's a list of blend ops in d3d11:
 http://msdn.microsoft.com/en-us/library/ee416042(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ee416042%28VS.85%29.aspx
 Note this feature can be present (via cap bits in some limited form) in
 D3D9Ex too, and I thought windows actually used it for (antialiased) text
 rendering (but don't quote me on that).

You're right. My source was incorrect (OpenGL.org forums).
--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] Grab bag of random questions (whoo)

2010-01-30 Thread Marek Olšák
Hi Corbin,

On Sat, Jan 30, 2010 at 1:06 PM, Corbin Simpson
mostawesomed...@gmail.comwrote:

 5) ... Also, on the topic of framebuffers, is
 it okay to refuse to render if no MRTs or Z buffer are present?

Do you mean color-only and depth-only rendering? This is a must. Shadow
mapping heavily relies on depth-only rendering. OTOH post-processing effects
like HDR, bloom, depth of field, later parts of deferred-rendering methods,
and many other advanced methods require color-only rendering. The FBO
extensions allows either no color attachment or no depth-stencil attachment.
I know there are inter-CSO depedencies in r300g because of this, but I don't
see any other way around it.

6) GL_ARB_shadow_ambient and texture compare-fail values. A comment in
 the fragment constants reads, Since Gallium doesn't support
 GL_ARB_shadow_ambient, this is always (0,0,0,0), right?

I think the extension could be added to Gallium since the r300 compiler can
generate code for it.

Another
 comment reads, Gallium doesn't provide us with any information
 regarding this mode, so we are screwed. I'm setting 0 = LUMINANCE,
 above the texture compare modes. I don't really like that section of
 code, but it probably can't get cleaner, right?

Even though this is a rarely used feature in OpenGL nowadays, it should get
fixed if we want to be GL-compliant. That means adding depth texture modes
in pipe_sampler_state and setting them in the Mesa state tracker. The R300
compiler can already generate code for these modes as well.

7) Is there more information on the dual-source blend modes? I'm not
 sure if I can do them; might have to bug AMD for the register values.

I bet R300 can't do these modes. It's only a Direct3D 10.0 feature, not
present in Direct3D 10.1. MS must have a good reason to remove it.

BTW I looked at some of your patches and r3xx-r5xx cards don't even support
separate blend enables, therefore the cap should be 0. Or are you going to
emulate this using independent color channel masks and two rendering passes?
That could be done in the state tracker. Also, I think the indep. color
masks are r5xx-only.

Cheers.

Marek
--
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH 0/2] st/mesa: EXT_framebuffer_multisample and CopyTex[Sub]Image acceleration

2010-01-19 Thread Marek Olšák
Hi Brian,

On Mon, Jan 18, 2010 at 6:18 PM, Brian Paul bri...@vmware.com wrote:

 The second patch enables hardware-accelerated CopyTex[Sub]Image in cases
 when the RGB and RGBA destination formats are used regardless of source
 formats. The idea is that if the colorbuffer is of RGB or RGBA format, the
 format conversion for copying between two different surfaces is basically
 done in texture units (using swizzles), therefore there is no reason to use
 software fallback. Without this patch, openarena fallbacks to software when
 bloom is enabled.


 Did you read the comment at line 1498?  I remember specifically adding this
 check to fix some issues when copying an RGBA framebuffer to a RGB texture.


The behavior of copying an RGBA framebuffer to an RGB texture is not changed
by this patch, it is only generalized to support other formats. I agree the
diff file is a little bit confusing. See the code before:

   else if (srcFormat == GL_RGBA 
dstLogicalFormat == GL_RGB) {
  /* Add a single special case to cope with RGBA-RGB transfers,
   * setting A to 1.0 to cope with situations where the RGB
   * destination is actually stored as RGBA.
   */
  return TGSI_WRITEMASK_XYZ; /* A == 1.0 */
   }
   else {

The code after:

   else if (dstLogicalFormat == GL_RGBA) {
  /* In theory, any format can be converted to GL_RGBA.
   */
  return TGSI_WRITEMASK_XYZW;
   }
   else if (dstLogicalFormat == GL_RGB) {
  /* Add a special case to cope with transfers into RGB,
   * setting A to 1.0 to cope with situations where the RGB
   * destination is actually stored as RGBA.
   */
  return TGSI_WRITEMASK_XYZ; /* A == 1.0 */
   }
   else {

Are you ok with that?

BTW could you please push the first patch (and the second one if you agree)?
My account hasn't been created yet. Thank you.

Best regards.

Marek
--
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH 0/2] st/mesa: EXT_framebuffer_multisample and CopyTex[Sub]Image acceleration

2010-01-19 Thread Marek Olšák
Yes, your patch solves my problem. Thanks.

Marek

On Wed, Jan 20, 2010 at 2:00 AM, Brian Paul bri...@vmware.com wrote:

 Marek Olšák wrote:

 Hi Brian,


 On Mon, Jan 18, 2010 at 6:18 PM, Brian Paul bri...@vmware.com mailto:
 bri...@vmware.com wrote:

The second patch enables hardware-accelerated CopyTex[Sub]Image
in cases when the RGB and RGBA destination formats are used
regardless of source formats. The idea is that if the
colorbuffer is of RGB or RGBA format, the format conversion for
copying between two different surfaces is basically done in
texture units (using swizzles), therefore there is no reason to
use software fallback. Without this patch, openarena fallbacks
to software when bloom is enabled.


Did you read the comment at line 1498?  I remember specifically
adding this check to fix some issues when copying an RGBA
framebuffer to a RGB texture.


 The behavior of copying an RGBA framebuffer to an RGB texture is not
 changed by this patch, it is only generalized to support other formats. I
 agree the diff file is a little bit confusing. See the code before:

   else if (srcFormat == GL_RGBA 
dstLogicalFormat == GL_RGB) {
  /* Add a single special case to cope with RGBA-RGB transfers,
   * setting A to 1.0 to cope with situations where the RGB
   * destination is actually stored as RGBA.
   */
  return TGSI_WRITEMASK_XYZ; /* A == 1.0 */
   }
   else {

 The code after:

   else if (dstLogicalFormat == GL_RGBA) {
  /* In theory, any format can be converted to GL_RGBA.
   */
  return TGSI_WRITEMASK_XYZW;
   }
   else if (dstLogicalFormat == GL_RGB) {
  /* Add a special case to cope with transfers into RGB,
   * setting A to 1.0 to cope with situations where the RGB
   * destination is actually stored as RGBA.
   */
  return TGSI_WRITEMASK_XYZ; /* A == 1.0 */
   }
   else {

 Are you ok with that?


 No.  But don't feel bad, I think my original code is broken too. :(

 See the attached patch.  It has a bunch of comments that explain what's
 going on.

 If you can test this and it seems to solve your problem, I'll commit it.



  BTW could you please push the first patch (and the second one if you
 agree)? My account hasn't been created yet. Thank you.


 Yes, done.

 -Brian

--
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH] glsl: put varyings in texcoord slots

2010-01-17 Thread Marek Olšák
Hi Luca,

I think this is not necessary and fixing the rasterizer setup in the driver
would by better than fixing the state tracker.

In r300g, we dynamically allocate rasterizer units based on vertex shader
outputs. If the vertex shader uses slots 1, 5, 20, 100, the driver maps
them to units 1,2,3,4.

Marek

On Sun, Jan 17, 2010 at 8:05 PM, Luca Barbieri l...@luca-barbieri.comwrote:

 The current GLSL linker puts varyings in slots starting from *_VAR0,
 leaving the *_TEX slots used only for gl_TexCoord[i].

 This results in TGSI programs that start using generic input/outputs
 with index 10.

 Unfortunately, some drivers (e.g. pre-nv50 nouveau) support only 8
 vertex program outputs, and this causes GLSL to not work at all.
 On other cards, GLSL works, but 8 varying slots are lost.

 This patch solves the problem by modifying the GLSL linker to allocate
 varyings in texcoord slots that neither vertex nor fragment shader uses.

 Note that the GLSL linker is the only place where this can be done,
 because it is the only place that sees both the vertex and fragment
 programs at once.

 The only known issue is that if the GLSL program has an indirect
 reference to gl_TexCoord[i], no varyings will be put in texcoord slots.
 This may or may not be desirable.

 This makes (a subset of) GLSL work on NV30/NV40 and improves the
 chances of complex programs working on other cards.

 Signed-off-by: Luca Barbieri l...@luca-barbieri.com
 ---
  src/mesa/shader/slang/slang_link.c |   62
 ++-
  1 files changed, 46 insertions(+), 16 deletions(-)

 diff --git a/src/mesa/shader/slang/slang_link.c
 b/src/mesa/shader/slang/slang_link.c
 index ed27821..889a811 100644
 --- a/src/mesa/shader/slang/slang_link.c
 +++ b/src/mesa/shader/slang/slang_link.c
 @@ -99,9 +99,9 @@ bits_agree(GLbitfield flags1, GLbitfield flags2,
 GLbitfield bit)
  */
  static GLboolean
  link_varying_vars(GLcontext *ctx,
 -  struct gl_shader_program *shProg, struct gl_program
 *prog)
 +  struct gl_shader_program *shProg, struct gl_program
 *prog, GLbyte* varying_slots)
  {
 -   GLuint *map, i, firstVarying, newFile;
 +   GLuint *map, i, firstTex, firstVarying, newFile;
GLbitfield *inOutFlags;

map = (GLuint *) _mesa_malloc(prog-Varying-NumParameters *
 sizeof(GLuint));
 @@ -114,13 +114,15 @@ link_varying_vars(GLcontext *ctx,
 * Also, replace File=PROGRAM_VARYING with File=PROGRAM_INPUT/OUTPUT.
 */
if (prog-Target == GL_VERTEX_PROGRAM_ARB) {
 -  firstVarying = VERT_RESULT_VAR0;
 +  firstTex = VERT_RESULT_TEX0;
 +  firstVarying = VERT_RESULT_VAR0 - 8;
   newFile = PROGRAM_OUTPUT;
   inOutFlags = prog-OutputFlags;
}
else {
   assert(prog-Target == GL_FRAGMENT_PROGRAM_ARB);
 -  firstVarying = FRAG_ATTRIB_VAR0;
 +  firstTex = FRAG_ATTRIB_TEX0;
 +  firstVarying = FRAG_ATTRIB_VAR0 - 8;
   newFile = PROGRAM_INPUT;
   inOutFlags = prog-InputFlags;
}
 @@ -173,9 +175,12 @@ link_varying_vars(GLcontext *ctx,
   {
  GLint sz = var-Size;
  while (sz  0) {
 -inOutFlags[firstVarying + j] = var-Flags;
 +int v = varying_slots[j];
 +v += ((v  8) ? firstTex : firstVarying);
 +inOutFlags[v] = var-Flags;
 /*printf(Link varying from %d to %d\n, i, j);*/
 -map[i++] = j++;
 +map[i++] = v;
 +++j;
 sz -= 4;
  }
  i--; /* go back one */
 @@ -192,13 +197,13 @@ link_varying_vars(GLcontext *ctx,

   if (inst-DstReg.File == PROGRAM_VARYING) {
  inst-DstReg.File = newFile;
 - inst-DstReg.Index = map[ inst-DstReg.Index ] + firstVarying;
 + inst-DstReg.Index = map[ inst-DstReg.Index ];
   }

   for (j = 0; j  3; j++) {
  if (inst-SrcReg[j].File == PROGRAM_VARYING) {
 inst-SrcReg[j].File = newFile;
 -inst-SrcReg[j].Index = map[ inst-SrcReg[j].Index ] +
 firstVarying;
 +inst-SrcReg[j].Index = map[ inst-SrcReg[j].Index ];
  }
   }
}
 @@ -790,14 +795,39 @@ _slang_link(GLcontext *ctx,
   ASSERT(shProg-FragmentProgram-Base.RefCount == 1);
}

 -   /* link varying vars */
 -   if (shProg-VertexProgram) {
 -  if (!link_varying_vars(ctx, shProg, shProg-VertexProgram-Base))
 - return;
 -   }
 -   if (shProg-FragmentProgram) {
 -  if (!link_varying_vars(ctx, shProg, shProg-FragmentProgram-Base))
 - return;
 +   {
 +  GLuint texcoord_mask = 0;
 +  GLbyte varying_slots[MAX_VARYING];
 +  GLuint next_varying = 0;
 +
 +  if(shProg-VertexProgram)
 +  {
 +_slang_update_inputs_outputs(shProg-VertexProgram-Base);
 +texcoord_mask |= (shProg-VertexProgram-Base.OutputsWritten
  VERT_RESULT_TEX0)  0xff;
 +  }
 +  if(shProg-FragmentProgram)
 +  {
 +_slang_update_inputs_outputs(shProg-FragmentProgram-Base);
 +texcoord_mask |= 

Re: [Mesa3d-dev] Running with scissors

2010-01-11 Thread Marek Olšák
It was NOT intended to be a performance optimization, it's a fix. I added it
because kernel would have rejected the command stream if everything had been
culled by scissoring.

Marek

On Mon, Jan 11, 2010 at 4:39 PM, Corbin Simpson
mostawesomed...@gmail.comwrote:

 Pardon the subject pun, it was totally necessary at this early hour. :3

 If the scissor test is enabled, and the scissors obscure the entire
 framebuffer, should drawing calls still be run? Talking on IRC, it
 seems like there's a valid use-case for performance testing, and I'm
 of the mind that anybody that deliberately sets up the pipeline and
 scissor that way probably intended for it.

 I just want a clarification so I know whether I should revert
 bfcafbe15dc, and also I wanted to document it.

 ~ C.

 --
 Only fools are easily impressed by what is only
 barely beyond their reach. ~ Unknown

 Corbin Simpson
 mostawesomed...@gmail.com


 --
 This SF.Net email is sponsored by the Verizon Developer Community
 Take advantage of Verizon's best-in-class app development support
 A streamlined, 14 day to market process makes app distribution fast and
 easy
 Join now and get one step closer to millions of Verizon customers
 http://p.sf.net/sfu/verizon-dev2dev
 ___
 Mesa3d-dev mailing list
 Mesa3d-dev@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev ___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] geometry shading patches

2009-12-25 Thread Marek Olšák
Zack,

to be honest, Direct3D 11 can report geometry shaders are not supported
through so-called feature levels. There are six levels to my knowledge (9_1,
9_2, 9_3, 10_0, 10_1, 11_0). i915 is 9_1, R300 is 9_2, R500 is 9_3, and so
on. Direct3D 11 is indeed accelerated on those pieces of hardware and,
though the feature set is a little limited, the hardware support is covered
well. Is Direct3D 11 generations past because of that? No, it isn't.

Let's say I have R500 and I want to use geometry shaders in Direct3D 11.
What are my options? I can't use my R500 and I must manually switch to the
device called WARP (Windows Advanced Rasterization Platform), which reports
the 10_1 feature level. This kind of device is very similar to llvmpipe in
Gallium.

In the past you said we should do it the same way as Direct3D, so why should
Gallium be different now? Moreover, if applications decide to use geometry
shaders to emulate point sprites or wide lines, we'll be screwed. If they
decide to do texture fetches in geometry shaders, we'll be screwed even more
because we'll have to move textures out of VRAM and that will be a total
performance killer. So I agree with Corbin that the CAP for geometry shaders
should be added and we should let drivers decide what's best for them.

Marek

On Fri, Dec 25, 2009 at 5:11 PM, Zack Rusin za...@vmware.com wrote:

 On Friday 25 December 2009 07:03:02 Corbin Simpson wrote:
  Isn't this incredibly at odds with our previous discussion, in which
  we generally agreed to not advertise support for unaccelerated things?

 No, it's really not. We don't have caps for core features, e.g we don't
 have
 caps for vertex shaders and this goes hand in hand with that. Geometry
 shaders
 are optional in the pipeline meaning that unlike fragment shaders they can
 be
 absent in which case the pipeline behaves just like it would if the api
 didn't
 have geometry shaders exposed at all i.e. vertex shader outputs go directly
 do
 the fragment shader. So for games/apps that don't use geometry shaders this
 won't matter at all. And games/app that are so new that they actually check
 for geometry shaders will already be slow on i915 and r300 not because of
 geometry shaders, but because they're running on it on i915 or r300 =)

 Not to mention that this is not a fringe feature that will be present only
 in
 super high-end and futuristic hardware.

 All in all it's a bit like fixed-point hardware - programmable hardware is
 not
 a cap because it's what Gallium models. We can't just keep the Gallium
 interface at i915 level and mark everything above that as a cap, it'd be
 silly
 given that we're generations past that now.

 z


 --
 This SF.Net email is sponsored by the Verizon Developer Community
 Take advantage of Verizon's best-in-class app development support
 A streamlined, 14 day to market process makes app distribution fast and
 easy
 Join now and get one step closer to millions of Verizon customers
 http://p.sf.net/sfu/verizon-dev2dev
 ___
 Mesa3d-dev mailing list
 Mesa3d-dev@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev ___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] Yet more r300g fear and loathing...

2009-12-22 Thread Marek Olšák
I am not very fond of the idea having another layer of function-call
indirections and state management between a driver and a state tracker. I
kinda succeed in making the failover driver work with some hacks and
limitations (e.g. no textures). Even if I use it as a simple pass-through
driver, it results in 40% performance drop in glxgears and 10% performance
drop in progs/perf/draw_overhead. The driver overhead is a real issue here
and it might be much higher with a full-blown fallback driver, and nobody
wants the performance to suck so much. Also I'd like the applications which
don't hit any fallback path to not be affected by this additional overhead,
so putting a fallback driver on top of a real driver should be deferred if
possible which makes this whole thing non-trivial.

In the meantime I think we could lie that NPOTs are supported and implement
only the functionality state trackers really want (2D textures with the
repeat wrap mode and bilinear filtering done in the shader [0]). That would
make all state trackers happy except the Mesa one, but doing software
fallback instead would not make it happy either. We're talking about turning
unavailable features to unusable ones, is it worth it?

[0] I think I could do it if someone tells me how to easily replace TEX
instructions with my own code in TGSI.

Marek

On Mon, Dec 21, 2009 at 6:57 PM, Jakob Bornecrantz ja...@vmware.com wrote:

 To be honest I'm way more in favor off doing 4 and/or with a env
 variable to switch between incorrect rendering and software fallbacks,
 but maybe we can do 3 but with another solution.

 At some point the Gallium interface was a expression of what hardware
 could do not a interface to program against. Another guiding rule was
 that it should be easy to write a pipe driver, putting all the hard
 stuff in the state tracker.

 Now we are starting to see a lot of state trackers and its becoming
 harder and harder to implement all the work around for the different
 caps. Even tho the fallback/workaround code is in a module that can be
 shared its still a pain to integrate and a lot of boiler plate code
 needs to be written and maintained.

 Maybe we should revive the fallback module or make a another module
 like it that takes care of all these shortcomings of the hardware. But
 it is optional to the state tracker. That it is optional to the state
 tracker is the big thing.

 So an usecase:
 The mesa state tracker takes a look at the pipe caps of the r300
 driver and notices something bad no CAP_NPOT but CAP_TEXRECT. It then
 wraps the pipe driver with the fallback pipe driver and uses that. And
 all the NPOT badness is hidden from the state tracker.

 The code to switch between software and and hardwware rendering only
 needs to be written once this includes the code to detect IF we should
 switch to software and code to select between different modes of
 handling of different type of errors, like FALLBACK_CONFORM,
 FALLBACK_BAD_RENDERING.

 The good part with this is that the fallback module is optional and
 for state trackers that can handle some of the possible shortcomings
 or doesn't need all of the functionality don't need to wrap the pipe
 driver.

 We get clean drivers, clean state tracker but a heap of code in the
 fallback module...

 I could also see the blitter module getting sucked into the fallback
 module.

 Comments please?

 Cheers Jakob.


 --
 This SF.Net email is sponsored by the Verizon Developer Community
 Take advantage of Verizon's best-in-class app development support
 A streamlined, 14 day to market process makes app distribution fast and
 easy
 Join now and get one step closer to millions of Verizon customers
 http://p.sf.net/sfu/verizon-dev2dev
 ___
 Mesa3d-dev mailing list
 Mesa3d-dev@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev ___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


[Mesa3d-dev] Mystery of u_format.csv

2009-12-21 Thread Marek Olšák
Hi,

I noticed that gallium/auxiliary/util/u_format.csv contains some weird
swizzling, for example see this:

$ grep zyxw u_format.csv
PIPE_FORMAT_A8R8G8B8_UNORM, arith , 1, 1, un8 , un8 , un8 , un8 ,
zyxw, rgb
PIPE_FORMAT_A1R5G5B5_UNORM, arith , 1, 1, un5 , un5 , un5 , un1 ,
zyxw, rgb
PIPE_FORMAT_A4R4G4B4_UNORM, arith , 1, 1, un4 , un4 , un4 , un4 ,
zyxw, rgb
PIPE_FORMAT_A8B8G8R8_SNORM, arith , 1, 1, sn8 , sn8 , sn8 , sn8 ,
zyxw, rgb
PIPE_FORMAT_B8G8R8A8_SRGB , arith , 1, 1, u8  , u8  , u8  , u8  ,
zyxw, srgb

It's hard to believe that ARGB, ABGR, and BGRA have the same swizzling.
Let's continue our journey:

$ grep A8R8G8B8 u_format.csv
PIPE_FORMAT_A8R8G8B8_UNORM, arith , 1, 1, un8 , un8 , un8 , un8 ,
zyxw, rgb
PIPE_FORMAT_A8R8G8B8_SRGB , arith , 1, 1, u8  , u8  , u8  , u8  ,
wxyz, srgb

Same formats, different swizzling? Also:

$ grep B8G8R8A8 u_format.csv
PIPE_FORMAT_B8G8R8A8_UNORM, arith , 1, 1, un8 , un8 , un8 , un8 ,
yzwx, rgb
PIPE_FORMAT_B8G8R8A8_SRGB , arith , 1, 1, u8  , u8  , u8  , u8  ,
zyxw, srgb

Same formats, different swizzling? I don't really get it. And there's much
more cases like these. Could someone tell me what the intended order of
channels should be? (or possibly propose a fix) The meaning of the whole
table is self-contradictory and it's definitely the source of some r300g
bugs.

Marek
--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev ___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


[Mesa3d-dev] [PATCH] gallium: add PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION

2009-12-17 Thread Marek Olšák
Hi,

GL_ARB_provoking_vertex states that quads are not required to abide
the provoking vertex convention, and the actual hardware and/or driver
behavior can be queried with
GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION.

I'd like to add a new PIPE_CAP_* to query for this capability in
Gallium, as it appears R3xx-R5xx hardware doesn't support the first
vertex convention for quads and I'd like the driver to behave
correctly. Fortunately, other primitive types are supported.

I decided to use the name quads follow flatshade_first convention
instead of provoking vertex convention because the actual state
variable in pipe_rasterizer_state is called flatshade_first.

The attached patch:
- adds PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION
- adds the query in the Mesa state tracker
- and updates softpipe and llvmpipe to return 1 when this cap is
queried, and r300g to explicitly return 0

Please review/push.

Cheers.

Marek
From bbf279f81e03a6872507cbf533b382748c4ae015 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Fri, 18 Dec 2009 05:10:27 +0100
Subject: [PATCH] gallium: add PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION

---
 src/gallium/drivers/llvmpipe/lp_screen.c |2 ++
 src/gallium/drivers/r300/r300_screen.c   |2 ++
 src/gallium/drivers/softpipe/sp_screen.c |2 ++
 src/gallium/include/pipe/p_defines.h |1 +
 src/mesa/state_tracker/st_extensions.c   |4 
 5 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
index 9b47415..fa786f9 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -110,6 +110,8 @@ llvmpipe_get_param(struct pipe_screen *screen, int param)
   return 1;
case PIPE_CAP_BLEND_EQUATION_SEPARATE:
   return 1;
+   case PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION:
+  return 1;
default:
   return 0;
}
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index c2ea9b6..0b75ecf 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -138,6 +138,8 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
 return 0;
 case PIPE_CAP_BLEND_EQUATION_SEPARATE:
 return 1;
+case PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION:
+return 0;
 default:
 debug_printf(r300: Implementation error: Bad param %d\n,
 param);
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index bd3532d..510150b 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -91,6 +91,8 @@ softpipe_get_param(struct pipe_screen *screen, int param)
   return 1;
case PIPE_CAP_BLEND_EQUATION_SEPARATE:
   return 1;
+   case PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION:
+  return 1;
default:
   return 0;
}
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index fe1390d..6a37893 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -393,6 +393,7 @@ enum pipe_transfer_usage {
 #define PIPE_CAP_MAX_PREDICATE_REGISTERS 30
 #define PIPE_CAP_MAX_COMBINED_SAMPLERS   31  /* Maximum texture image units accessible from vertex
  and fragment shaders combined */
+#define PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION 32
 
 
 /**
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index ef3cbc5..db3380b 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -125,6 +125,10 @@ void st_init_limits(struct st_context *st)
   = CLAMP(screen-get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
   1, MAX_DRAW_BUFFERS);
 
+   c-QuadsFollowProvokingVertexConvention
+  = CLAMP(screen-get_param(screen, PIPE_CAP_QUADS_FOLLOW_FLATSHADE_FIRST_CONVENTION),
+  0, 1);
+
/* Is TGSI_OPCODE_CONT supported? */
/* XXX separate query for early function return? */
st-ctx-Shader.EmitContReturn =
-- 
1.6.3.3

--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev ___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] Mesa (master): r300g: flush CS if a buffer being deleted is referenced by it

2009-12-16 Thread Marek Olšák
2009/12/16 Michel Dänzer mic...@daenzer.net:
 On Tue, 2009-12-15 at 19:04 -0800, Corbin Simpson wrote:
 Module: Mesa
 Branch: master
 Commit: 417ce06306962a9355cbb35cefcdea1951b0ce85
 URL:    
 http://cgit.freedesktop.org/mesa/mesa/commit/?id=417ce06306962a9355cbb35cefcdea1951b0ce85

 Author: Marek Olšák mar...@gmail.com
 Date:   Sat Dec 12 23:44:02 2009 +0100

 r300g: flush CS if a buffer being deleted is referenced by it

 [...]

 diff --git a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c 
 b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
 index 2a8daed..76acc99 100644
 --- a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
 +++ b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
 @@ -131,6 +132,11 @@ static void radeon_buffer_del(struct pipe_buffer 
 *buffer)
  {
      struct radeon_pipe_buffer *radeon_buffer =
          (struct radeon_pipe_buffer*)buffer;
 +    struct radeon_winsys_priv *priv = radeon_buffer-ws-priv;
 +
 +    if (radeon_bo_is_referenced_by_cs(radeon_buffer-bo, priv-cs)) {
 +        priv-cs-space_flush_fn(priv-cs-space_flush_data);
 +    }

 Why would this be necessary?


 --
 Earthling Michel Dänzer           |                http://www.vmware.com
 Libre software enthusiast         |          Debian, X and DRI developer


Oh, it doesn't seem to be needed at all. Feel free to revert this commit.

Marek

--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


[Mesa3d-dev] Fwd: gallium: add blitter

2009-12-15 Thread Marek Olšák
On Tue, Dec 15, 2009 at 10:28 AM, Keith Whitwell kei...@vmware.com wrote:
 On Mon, 2009-12-14 at 16:31 -0800, Marek Olšák wrote:
 On Mon, Dec 14, 2009 at 5:42 PM, Corbin Simpson
 mostawesomed...@gmail.com wrote:
  As far as immediate verts, why don't we just add support to r300g to switch
  to immediate mode for small VBOs?
 
  Posting from a mobile, pardon my terseness. ~ C.
 

 Corbin,

 that seems reasonable, and it's the reason I killed the draw_quad
 function. BTW immediate mode doubles the performance in glxgears.

 Shouldn't gears upload its vertices one time only and then leave them
 resident in VRAM?

 Keith



I meant the clear path with a quad using immediate mode, that made the
difference in comparison with a straightforward VBO path.

Marek

--
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] gallium: add blitter

2009-12-15 Thread Marek Olšák
On Tue, Dec 15, 2009 at 11:27 AM, Keith Whitwell kei...@vmware.com wrote:
 On Tue, 2009-12-15 at 01:49 -0800, Marek Olšák wrote:
 On Tue, Dec 15, 2009 at 10:28 AM, Keith Whitwell kei...@vmware.com wrote:
  On Mon, 2009-12-14 at 16:31 -0800, Marek Olšák wrote:
  On Mon, Dec 14, 2009 at 5:42 PM, Corbin Simpson
  mostawesomed...@gmail.com wrote:
   As far as immediate verts, why don't we just add support to r300g to 
   switch
   to immediate mode for small VBOs?
  
   Posting from a mobile, pardon my terseness. ~ C.
  
 
  Corbin,
 
  that seems reasonable, and it's the reason I killed the draw_quad
  function. BTW immediate mode doubles the performance in glxgears.
 
  Shouldn't gears upload its vertices one time only and then leave them
  resident in VRAM?
 
  Keith
 
 

 I meant the clear path with a quad using immediate mode, that made the
 difference in comparison with a straightforward VBO path.

 OK, understood.

 I'm interested to understand why the VBO path is slow.  Is it the
 allocation of the VBO itself?  Mapping  uploading the vertices?
 Command submission (the extra reloc)?

 It seems to me that none of these should be taking half your time.  In
 fact, it makes me wonder if there wasn't something else going on -- eg.
 was the same buffer getting reused to hold those 4 vertices frame after
 frame, resulting in a sync when the driver tried to map the buffer?

 That could be happening in the state tracker or in the driver, I guess.

 Keith


Yes, the same buffer was getting reused every frame causing sync when
mapping the buffer. However, it will no longer be an issue once
immediate mode gets implemented. Using DONT_WAIT would probably also
help here.

Please, could you possibly look at the patches I sent to you
approximately 16 hours ago? (there are 7 of them)

Marek

--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] gallium: add blitter

2009-12-14 Thread Marek Olšák
On Mon, Dec 14, 2009 at 5:42 PM, Corbin Simpson
mostawesomed...@gmail.com wrote:
 As far as immediate verts, why don't we just add support to r300g to switch
 to immediate mode for small VBOs?

 Posting from a mobile, pardon my terseness. ~ C.


Corbin,

that seems reasonable, and it's the reason I killed the draw_quad
function. BTW immediate mode doubles the performance in glxgears.

To others:
I noticed that there is a weird optimization in u_gen_mipmaps. It
allocates a large vertex buffer and uses small chunks of it to render
consecutive quads (one for each mipmap level and cubemap face). If we
implement switching to immediate mode, it would be nice for VBOs to be
as small as possible so that the driver can easily recognize the most
efficient path. The simplest solution (4 vertices in a VBO) may end up
being the fastest one here.

Marek

--
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


[Mesa3d-dev] gallium: let drivers fallback on framebuffer clearing

2009-12-07 Thread Marek Olšák
Hi,

Because some hardware under some circumstances (e.g. disabled tiling)
may not be able to use a hardware-specific clear path, it would be
nice to let a state tracker do the clearing by drawing a
screen-aligned quad. I am proposing to change the pipe_context-clear
function to return TRUE if buffers were cleared by the driver, and
FALSE if the state tracker should do the clearing by taking a generic
path.

As an example, r300g can use the fast clearing only if colorbuffers
and zbuffers are micro-tiled, otherwise it must draw a screen-aligned
quad and doing it in the driver is really messy.

The attached patch implements this interface change and adapts all
state trackers and drivers.

I noticed that a lot of drivers still use slow util_clear, so they
will greatly benefit from this patch. It's up to their maintainers
whether they enable it, I suspect some unstable drivers may not be
able to draw a quad without visual errors.

Please review.

Best regards
Marek Olšák
From a6d16e7bce330900d496593054ec6aeb3ed51a2f Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Mon, 7 Dec 2009 00:33:17 +0100
Subject: [PATCH] gallium: let drivers fallback on framebuffer clearing

A driver can either clear a framebuffer by itself or can tell the state tracker
to draw a screen-aligned quad if a hardware-specific clear path is not
available.
---
 src/gallium/drivers/cell/ppu/cell_clear.c|4 +++-
 src/gallium/drivers/cell/ppu/cell_clear.h|3 ++-
 src/gallium/drivers/i915/i915_clear.c|3 ++-
 src/gallium/drivers/i915/i915_context.h  |4 ++--
 src/gallium/drivers/identity/id_context.c|   12 ++--
 src/gallium/drivers/llvmpipe/lp_clear.c  |4 +++-
 src/gallium/drivers/llvmpipe/lp_clear.h  |2 +-
 src/gallium/drivers/nv04/nv04_clear.c|   10 ++
 src/gallium/drivers/nv04/nv04_context.h  |4 ++--
 src/gallium/drivers/nv10/nv10_clear.c|3 ++-
 src/gallium/drivers/nv10/nv10_context.h  |2 +-
 src/gallium/drivers/nv20/nv20_clear.c|3 ++-
 src/gallium/drivers/nv20/nv20_context.h  |2 +-
 src/gallium/drivers/nv30/nv30_clear.c|3 ++-
 src/gallium/drivers/nv30/nv30_context.h  |2 +-
 src/gallium/drivers/nv40/nv40_clear.c|3 ++-
 src/gallium/drivers/nv40/nv40_context.h  |2 +-
 src/gallium/drivers/nv50/nv50_clear.c|4 +++-
 src/gallium/drivers/nv50/nv50_context.h  |2 +-
 src/gallium/drivers/r300/r300_clear.c|   11 ++-
 src/gallium/drivers/r300/r300_clear.h|   12 +++-
 src/gallium/drivers/softpipe/sp_clear.c  |5 +++--
 src/gallium/drivers/softpipe/sp_clear.h  |2 +-
 src/gallium/drivers/svga/svga_context.h  |   10 +-
 src/gallium/drivers/svga/svga_pipe_clear.c   |3 ++-
 src/gallium/drivers/trace/tr_context.c   |7 +--
 src/gallium/include/pipe/p_context.h |4 +++-
 src/gallium/state_trackers/vega/api_masks.c  |   11 +++
 src/gallium/state_trackers/vega/vg_context.c |6 +-
 src/gallium/state_trackers/vega/vg_tracker.c |8 ++--
 src/gallium/state_trackers/xorg/xorg_exa.c   |7 +--
 src/mesa/state_tracker/st_cb_clear.c |   12 +---
 32 files changed, 107 insertions(+), 63 deletions(-)

diff --git a/src/gallium/drivers/cell/ppu/cell_clear.c b/src/gallium/drivers/cell/ppu/cell_clear.c
index 79ad687..553d924 100644
--- a/src/gallium/drivers/cell/ppu/cell_clear.c
+++ b/src/gallium/drivers/cell/ppu/cell_clear.c
@@ -48,7 +48,7 @@
 /**
  * Called via pipe-clear()
  */
-void
+boolean
 cell_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
double depth, unsigned stencil)
 {
@@ -89,4 +89,6 @@ cell_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
   clr-surface = surfIndex;
   clr-value = clearValue;
}
+
+   return TRUE;
 }
diff --git a/src/gallium/drivers/cell/ppu/cell_clear.h b/src/gallium/drivers/cell/ppu/cell_clear.h
index 08e091a..9fc3a01 100644
--- a/src/gallium/drivers/cell/ppu/cell_clear.h
+++ b/src/gallium/drivers/cell/ppu/cell_clear.h
@@ -29,11 +29,12 @@
 #ifndef CELL_CLEAR_H
 #define CELL_CLEAR_H
 
+#include pipe/p_compiler.h
 
 struct pipe_context;
 
 
-extern void
+extern boolean
 cell_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
double depth, unsigned stencil);
 
diff --git a/src/gallium/drivers/i915/i915_clear.c b/src/gallium/drivers/i915/i915_clear.c
index 90530f2..21528e5 100644
--- a/src/gallium/drivers/i915/i915_clear.c
+++ b/src/gallium/drivers/i915/i915_clear.c
@@ -39,10 +39,11 @@
  * Clear the given buffers to the specified values.
  * No masking, no scissor (clear entire buffer).
  */
-void
+boolean
 i915_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
 	   double depth, unsigned stencil)
 {
util_clear(pipe, i915_context(pipe)-framebuffer, buffers, rgba, depth

Re: [Mesa3d-dev] st_shader-varients merge tomorrow

2009-11-25 Thread Marek Olšák
Hi Roland,

r300g doesn't use *semantic_index at all and due to this some shaders are
broken on it. Merging the branch probably can't make it worse, so go for it.
I already have fixes for this driver here and I am about to send them soon.

Marek

On Wed, Nov 25, 2009 at 4:47 AM, Roland Scheidegger srol...@vmware.comwrote:

 I'm planning to merge st_shader-varients branch to master tomorrow.

 This should not adversely affect drivers, unless they rely on generics
 inputs/outputs semantic_index always starting at 0 without holes
 (something that they shouldn't do but it would have worked previously).
 Feedback for hw drivers welcome, I'll try i915 myself, but I can't test
 the others, though some quick glance seemed to suggest they should be ok.

 Roland


 --
 Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
 trial. Simplify your report design, integration and deployment - and focus
 on
 what you do best, core application coding. Discover what's new with
 Crystal Reports now.  http://p.sf.net/sfu/bobj-july
 ___
 Mesa3d-dev mailing list
 Mesa3d-dev@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev


Re: [Mesa3d-dev] [PATCH] mesa/st: fix crash when drawing stencil pixels outside the drawbuffer

2009-11-03 Thread Marek Olšák
Hi Brian,

I tried your patch and it solves the buffer-mapping issue.

I attached a new patch that fixes the clipping issue. Please, review/push.

Best regards
Marek Olšák


On Mon, Nov 2, 2009 at 6:12 PM, Brian Paul bri...@vmware.com wrote:

 Marek Olšák wrote:

 Hi,

 the attached patch fixes a possible crash in function draw_stencil_pixels
 in mesa/state_tracker. I've also updated the list of formats we read from to
 prevent an assertion failing later in the code.

 This makes glean/depthStencil work on r300g and softpipe.

 Best regards
 Marek Olšák


 diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c
 b/src/mesa/state_tracker/st_cb_drawpixels.c
 index 0a6bfcd..0699404 100644
 --- a/src/mesa/state_tracker/st_cb_drawpixels.c
 +++ b/src/mesa/state_tracker/st_cb_drawpixels.c
 @@ -669,6 +669,12 @@ draw_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
strb = st_renderbuffer(ctx-DrawBuffer-
   Attachment[BUFFER_STENCIL].Renderbuffer);

 +   /* Do not draw outside the drawbuffer */
 +   if (x + width  ctx-DrawBuffer-Width)
 +  width = ctx-DrawBuffer-Width - x;
 +   if (y + height  ctx-DrawBuffer-Height)
 +  height = ctx-DrawBuffer-Height - y;

 I think you can use _mesa_clip_drawpixels() here instead.  See swrast or
 other drivers for example usage.


 The second change should be a totally separate patch since it's independent
 of the drawpixels clipping issue.


 diff --git a/src/mesa/state_tracker/st_cb_texture.c
 b/src/mesa/state_tracker/st_cb_texture.c
 index 878a40f..6f287ff 100644
 --- a/src/mesa/state_tracker/st_cb_texture.c
 +++ b/src/mesa/state_tracker/st_cb_texture.c
 @@ -1309,7 +1309,8 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum
 target, GLint level,
   srcX, srcY,
   width, height);

 -   if (baseFormat == GL_DEPTH_COMPONENT 
 +   if ((baseFormat == GL_DEPTH_COMPONENT ||
 +baseFormat == GL_DEPTH24_STENCIL8) 
pf_is_depth_and_stencil(stImage-pt-format))
   transfer_usage = PIPE_TRANSFER_READ_WRITE;
else


 I think there's a few things wrong with the depth/stencil path in this
 code.  Can you try the attached patch?

 I also suspec that util_blit_pixels_writemask() isn't working properly when
 blitting depth/stencil pixels.

 -Brian

 diff --git a/src/mesa/state_tracker/st_cb_texture.c
 b/src/mesa/state_tracker/st_cb_texture.c
 index 878a40f..00a0e4c 100644
 --- a/src/mesa/state_tracker/st_cb_texture.c
 +++ b/src/mesa/state_tracker/st_cb_texture.c
 @@ -1309,7 +1309,8 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum
 target, GLint level,
   srcX, srcY,
   width, height);

 -   if (baseFormat == GL_DEPTH_COMPONENT 
 +   if ((baseFormat == GL_DEPTH_COMPONENT ||
 +baseFormat == GL_DEPTH_STENCIL) 
pf_is_depth_and_stencil(stImage-pt-format))
   transfer_usage = PIPE_TRANSFER_READ_WRITE;
else
 @@ -1322,7 +1323,7 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum
 target, GLint level,
   destX, destY, width, height);

if (baseFormat == GL_DEPTH_COMPONENT ||
 -   baseFormat == GL_DEPTH24_STENCIL8) {
 +   baseFormat == GL_DEPTH_STENCIL) {
   const GLboolean scaleOrBias = (ctx-Pixel.DepthScale != 1.0F ||
  ctx-Pixel.DepthBias != 0.0F);
   GLint row, yStep;
 @@ -1455,7 +1456,7 @@ st_copy_texsubimage(GLcontext *ctx,
struct gl_texture_image *texImage =
   _mesa_select_tex_image(ctx, texObj, target, level);
struct st_texture_image *stImage = st_texture_image(texImage);
 -   const GLenum texBaseFormat = texImage-InternalFormat;
 +   const GLenum texBaseFormat = texImage-_BaseFormat;
struct gl_framebuffer *fb = ctx-ReadBuffer;
struct st_renderbuffer *strb;
struct pipe_context *pipe = ctx-st-pipe;
 @@ -1476,12 +1477,9 @@ st_copy_texsubimage(GLcontext *ctx,

/* determine if copying depth or color data */
if (texBaseFormat == GL_DEPTH_COMPONENT ||
 -   texBaseFormat == GL_DEPTH24_STENCIL8) {
 +   texBaseFormat == GL_DEPTH_STENCIL) {
   strb = st_renderbuffer(fb-_DepthBuffer);
}
 -   else if (texBaseFormat == GL_DEPTH_STENCIL_EXT) {
 -  strb = st_renderbuffer(fb-_StencilBuffer);
 -   }
else {
   /* texBaseFormat == GL_RGB, GL_RGBA, GL_ALPHA, etc */
   strb = st_renderbuffer(fb-_ColorReadBuffer);


From 23a8a4fdc2848be822c9884d2b758909287e9a6e Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Tue, 3 Nov 2009 16:16:05 +0100
Subject: [PATCH] mesa/st: clip pixels in draw_stencil_pixels to avoid crash

---
 src/mesa/state_tracker/st_cb_drawpixels.c |   20 +++-
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 0a6bfcd..1d33e81 100644
--- a/src

[Mesa3d-dev] [PATCH] mesa/st: fix crash when drawing stencil pixels outside the drawbuffer

2009-10-31 Thread Marek Olšák
Hi,

the attached patch fixes a possible crash in function draw_stencil_pixels in
mesa/state_tracker. I've also updated the list of formats we read from to
prevent an assertion failing later in the code.

This makes glean/depthStencil work on r300g and softpipe.

Best regards
Marek Olšák
From 2b79c8adc5a92410cdfe4ae8c15880a73f839159 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Marek=20Ol=C5=A1=C3=A1k?= mar...@gmail.com
Date: Sat, 31 Oct 2009 19:38:29 +0100
Subject: [PATCH] mesa/st: fix crash when drawing stencil pixels outside the drawbuffer

Also, add a missing depth-stencil format to the list of formats we want
to read from.
---
 src/mesa/state_tracker/st_cb_drawpixels.c |6 ++
 src/mesa/state_tracker/st_cb_texture.c|3 ++-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 0a6bfcd..0699404 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -669,6 +669,12 @@ draw_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
strb = st_renderbuffer(ctx-DrawBuffer-
   Attachment[BUFFER_STENCIL].Renderbuffer);
 
+   /* Do not draw outside the drawbuffer */
+   if (x + width  ctx-DrawBuffer-Width)
+  width = ctx-DrawBuffer-Width - x;
+   if (y + height  ctx-DrawBuffer-Height)
+  height = ctx-DrawBuffer-Height - y;
+
if (st_fb_orientation(ctx-DrawBuffer) == Y_0_TOP) {
   y = ctx-DrawBuffer-Height - y - height;
}
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 878a40f..6f287ff 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -1309,7 +1309,8 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
 	   srcX, srcY,
 	   width, height);
 
-   if (baseFormat == GL_DEPTH_COMPONENT 
+   if ((baseFormat == GL_DEPTH_COMPONENT ||
+baseFormat == GL_DEPTH24_STENCIL8) 
pf_is_depth_and_stencil(stImage-pt-format))
   transfer_usage = PIPE_TRANSFER_READ_WRITE;
else
-- 
1.6.3.3

--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference___
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev