Re: [Mesa-dev] [PATCH 1/3] llvmpipe: tweak CMD_BLOCK_MAX and LP_SCENE_MAX_SIZE

2013-03-06 Thread Jose Fonseca
Looks good. Thanks for fine tuning these parameters!

Jose

- Original Message -
 We advertise a max texture/surfaces size of 8K x 8K but the old values
 for these limits didn't actually allow us to handle that surface size.
 
 For 8K x 8K we'll have 16384 bins.  Each bin needs at least one cmd_block
 object which was 2192 bytes in size.  Since 16384 * 2192 exceeded
 LP_SCENE_MAX_SIZE we'd silently fail in lp_scene_new_data_block() and not
 draw the complete scene.
 
 By reducing CMD_BLOCK_MAX to 29 we get nice 512-byte cmd_blocks.  And
 by increasing LP_SCENE_MAX_SIZE to 9 MB we can allocate enough command
 blocks for 8K x 8K, plus a few regular data blocks.
 
 Fixes the (improved) piglit fbo-maxsize test.
 
 Note: This is a candidate for the stable branches.
 ---
  src/gallium/drivers/llvmpipe/lp_scene.h |   10 --
  1 files changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/src/gallium/drivers/llvmpipe/lp_scene.h
 b/src/gallium/drivers/llvmpipe/lp_scene.h
 index b1db61b..801829d 100644
 --- a/src/gallium/drivers/llvmpipe/lp_scene.h
 +++ b/src/gallium/drivers/llvmpipe/lp_scene.h
 @@ -49,12 +49,18 @@ struct lp_rast_state;
  #define TILES_Y (LP_MAX_HEIGHT / TILE_SIZE)
  
  
 -#define CMD_BLOCK_MAX 128
 +/* Commands per command block (ideally so sizeof(cmd_block) is a power of
 + * two in size.)
 + */
 +#define CMD_BLOCK_MAX 29
 +
 +/* Bytes per data block.
 + */
  #define DATA_BLOCK_SIZE (64 * 1024)
  
  /* Scene temporary storage is clamped to this size:
   */
 -#define LP_SCENE_MAX_SIZE (4*1024*1024)
 +#define LP_SCENE_MAX_SIZE (9*1024*1024)
  
  /* The maximum amount of texture storage referenced by a scene is
   * clamped ot this size:
 --
 1.7.3.4
 
 ___
 mesa-dev mailing list
 mesa-dev@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/mesa-dev
 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 1/3] llvmpipe: tweak CMD_BLOCK_MAX and LP_SCENE_MAX_SIZE

2013-03-04 Thread Brian Paul
We advertise a max texture/surfaces size of 8K x 8K but the old values
for these limits didn't actually allow us to handle that surface size.

For 8K x 8K we'll have 16384 bins.  Each bin needs at least one cmd_block
object which was 2192 bytes in size.  Since 16384 * 2192 exceeded
LP_SCENE_MAX_SIZE we'd silently fail in lp_scene_new_data_block() and not
draw the complete scene.

By reducing CMD_BLOCK_MAX to 29 we get nice 512-byte cmd_blocks.  And
by increasing LP_SCENE_MAX_SIZE to 9 MB we can allocate enough command
blocks for 8K x 8K, plus a few regular data blocks.

Fixes the (improved) piglit fbo-maxsize test.

Note: This is a candidate for the stable branches.
---
 src/gallium/drivers/llvmpipe/lp_scene.h |   10 --
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_scene.h 
b/src/gallium/drivers/llvmpipe/lp_scene.h
index b1db61b..801829d 100644
--- a/src/gallium/drivers/llvmpipe/lp_scene.h
+++ b/src/gallium/drivers/llvmpipe/lp_scene.h
@@ -49,12 +49,18 @@ struct lp_rast_state;
 #define TILES_Y (LP_MAX_HEIGHT / TILE_SIZE)
 
 
-#define CMD_BLOCK_MAX 128
+/* Commands per command block (ideally so sizeof(cmd_block) is a power of
+ * two in size.)
+ */
+#define CMD_BLOCK_MAX 29
+
+/* Bytes per data block.
+ */
 #define DATA_BLOCK_SIZE (64 * 1024)
 
 /* Scene temporary storage is clamped to this size:
  */
-#define LP_SCENE_MAX_SIZE (4*1024*1024)
+#define LP_SCENE_MAX_SIZE (9*1024*1024)
 
 /* The maximum amount of texture storage referenced by a scene is
  * clamped ot this size:
-- 
1.7.3.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev