mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 10:20:09 +01:00
Revert "llvmpipe: increase number of subpixel bits to eight"
This reverts commit 755c11dc5e.
We agreed that this is band-aid that's not very useful and
the proper solution is to rewrite the rasterization algo
so that it operates on 64 bit values.
Signed-off-by: Zack Rusin <zackr@vmware.com>
This commit is contained in:
parent
49f8fc64de
commit
71ecc2cf71
3 changed files with 11 additions and 17 deletions
|
|
@ -46,20 +46,10 @@ struct lp_scene;
|
|||
struct lp_fence;
|
||||
struct cmd_bin;
|
||||
|
||||
#define FIXED_TYPE_WIDTH 32
|
||||
/** For sub-pixel positioning */
|
||||
#define FIXED_ORDER 8
|
||||
#define FIXED_ORDER 4
|
||||
#define FIXED_ONE (1<<FIXED_ORDER)
|
||||
|
||||
/** Maximum length of an edge in a primitive in pixels.
|
||||
* If the framebuffer is large we have to think about fixed-point
|
||||
* integer overflow. Coordinates need ((FIXED_TYPE_WIDTH/2) - 1) bits
|
||||
* to be able to fit product of two such coordinates inside
|
||||
* FIXED_TYPE_WIDTH, any larger and we could overflow a
|
||||
* FIXED_TYPE_WIDTH_-bit int.
|
||||
*/
|
||||
#define MAX_FIXED_LENGTH (1 << (((FIXED_TYPE_WIDTH/2) - 1) - FIXED_ORDER))
|
||||
|
||||
/* Rasterizer output size going to jit fs, width/height */
|
||||
#define LP_RASTER_BLOCK_SIZE 4
|
||||
|
||||
|
|
|
|||
|
|
@ -1007,12 +1007,16 @@ try_update_scene_state( struct lp_setup_context *setup )
|
|||
&setup->draw_regions[i]);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Check if subdivision of triangles is needed if the framebuffer
|
||||
* is larger than our MAX_FIXED_LENGTH can accomodate.
|
||||
/* If the framebuffer is large we have to think about fixed-point
|
||||
* integer overflow. For 2K by 2K images, coordinates need 15 bits
|
||||
* (2^11 + 4 subpixel bits). The product of two such numbers would
|
||||
* use 30 bits. Any larger and we could overflow a 32-bit int.
|
||||
*
|
||||
* To cope with this problem we check if triangles are large and
|
||||
* subdivide them if needed.
|
||||
*/
|
||||
setup->subdivide_large_triangles = (setup->fb.width > MAX_FIXED_LENGTH &&
|
||||
setup->fb.height > MAX_FIXED_LENGTH);
|
||||
setup->subdivide_large_triangles = (setup->fb.width > 2048 &&
|
||||
setup->fb.height > 2048);
|
||||
}
|
||||
|
||||
setup->dirty = 0;
|
||||
|
|
|
|||
|
|
@ -995,7 +995,7 @@ check_subdivide_triangle(struct lp_setup_context *setup,
|
|||
const float (*v2)[4],
|
||||
triangle_func_t tri)
|
||||
{
|
||||
const float maxLen = MAX_FIXED_LENGTH; /* longest permissible edge, in pixels */
|
||||
const float maxLen = 2048.0f; /* longest permissible edge, in pixels */
|
||||
float dx10, dy10, len10;
|
||||
float dx21, dy21, len21;
|
||||
float dx02, dy02, len02;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue