A method for creating a rendering pipeline for a rendering operation used by an application executing on a target computer system comprising a target Graphics Processing Unit GPU, the method comprising: prior to launch of the application on the target computer system: generating GPU-specific code for operation on the GPU, wherein the GPU-specific code includes a vertex shader and a fragment shader; and compiling the GPU-specific code to generate a compiled programmable state; during execution of the application on the target computer system: assembling a mutable pipeline state descriptor object adapted to set a desired graphic rendering state for the rendering operation, wherein the mutable pipeline state descriptor object includes: a vertex state associated with the vertex shader; a fragment state associated with the fragment shader; and a rasterization state; compiling the vertex state, the fragment state, and the rasterization state to generate a compiled graphics rendering state; creating an immutable pipeline state object containing the compiled programmable state and the compiled graphics rendering state, wherein the compiled programmable state encapsulates executable instructions for the GPU and the compiled graphics rendering state externalizes mutable attributes requiring re-compilation when changed; constructing a render command encoder for the rendering operation; and associating the immutable pipeline state object with the render command encoder. prior to launch of the application on the target computer system: generating GPU-specific code for operation on the GPU, wherein the GPU-specific code includes a vertex shader and a fragment shader; and compiling the GPU-specific code to generate a compiled programmable state; generating GPU-specific code for operation on the GPU, wherein the GPU-specific code includes a vertex shader and a fragment shader; and compiling the GPU-specific code to generate a compiled programmable state; during execution of the application on the target computer system: assembling a mutable pipeline state descriptor object adapted to set a desired graphic rendering state for the rendering operation, wherein the mutable pipeline state descriptor object includes: a vertex state associated with the vertex shader; a fragment state associated with the fragment shader; and a rasterization state; compiling the vertex state, the fragment state, and the rasterization state to generate a compiled graphics rendering state; creating an immutable pipeline state object containing the compiled programmable state and the compiled graphics rendering state, wherein the compiled programmable state encapsulates executable instructions for the GPU and the compiled graphics rendering state externalizes mutable attributes requiring re-compilation when changed; constructing a render command encoder for the rendering operation; and associating the immutable pipeline state object with the render command encoder. assembling a mutable pipeline state descriptor object adapted to set a desired graphic rendering state for the rendering operation, wherein the mutable pipeline state descriptor object includes: a vertex state associated with the vertex shader; a fragment state associated with the fragment shader; and a rasterization state; a vertex state associated with the vertex shader; a fragment state associated with the fragment shader; and a rasterization state; compiling the vertex state, the fragment state, and the rasterization state to generate a compiled graphics rendering state; creating an immutable pipeline state object containing the compiled programmable state and the compiled graphics rendering state, wherein the compiled programmable state encapsulates executable instructions for the GPU and the compiled graphics rendering state externalizes mutable attributes requiring re-compilation when changed; constructing a render command encoder for the rendering operation; and associating the immutable pipeline state object with the render command encoder.