mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
nv50,nvc0: implement half_pixel_center
LAST_LINE_PIXEL has actually been renamed to PIXEL_CENTER_INTEGER in
rnndb; use that method to implement the rasterizer setting, used for
st/nine.
Signed-off-by: Tiziano Bacocco <tizbac2@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.4" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 609c3e51f5)
This commit is contained in:
parent
1f42230fa7
commit
aafd13027a
8 changed files with 11 additions and 14 deletions
|
|
@ -1708,7 +1708,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define NV50_3D_CULL_FACE_BACK 0x00000405
|
||||
#define NV50_3D_CULL_FACE_FRONT_AND_BACK 0x00000408
|
||||
|
||||
#define NV50_3D_LINE_LAST_PIXEL 0x00001924
|
||||
#define NV50_3D_PIXEL_CENTER_INTEGER 0x00001924
|
||||
|
||||
#define NVA3_3D_FP_MULTISAMPLE 0x00001928
|
||||
#define NVA3_3D_FP_MULTISAMPLE_EXPORT_SAMPLE_MASK 0x00000001
|
||||
|
|
|
|||
|
|
@ -461,8 +461,6 @@ nv50_screen_init_hwctx(struct nv50_screen *screen)
|
|||
PUSH_DATA (push, 0);
|
||||
BEGIN_NV04(push, NV50_3D(PRIM_RESTART_WITH_DRAW_ARRAYS), 1);
|
||||
PUSH_DATA (push, 1);
|
||||
BEGIN_NV04(push, NV50_3D(LINE_LAST_PIXEL), 1);
|
||||
PUSH_DATA (push, 0);
|
||||
BEGIN_NV04(push, NV50_3D(BLEND_SEPARATE_ALPHA), 1);
|
||||
PUSH_DATA (push, 1);
|
||||
|
||||
|
|
|
|||
|
|
@ -57,10 +57,6 @@
|
|||
* ! pipe_rasterizer_state.flatshade_first also applies to QUADS
|
||||
* (There's a GL query for that, forcing an exception is just ridiculous.)
|
||||
*
|
||||
* ! pipe_rasterizer_state.half_pixel_center is ignored - pixel centers
|
||||
* are always at half integer coordinates and the top-left rule applies
|
||||
* (There does not seem to be a hardware switch for this.)
|
||||
*
|
||||
* ! pipe_rasterizer_state.sprite_coord_enable is masked with 0xff on NVC0
|
||||
* (The hardware only has 8 slots meant for TexCoord and we have to assign
|
||||
* in advance to maintain elegant separate shader objects.)
|
||||
|
|
@ -221,7 +217,7 @@ nv50_blend_state_delete(struct pipe_context *pipe, void *hwcso)
|
|||
FREE(hwcso);
|
||||
}
|
||||
|
||||
/* NOTE: ignoring line_last_pixel, using FALSE (set on screen init) */
|
||||
/* NOTE: ignoring line_last_pixel */
|
||||
static void *
|
||||
nv50_rasterizer_state_create(struct pipe_context *pipe,
|
||||
const struct pipe_rasterizer_state *cso)
|
||||
|
|
@ -336,6 +332,9 @@ nv50_rasterizer_state_create(struct pipe_context *pipe,
|
|||
SB_BEGIN_3D(so, DEPTH_CLIP_NEGATIVE_Z, 1);
|
||||
SB_DATA (so, cso->clip_halfz);
|
||||
|
||||
SB_BEGIN_3D(so, PIXEL_CENTER_INTEGER, 1);
|
||||
SB_DATA (so, !cso->half_pixel_center);
|
||||
|
||||
assert(so->size <= (sizeof(so->state) / sizeof(so->state[0])));
|
||||
return (void *)so;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ struct nv50_blend_stateobj {
|
|||
struct nv50_rasterizer_stateobj {
|
||||
struct pipe_rasterizer_state pipe;
|
||||
int size;
|
||||
uint32_t state[48];
|
||||
uint32_t state[49];
|
||||
};
|
||||
|
||||
struct nv50_zsa_stateobj {
|
||||
|
|
|
|||
|
|
@ -1041,7 +1041,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define NVC0_3D_CULL_FACE_BACK 0x00000405
|
||||
#define NVC0_3D_CULL_FACE_FRONT_AND_BACK 0x00000408
|
||||
|
||||
#define NVC0_3D_LINE_LAST_PIXEL 0x00001924
|
||||
#define NVC0_3D_PIXEL_CENTER_INTEGER 0x00001924
|
||||
|
||||
#define NVC0_3D_VIEWPORT_TRANSFORM_EN 0x0000192c
|
||||
|
||||
|
|
|
|||
|
|
@ -786,8 +786,6 @@ nvc0_screen_create(struct nouveau_device *dev)
|
|||
PUSH_DATA (push, 0);
|
||||
BEGIN_NVC0(push, NVC0_3D(LINE_WIDTH_SEPARATE), 1);
|
||||
PUSH_DATA (push, 1);
|
||||
BEGIN_NVC0(push, NVC0_3D(LINE_LAST_PIXEL), 1);
|
||||
PUSH_DATA (push, 0);
|
||||
BEGIN_NVC0(push, NVC0_3D(PRIM_RESTART_WITH_DRAW_ARRAYS), 1);
|
||||
PUSH_DATA (push, 1);
|
||||
BEGIN_NVC0(push, NVC0_3D(BLEND_SEPARATE_ALPHA), 1);
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ nvc0_blend_state_delete(struct pipe_context *pipe, void *hwcso)
|
|||
FREE(hwcso);
|
||||
}
|
||||
|
||||
/* NOTE: ignoring line_last_pixel, using FALSE (set on screen init) */
|
||||
/* NOTE: ignoring line_last_pixel */
|
||||
static void *
|
||||
nvc0_rasterizer_state_create(struct pipe_context *pipe,
|
||||
const struct pipe_rasterizer_state *cso)
|
||||
|
|
@ -315,6 +315,8 @@ nvc0_rasterizer_state_create(struct pipe_context *pipe,
|
|||
|
||||
SB_IMMED_3D(so, DEPTH_CLIP_NEGATIVE_Z, cso->clip_halfz);
|
||||
|
||||
SB_IMMED_3D(so, PIXEL_CENTER_INTEGER, !cso->half_pixel_center);
|
||||
|
||||
assert(so->size <= (sizeof(so->state) / sizeof(so->state[0])));
|
||||
return (void *)so;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ struct nvc0_blend_stateobj {
|
|||
struct nvc0_rasterizer_stateobj {
|
||||
struct pipe_rasterizer_state pipe;
|
||||
int size;
|
||||
uint32_t state[43];
|
||||
uint32_t state[44];
|
||||
};
|
||||
|
||||
struct nvc0_zsa_stateobj {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue