nv40: stronger type safety
authorBen Skeggs <skeggsb@gmail.com>
Wed, 16 Jan 2008 02:41:50 +0000 (13:41 +1100)
committerBen Skeggs <skeggsb@gmail.com>
Wed, 16 Jan 2008 02:45:31 +0000 (13:45 +1100)
src/mesa/pipe/nv40/nv40_context.c
src/mesa/pipe/nv40/nv40_context.h
src/mesa/pipe/nv40/nv40_query.c
src/mesa/pipe/nv40/nv40_state.c
src/mesa/pipe/nv40/nv40_surface.c
src/mesa/pipe/nv40/nv40_vbo.c

index 334e50ef892c08ace0fc9f76273e1b1111fc8dfb..f6fdd6b4376a45070b8bac26aee4bef19c93c242 100644 (file)
@@ -8,7 +8,7 @@
 static const char *
 nv40_get_name(struct pipe_context *pipe)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        static char buffer[128];
 
        snprintf(buffer, sizeof(buffer), "NV%02X", nv40->chipset);
@@ -80,7 +80,7 @@ nv40_get_paramf(struct pipe_context *pipe, int param)
 static void
 nv40_flush(struct pipe_context *pipe, unsigned flags)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nouveau_winsys *nvws = nv40->nvws;
        
        if (flags & PIPE_FLUSH_TEXTURE_CACHE) {
@@ -107,7 +107,7 @@ nv40_flush(struct pipe_context *pipe, unsigned flags)
 static void
 nv40_destroy(struct pipe_context *pipe)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nouveau_winsys *nvws = nv40->nvws;
 
        if (nv40->draw)
index 86aebbb927a28af6e1b85498b6a3a4866e3ee464..b505efab54e82788e2ccaa889df31ea84d72de2b 100644 (file)
@@ -82,7 +82,12 @@ struct nv40_context {
        struct pipe_vertex_buffer  vtxbuf[PIPE_ATTRIB_MAX];
        struct pipe_vertex_element vtxelt[PIPE_ATTRIB_MAX];
 };
-#define nv40_context(ctx) ((struct nv40_context *)(ctx))
+
+static inline struct nv40_context *
+nv40_context(struct pipe_context *pipe)
+{
+       return (struct nv40_context *)pipe;
+}
 
 extern void nv40_init_state_functions(struct nv40_context *nv40);
 extern void nv40_init_surface_functions(struct nv40_context *nv40);
index ea30d3ede844e75a399e84a145ac745de2c1af46..06f41fe84f7cdeb58e341519560eeb32cc3bb9e5 100644 (file)
@@ -8,7 +8,12 @@ struct nv40_query {
        boolean ready;
        uint64_t result;
 };
-#define nv40_query(o) ((struct nv40_query *)(o))
+
+static inline struct nv40_query *
+nv40_query(struct pipe_query *pipe)
+{
+       return (struct nv40_query *)pipe;
+}
 
 static struct pipe_query *
 nv40_query_create(struct pipe_context *pipe, unsigned query_type)
@@ -55,7 +60,7 @@ nv40_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
 static void
 nv40_query_end(struct pipe_context *pipe, struct pipe_query *pq)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_query *q = nv40_query(pq);
 
        BEGIN_RING(curie, NV40TCL_QUERY_GET, 1);
@@ -66,9 +71,9 @@ nv40_query_end(struct pipe_context *pipe, struct pipe_query *pq)
 
 static boolean
 nv40_query_result(struct pipe_context *pipe, struct pipe_query *pq,
-                 boolean wait, uint64_t *result)
+                 boolean wait, uint64 *result)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_query *q = nv40_query(pq);
        struct nouveau_winsys *nvws = nv40->nvws;
 
index 41de5650aa83b28be82b7d89fa3c97509c0d4137..03a9e735c07d99db966595f8cd9fbfbc250fda16 100644 (file)
@@ -37,7 +37,7 @@ nv40_blend_state_create(struct pipe_context *pipe,
 static void
 nv40_blend_state_bind(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_blend_state *cb = hwcso;
 
        BEGIN_RING(curie, NV40TCL_DITHER_ENABLE, 1);
@@ -234,7 +234,7 @@ static void
 nv40_sampler_state_bind(struct pipe_context *pipe, unsigned unit,
                        void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_sampler_state *ps = hwcso;
 
        nv40->tex_sampler[unit] = ps;
@@ -251,7 +251,7 @@ static void
 nv40_set_sampler_texture(struct pipe_context *pipe, unsigned unit,
                         struct pipe_texture *miptree)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        nv40->tex_miptree[unit] = (struct nv40_miptree *)miptree;
        nv40->dirty_samplers |= (1 << unit);
@@ -339,7 +339,7 @@ nv40_rasterizer_state_create(struct pipe_context *pipe,
 static void
 nv40_rasterizer_state_bind(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_rasterizer_state *rs = hwcso;
 
        BEGIN_RING(curie, NV40TCL_SHADE_MODEL, 1);
@@ -415,7 +415,7 @@ nv40_depth_stencil_alpha_state_create(struct pipe_context *pipe,
 static void
 nv40_depth_stencil_alpha_state_bind(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_depth_stencil_alpha_state *hw = hwcso;
 
        BEGIN_RING(curie, NV40TCL_DEPTH_FUNC, 3);
@@ -448,7 +448,7 @@ nv40_vp_state_create(struct pipe_context *pipe,
 static void
 nv40_vp_state_bind(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_vertex_program *vp = hwcso;
 
        nv40->vertprog.current = vp;
@@ -458,7 +458,7 @@ nv40_vp_state_bind(struct pipe_context *pipe, void *hwcso)
 static void
 nv40_vp_state_delete(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_vertex_program *vp = hwcso;
 
        nv40_vertprog_destroy(nv40, vp);
@@ -480,7 +480,7 @@ nv40_fp_state_create(struct pipe_context *pipe,
 static void
 nv40_fp_state_bind(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_fragment_program *fp = hwcso;
 
        nv40->fragprog.current = fp;
@@ -490,7 +490,7 @@ nv40_fp_state_bind(struct pipe_context *pipe, void *hwcso)
 static void
 nv40_fp_state_delete(struct pipe_context *pipe, void *hwcso)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_fragment_program *fp = hwcso;
 
        nv40_fragprog_destroy(nv40, fp);
@@ -501,7 +501,7 @@ static void
 nv40_set_blend_color(struct pipe_context *pipe,
                     const struct pipe_blend_color *bcol)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        BEGIN_RING(curie, NV40TCL_BLEND_COLOR, 1);
        OUT_RING  ((float_to_ubyte(bcol->color[3]) << 24) |
@@ -520,7 +520,7 @@ static void
 nv40_set_constant_buffer(struct pipe_context *pipe, uint shader, uint index,
                         const struct pipe_constant_buffer *buf )
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        if (shader == PIPE_SHADER_VERTEX) {
                nv40->vertprog.constant_buf = buf->buffer;
@@ -536,7 +536,7 @@ static void
 nv40_set_framebuffer_state(struct pipe_context *pipe,
                           const struct pipe_framebuffer_state *fb)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct pipe_surface *rt[4], *zeta;
        uint32_t rt_enable, rt_format, w, h;
        int i, colour_format = 0, zeta_format = 0;
@@ -669,7 +669,7 @@ static void
 nv40_set_polygon_stipple(struct pipe_context *pipe,
                         const struct pipe_poly_stipple *stipple)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        BEGIN_RING(curie, NV40TCL_POLYGON_STIPPLE_PATTERN(0), 32);
        OUT_RINGp ((uint32_t *)stipple->stipple, 32);
@@ -679,7 +679,7 @@ static void
 nv40_set_scissor_state(struct pipe_context *pipe,
                       const struct pipe_scissor_state *s)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        BEGIN_RING(curie, NV40TCL_SCISSOR_HORIZ, 2);
        OUT_RING  (((s->maxx - s->minx) << 16) | s->minx);
@@ -690,7 +690,7 @@ static void
 nv40_set_viewport_state(struct pipe_context *pipe,
                        const struct pipe_viewport_state *vpt)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        BEGIN_RING(curie, NV40TCL_VIEWPORT_TRANSLATE_X, 8);
        OUT_RINGf (vpt->translate[0]);
@@ -707,7 +707,7 @@ static void
 nv40_set_vertex_buffer(struct pipe_context *pipe, unsigned index,
                       const struct pipe_vertex_buffer *vb)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        nv40->vtxbuf[index] = *vb;
 
@@ -718,7 +718,7 @@ static void
 nv40_set_vertex_element(struct pipe_context *pipe, unsigned index,
                        const struct pipe_vertex_element *ve)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
 
        nv40->vtxelt[index] = *ve;
 
index 91ac9e3694865b1feff543f8469a6bda9a633b27..159837388f3cd045609483a667e215c416687298 100644 (file)
@@ -109,7 +109,7 @@ nv40_surface_data(struct pipe_context *pipe, struct pipe_surface *dest,
                  unsigned src_stride, unsigned srcx, unsigned srcy,
                  unsigned width, unsigned height)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nouveau_winsys *nvws = nv40->nvws;
 
        nvws->surface_data(nvws, dest, destx, desty, src, src_stride,
@@ -121,7 +121,7 @@ nv40_surface_copy(struct pipe_context *pipe, struct pipe_surface *dest,
                  unsigned destx, unsigned desty, struct pipe_surface *src,
                  unsigned srcx, unsigned srcy, unsigned width, unsigned height)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nouveau_winsys *nvws = nv40->nvws;
 
        nvws->surface_copy(nvws, dest, destx, desty, src, srcx, srcy,
@@ -133,7 +133,7 @@ nv40_surface_fill(struct pipe_context *pipe, struct pipe_surface *dest,
                  unsigned destx, unsigned desty, unsigned width,
                  unsigned height, unsigned value)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct nouveau_winsys *nvws = nv40->nvws;
 
        nvws->surface_fill(nvws, dest, destx, desty, width, height, value);
index 7cf089e007aae46453a688511af26afa2270c6a2..3de87ecab5e93c95be368a034e4be2b2df9d8ea8 100644 (file)
@@ -192,7 +192,7 @@ boolean
 nv40_draw_arrays(struct pipe_context *pipe, unsigned mode, unsigned start,
                 unsigned count)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        unsigned nr;
 
        assert(nv40_vbo_validate_state(nv40, NULL, 0));
@@ -300,7 +300,7 @@ nv40_draw_elements_inline(struct pipe_context *pipe,
                          struct pipe_buffer_handle *ib, unsigned ib_size,
                          unsigned mode, unsigned start, unsigned count)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        struct pipe_winsys *ws = pipe->winsys;
        void *map;
 
@@ -341,7 +341,7 @@ nv40_draw_elements_vbo(struct pipe_context *pipe,
                       struct pipe_buffer_handle *ib, unsigned ib_size,
                       unsigned mode, unsigned start, unsigned count)
 {
-       struct nv40_context *nv40 = (struct nv40_context *)pipe;
+       struct nv40_context *nv40 = nv40_context(pipe);
        unsigned nr, type;
 
        switch (ib_size) {